Blame view

src/main/java/com/huaheng/api/wcs/controller/WaiguanShipmentController.java 7 KB
周鸿 authored
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package com.huaheng.api.wcs.controller;

import java.text.SimpleDateFormat;
import java.util.List;
import java.util.stream.Collectors;

import javax.annotation.Resource;

import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import com.alibaba.fastjson.JSONException;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.wcs.domain.WaiguanShipmentDomain;
import com.huaheng.api.wcs.service.WaiguanShipmentService;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.exception.service.ServiceException;
19
import com.huaheng.common.utils.StringUtils;
周鸿 authored
20
21
22
23
24
25
26
27
28
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
import com.huaheng.framework.aspectj.lang.annotation.Log;
import com.huaheng.framework.aspectj.lang.constant.BusinessType;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.mobile.receipt.ReceiptBill;
import com.huaheng.pc.config.container.domain.Container;
import com.huaheng.pc.config.container.service.ContainerService;
29
30
import com.huaheng.pc.config.zone.domain.Zone;
import com.huaheng.pc.config.zone.service.ZoneService;
周鸿 authored
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerView;
import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService;
import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;

import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

/**
 * 重入处理接口
 * wcswms传递数据
 * @author ricard
 * @date   2019/10/11
 */

@RestController
@RequestMapping("/API/WMS/v2")
public class WaiguanShipmentController extends BaseController {

    @Resource
    private WaiguanShipmentService waiguanShipmentService;
    @Resource
    private ContainerService containerService;
    @Resource
    private TaskHeaderService taskHeaderService;

    @Resource
    private ReceiptContainerHeaderService receiptContainerHeaderService;
    @Resource
    private ReceiptHeaderService receiptHeaderService;
    @Resource
    private ReceiptDetailService receiptDetailService;
66
67
    @Resource
    private ZoneService zoneService;
周鸿 authored
68
69
70
71
72
73
74
75
76
77

    /**
     * 外观仓通过托盘请求出库信息
     * @param
     * @return
     */
    @Log(title = "wcs外观仓通过托盘请求出库信息", action = BusinessType.INSERT)
    @PostMapping("/getTaskByContainerCode")
    @ApiOperation("wcs外观仓通过托盘请求出库信息")
    @ResponseBody
78
    @ApiLogger(apiName = "wcs外观仓通过托盘请求出库信息", from = "WCS")
周鸿 authored
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
    public AjaxResult getTaskByContainerCode(@RequestBody WaiguanShipmentDomain waiguanShipmentDomain) {
        AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {
                return waiguanShipmentService.getTaskByContainerCode(waiguanShipmentDomain);
            }
        });
        return ajaxResult;
    }

    @PostMapping("/quickReceiptByF")
    @ApiOperation("外观仓收货保存")
    @Log(title = "外观仓收货保存", action = BusinessType.OTHER)
    @Transactional(rollbackFor = Exception.class)
    @ApiLogger(apiName = "外观仓收货保存", from = "WCS")
    public AjaxResult quickReceiptByF(@RequestBody @ApiParam(value = "收货单") List<ReceiptBill> receiptBills) throws Exception {
        if (receiptBills == null || receiptBills.size() <= 0) {
            throw new JSONException("没有收货信息");
        }
98
99
100
101
102
103
104
105
        if (StringUtils.isNull(receiptBills.get(0).getArea())) {
            throw new JSONException("area信息没有");
        }
        Zone zone = zoneService.getZoneByArea(receiptBills.get(0).getArea().toString());
        if (zone == null) {
            throw new JSONException("没有找到对应的库区area=" + receiptBills.get(0).getArea());
        }
        String zoneCode = zone.getCode();
周鸿 authored
106
        // 设置wcs固定登录缓存,调用公共组盘接口
107
        ShiroUtils.setUserByWcsZone("WCS", QuantityConstant.WAREHOUSECODE, zoneCode);
周鸿 authored
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158

        String containerCode = receiptBills.get(0).getContainerCode();
        String locationCode = receiptBills.get(0).getLocationCode();
        String companyCode = QuantityConstant.COMPANYCODE;
        String receiptDetailId = receiptBills.get(0).getReceiptDetailId();

        LambdaQueryWrapper<Container> containerQueryWrapper = Wrappers.lambdaQuery();
        containerQueryWrapper.eq(Container::getCode, containerCode);
        Container container = containerService.getOne(containerQueryWrapper);
        if (container == null) {
            throw new JSONException("不存在这个托盘");
        }
//pda入库增加托盘任务校验
        List<TaskHeader> unfinishTask = taskHeaderService.getUnCompleteTaskList().stream().filter((t) -> {
            return t.getContainerCode().equals(container.getCode());
        }).collect(Collectors.toList());

        if (unfinishTask.size() > 0) {
            TaskHeader t = unfinishTask.get(0);
            String time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(t.getCreated());
            throw new ServiceException(container.getCode() + "托盘已经有未完成的任务,请不要重复下发\n该托盘任务创建于:" + time);
        }

        if (locationCode != null && locationCode.equals(container.getLocationCode())) {
        } else {
            ReceiptContainerView record = new ReceiptContainerView();
            record.setContainerCode(containerCode);
            record.setLocationCode(locationCode);
            record.setTaskType((short)100);
            record.setCompanyCode(receiptBills.get(0).getCompanyCode());
            receiptContainerHeaderService.checkContainer(record);
            if (locationCode != null) {
                receiptContainerHeaderService.mobileCheckLocationCode(record);
            }
            int receiptHeaderId = receiptHeaderService.createHeader(companyCode, ShiroUtils.getZoneCode());
            ReceiptHeader receiptHeader = receiptHeaderService.getById(receiptHeaderId);
            List<Integer> receiptDetailIds = receiptDetailService.insertTodayReceiptDetail(receiptHeaderId, receiptBills, true, companyCode);
            if (receiptDetailIds != null && receiptDetailIds.size() > 0) {
                AjaxResult ajaxResult = receiptContainerHeaderService.createReceiptContainer(receiptDetailIds, receiptBills.get(0));
                if (ajaxResult.hasErr()) {
                    return ajaxResult;
                }
            } else {
                return AjaxResult.error("插入入库明细表单失败");
            }
        }

        return AjaxResult.success("收货成功");
    }

}