Blame view

src/main/java/com/huaheng/api/sap/service/ZarApiService.java 6.21 KB
1
2
3
4
package com.huaheng.api.sap.service;

import com.huaheng.api.sap.domain.ZarDomain;
周鸿 authored
5
import com.huaheng.api.wcs.service.taskCancel.TaskCancelService;
6
import com.huaheng.common.constant.QuantityConstant;
7
import com.huaheng.common.exception.service.ServiceException;
周鸿 authored
8
import com.huaheng.common.support.Convert;
9
import com.huaheng.common.utils.StringUtils;
周鸿 authored
10
import com.huaheng.common.utils.ZoneAreaUtils;
11
12
import com.huaheng.framework.web.domain.AjaxResult;
13
14
import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
15
16
17
18
import com.huaheng.pc.sap.domain.Zarsh;
import com.huaheng.pc.sap.domain.Zarsi;
import com.huaheng.pc.sap.service.BackSapStatusService;
import com.huaheng.pc.sap.service.ZarshService;
周鸿 authored
19
import com.huaheng.pc.sap.service.ZarsiService;
20
21
import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader;
import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
周鸿 authored
22
import com.huaheng.pc.task.taskDetail.domain.TaskDetail;
23
24
25
import com.huaheng.pc.task.taskDetail.service.TaskDetailService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
26
27
28
29
30
31
32
33
34
35
36
37
38
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;


@Component
@Transactional
public class ZarApiService {
    @Resource
    private ZarshService zarshService;
    @Resource
周鸿 authored
39
40
    private ZarsiService zarsiService;
    @Resource
41
    private BackSapStatusService backSapStatusService;
42
43
44
45
46
47
48
49
    @Resource
    private ReceiptHeaderService receiptHeaderService;
    @Resource
    private ShipmentHeaderService shipmentHeaderService;
    @Resource
    private TaskHeaderService taskHeaderService;
    @Resource
    private TaskDetailService taskDetailService;
周鸿 authored
50
51
    @Resource
    private TaskCancelService taskCancelService;
52
53
54
55
56
57
58
59
60
61
62
63
64

    /**
     *
     * @param zarDomain 入库出库单
     */
    public AjaxResult saveSapData(ZarDomain zarDomain) {
        if(StringUtils.isNull(zarDomain)){
            throw new ServiceException("参数为空");
        }
        List<Zarsi> zarsiList = zarDomain.getZarsiList();
        Zarsh zarsh=zarDomain.getZarsh();
        if(zarsiList==null||zarsiList.size()==0){
65
//            throw new ServiceException("zarsiList参数为空");
66
67
68
69
70
71
72
        }
        if(zarsh==null){
            throw new ServiceException("zarsh参数为空");
        }
        if(StringUtils.isEmpty(zarsh.getUniqueId())){
            throw new ServiceException("唯一号uniqueId参数为空");
        }
73
74
75
76
77
78
79
80
        Zarsh zarsh1=zarshService.checkZarshByUniqueId(zarsh.getUniqueId());
        if(StringUtils.isNotEmpty(zarsh.getCFlag())&&zarsh.getCFlag().equals("D")){
            //取消
            return cancelTaskBySap(zarsh);
        }
        if(zarsh1!=null){
            throw new ServiceException("单据已存在,请不要重复下发");
        }
周鸿 authored
81
82
83
        if(!zarshService.save(zarsh)){
            throw new ServiceException("保存主表数据失败");
        }
84
        if(!zarsiService.saveBatchs(zarsiList,zarsh)){
周鸿 authored
85
86
            throw new ServiceException("保存子表数据失败");
        }
87
88
89
90
91
92
93
94
95
        AjaxResult ajaxResult= zarshService.saveSapDataByApi(zarDomain);
        if(ajaxResult==null||ajaxResult.hasErr()){
            String msg=ajaxResult.getMsg();
            //调用sap的api,传递任务状态
            backSapStatusService.saveBackSapStatus(zarsh.getUniqueId(), zarsh.getLgnum(), null, 1, "C", null,msg);
        }
        return ajaxResult;
    }
96
97
98
99
100
101
102
103
104
105
106
    /**
     * 上游系统取消任务,入库已组盘不能取消;出库已下发任务不能取消
     * @param zarsh
     */
    public AjaxResult cancelTaskBySap(Zarsh zarsh){
        Integer mflag=zarsh.getMFlag();
        String uniqueId=zarsh.getUniqueId();
        Zarsh zarsh1=zarshService.checkZarshByUniqueId(zarsh.getUniqueId());
        if(zarsh1!=null){
            throw new ServiceException("找不到该任务,"+uniqueId);
        }
周鸿 authored
107
        AjaxResult ajaxResult=null;
108
109
110
111
112
113
114
115
116
117
        switch (mflag){
            case 2:
            case 8:
                ReceiptHeader receiptHeader=receiptHeaderService.getReceiptByReferCode(uniqueId);
                if(receiptHeader==null){
                    throw new ServiceException("找不到该任务,"+uniqueId);
                }
                if(receiptHeader.getFirstStatus()> QuantityConstant.RECEIPT_HEADER_RECEIVING){
                    throw new ServiceException("任务已经在执行,不能取消");
                }
周鸿 authored
118
                ajaxResult=receiptHeaderService.removeById(receiptHeader.getId().toString());
119
120
121
                break;
            case 1:
            case 3:
周鸿 authored
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
                //取消任务
                List<TaskDetail> list=taskHeaderService.getTaskByUnique(uniqueId);
                String ids="";
                for (TaskDetail detail:list){
                    Integer taskId=detail.getTaskId();
                    TaskHeader taskHeader = taskHeaderService.getById(taskId);
                    if(taskHeader.getStatus().intValue()  <= QuantityConstant.TASK_STATUS_BUILD) {
                        continue;
                    }
                    String containerCode = taskHeader.getContainerCode();
                    if (StringUtils.isEmpty(containerCode)) {
                        return AjaxResult.error("空托盘");
                    }
                    //获取任务库区,调用该库区wcs
                    Integer area= ZoneAreaUtils.getAreaByZoneCode(taskHeader.getZoneCode());
                    AjaxResult ajaxResult1 = taskCancelService.cancelTask(String.valueOf(taskId),
                            taskHeader.getWarehouseCode(), area.toString());
                    if (ajaxResult1.hasErr()) {
                        return ajaxResult1;
                    }
                    ids=taskId+",";
                }
                ajaxResult=taskHeaderService.cancelTask(Convert.toIntArray(ids));
145
146
147
148
149
                break;
            default:
                break;

        }
周鸿 authored
150
151
152
        if(ajaxResult==null||ajaxResult.hasErr()){
            return ajaxResult;
        }
153
154
155
        //更新zarsh表
        zarsh1.setCFlag("D");
        zarshService.updateById(zarsh1);
周鸿 authored
156
        return ajaxResult;
157
    }
158
159

}