CodingController.java 7.33 KB
package com.huaheng.api.erp.controller;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.erp.domain.BoxInfo;
import com.huaheng.api.erp.domain.ERPReceipt;
import com.huaheng.api.erp.domain.EmptyZu;
import com.huaheng.api.erp.domain.ShipmentRecord;
import com.huaheng.api.erp.service.CodingService;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.framework.aspectj.lang.annotation.ApiLogger;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.proPackaging.domain.ProPackaging;
import com.huaheng.pc.config.proPackaging.service.IProPackagingService;
import com.huaheng.pc.config.proPackaging.service.impl.ProPackagingServiceImpl;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import io.swagger.annotations.ApiOperation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
WMS和赋码系统交互
 * @author 游杰
 */
@RestController
@RequestMapping("/API/WMS/v2")
public class CodingController extends BaseController {

    @Resource
    private CodingService codingService;
    @Resource
    private IProPackagingService proPackagingService;


    @PostMapping("/receipt")
    @ApiOperation("入库组盘信息")
    @ResponseBody
    @ApiLogger(apiName = "入库组盘信息", from="码垛系统")
    public AjaxResult receipt(@RequestBody ERPReceipt erpReceipt) {
        if(erpReceipt == null) {
            return AjaxResult.error("入库组盘信息为空");
        }
        String Pack="";
        Integer so = 0;
        List<String> Box=new ArrayList<>();
        for(int i = 0;i<erpReceipt.getListBoxInfo().size();i++)
        {
            if(Box.contains(erpReceipt.getListBoxInfo().get(i).getBoxCode()))
            {
                return AjaxResult.error("箱码不能重复!!"+erpReceipt.getListBoxInfo().get(i).getBoxCode());
            }
            Box.add(erpReceipt.getListBoxInfo().get(i).getBoxCode());

            if (Pack.equals(erpReceipt.getListBoxInfo().get(i).getProPackaging())==false)
            {
                if (StringUtils.isNotEmpty(erpReceipt.getListBoxInfo().get(i).getProPackaging())){
                    Pack=erpReceipt.getListBoxInfo().get(i).getProPackaging();
                }
                LambdaQueryWrapper<ProPackaging> proPackagingLambdaQueryWrapper = Wrappers.lambdaQuery();
                proPackagingLambdaQueryWrapper.eq(ProPackaging::getName,Pack);
                ProPackaging packagingServiceOne = proPackagingService.getOne(proPackagingLambdaQueryWrapper);
                if (packagingServiceOne != null){
                    so=packagingServiceOne.getPieceBox();
                }

            }
            Integer integer = Integer.valueOf(String.valueOf(erpReceipt.getListBoxInfo().get(i).getQty()));


            if (erpReceipt.getTotalBoxes()==0)
            {
                return AjaxResult.error("箱数错误,不该为0");
            }

            if (erpReceipt.getTotalChips()==0)
            {
                return AjaxResult.error("片数错误,不该为0");
            }

            if (!Integer.valueOf(String.valueOf(erpReceipt.getListBoxInfo().get(i).getQty())).equals(so))
            {
                return AjaxResult.error("片数给的与发来的不对");
            }

            if (erpReceipt.getListBoxInfo().get(i).getChipInfos().size()!=so)
            {
                return AjaxResult.error("箱码"+erpReceipt.getListBoxInfo().get(i).getBoxCode()+"所对应的片码不相符合");
            }


        }

        String containerCode = erpReceipt.getContainerCode();
        String receiptCode = erpReceipt.getReceiptCode();
        String position = erpReceipt.getRequestInCode();
        String orderCode = erpReceipt.getOrderCode();
        String orderName = erpReceipt.getOrderName();
        BigDecimal weight = erpReceipt.getPieceWeight();
        List<BoxInfo> boxInfoList = erpReceipt.getListBoxInfo();
        int stack = erpReceipt.getStack();
        int qc = erpReceipt.getQc();
        int orderFinish = erpReceipt.getOrderFinish();
        if(StringUtils.isEmpty(receiptCode)) {
            return AjaxResult.error("入库组盘信息,排产订单编码为空");
        }
        if(StringUtils.isEmpty(containerCode)) {
            return AjaxResult.error("入库组盘信息,托盘号为空");
        }
        if(StringUtils.isEmpty(position)) {
            return AjaxResult.error("入库组盘信息,码垛站台位置为空");
        }
        if(StringUtils.isEmpty(orderCode)) {
            return AjaxResult.error("入库组盘信息,订单信息为空");
        }
        if(StringUtils.isEmpty(orderName)) {
            return AjaxResult.error("入库组盘信息,订单名称为空");
        }
        if(boxInfoList == null) {
            return AjaxResult.error("入库组盘信息,箱信息为空");
        }

        AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {
                AjaxResult ajaxResult = codingService.innerReceipt(containerCode,
                        position, receiptCode, orderCode, orderName, boxInfoList, stack, qc, orderFinish,weight);
                return ajaxResult;
            }
        });
        return ajaxResult;
    }

    @PostMapping("/searchFleeingGoodsInfo")
    @ApiOperation("防串信息查询")
    @ResponseBody
    @ApiLogger(apiName = "防串信息查询", from="查询历史库存记录")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult searchFleeingGoodsInfo(@RequestBody ShipmentRecord shipmentRecord) {
        String boxCode = shipmentRecord.getBoxCode();
        String chipCode = shipmentRecord.getChipCode1();
        if(StringUtils.isEmpty(boxCode) && StringUtils.isEmpty(chipCode)) {
            return AjaxResult.error("历史库存信息,箱为空");
        }
        AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {
                AjaxResult ajaxResult = codingService.findShipmentRecord(boxCode,chipCode);
                return ajaxResult;
            }
        });
        return ajaxResult;
    }

    @PostMapping("/requestEmptyContainer")
    @ApiOperation("申请空托盘组")
    @ResponseBody
    @ApiLogger(apiName = "申请空托盘组", from="申请空托盘组")
    @Transactional(rollbackFor = Exception.class)
    public AjaxResult requestEmptyContainer(@RequestBody EmptyZu emptyZu) {
        String requestInCode = emptyZu.getRequestInCode();
        if (requestInCode == null) {
            return AjaxResult.error("空托盘组信息,申请位置为空");
        }
        if (!requestInCode.equals("P3") && !requestInCode.equals("P6")){
            return AjaxResult.error("目标站台错误");
        }

        AjaxResult ajaxResult = handleMultiProcess(new MultiProcessListener() {
            @Override
            public AjaxResult doProcess() {
                AjaxResult ajaxResult = codingService.requestEmptyContainer(requestInCode);
                return ajaxResult;
            }
        });
        return ajaxResult;
    }



}