自动化立体仓库 - WMS系统
123
zhang
5 天以前 2e82ef6fd6dfbcb1eb88a8d4b705eae7fb99065b
src/main/java/com/zy/nc/task/handler/PlanOrderHandler.java
@@ -1,21 +1,31 @@
package com.zy.nc.task.handler;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.InventoryCheckOrder;
import com.zy.asrs.entity.InventoryCheckOrderDetl;
import com.zy.asrs.entity.Mat;
import com.zy.asrs.entity.param.OpenOrderPakinParam;
import com.zy.asrs.entity.param.OpenOrderPakoutParam;
import com.zy.asrs.service.InventoryCheckOrderDetlService;
import com.zy.asrs.service.InventoryCheckOrderService;
import com.zy.asrs.service.MatService;
import com.zy.asrs.service.OpenService;
import com.zy.asrs.task.AbstractHandler;
import com.zy.asrs.task.core.ReturnT;
import com.zy.common.model.DetlDto;
import com.zy.nc.entity.NccSaleXsfhmxWms;
import com.zy.nc.entity.NccScZkmxbWms;
import com.zy.nc.service.NccSaleXsfhmxWmsService;
import com.zy.nc.service.NccScZkmxbWmsService;
import com.zy.nc.entity.*;
import com.zy.nc.service.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@Service
@@ -29,6 +39,24 @@
    private NccScZkmxbWmsService nccScZkmxbWmsService;
    @Autowired
    private NccCgCgdhdWmsService nccCgCgdhdWmsService;
    @Autowired
    private NccSaleDbddWmsService nccSaleDbddWmsService;
    @Autowired
    private NccCkPddWmsService nccCkPddWmsService;
    @Autowired
    private InventoryCheckOrderDetlService inventoryCheckOrderDetlService;
    @Autowired
    private InventoryCheckOrderService inventoryCheckOrderService;
    @Autowired
    private MatService matService;
    @Autowired
    private OpenService openService;
    /**
@@ -36,66 +64,281 @@
     *
     * @return
     */
    public ReturnT<String> start1() {
        List<String> Ids = nccSaleXsfhmxWmsService.selectXsfh();
        for (String id : Ids) {
            List<NccSaleXsfhmxWms> wmsFlag = nccSaleXsfhmxWmsService.selectList(new EntityWrapper<NccSaleXsfhmxWms>().eq("cdeliveryid", id).ne("wms_flag", 1).eq("fstatusflag", 2));
            OpenOrderPakoutParam param = new OpenOrderPakoutParam();
            param.setOrderType("销售发货");
            DetlDto detlDto;
            List<DetlDto> orderDetails = new ArrayList<>();
            long i = 1;
            for (NccSaleXsfhmxWms nccSaleXsfhmxWms : wmsFlag) {
                if (nccSaleXsfhmxWms.getFstatusflag() == 2 && nccSaleXsfhmxWms.getBdr() == 0 && nccSaleXsfhmxWms.getHdr() == 0) {
    @Transactional
    public ReturnT<String> start1(List<NccSaleXsfhmxWms> wmsFlag) {
        try {
            HashMap<String, List<NccSaleXsfhmxWms>> map = new HashMap<>();
            List<NccSaleXsfhmxWms> fenzu;
            for (NccSaleXsfhmxWms wms : wmsFlag) {
                if (map.get(wms.getFhckbm()) == null) {
                    fenzu = new ArrayList<>();
                    fenzu.add(wms);
                    map.put(wms.getFhckbm(), fenzu);
                } else {
                    fenzu = map.get(wms.getFhckbm());
                    fenzu.add(wms);
                    map.put(wms.getFhckbm(), fenzu);
                }
            }
            int size = 1;
            for (String key : map.keySet()) {
                OpenOrderPakoutParam param = new OpenOrderPakoutParam();
                DetlDto detlDto;
                List<DetlDto> orderDetails = new ArrayList<>();
                long i = 1;
                for (NccSaleXsfhmxWms nccSaleXsfhmxWms : map.get(key)) {
                    param.setOrderType("销售发货");
                    detlDto = new DetlDto();
                    detlDto.setMatnr(nccSaleXsfhmxWms.getWlbm());
                    detlDto.setAnfme(nccSaleXsfhmxWms.getNastnum());
                    detlDto.setAnfme(nccSaleXsfhmxWms.getNnum().doubleValue());
                    detlDto.setWeight(nccSaleXsfhmxWms.getNastnum().doubleValue());
                    detlDto.setStandby1(nccSaleXsfhmxWms.getFhckbm());
                    detlDto.setLineNumber(i);
                    detlDto.setRemark(JSONObject.toJSONString(nccSaleXsfhmxWms));
                    orderDetails.add(detlDto);
                    log.info("NccSaleXsfhmxWms数据:{}", JSONObject.toJSON(nccSaleXsfhmxWms));
                    i++;
                    nccSaleXsfhmxWms.setWmsFlag(1);
                    param.setOrderNo(nccSaleXsfhmxWms.getVbillcode() + "-" + size);
                    param.setCstmrName(nccSaleXsfhmxWms.getKhmc());
                }
                nccSaleXsfhmxWms.setWmsFlag(1);
                param.setOrderDetails(orderDetails);
                openService.pakoutOrderCreate(param);
                nccSaleXsfhmxWmsService.updateBatchById(map.get(key));
            }
            param.setOrderNo(id);
            param.setOrderDetails(orderDetails);
            openService.pakoutOrderCreate(param);
            nccSaleXsfhmxWmsService.updateBatchById(wmsFlag);
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
        return SUCCESS;
    }
    /**
     * 转库
     * 发货
     *
     * @return
     */
    public ReturnT<String> start2() {
        List<String> strings = nccScZkmxbWmsService.selectZk();
        for (String string : strings) {
            OpenOrderPakoutParam param = new OpenOrderPakoutParam();
            param.setOrderType("转库");
    @Transactional
    public ReturnT<String> start1In(List<NccSaleXsfhmxWms> wmsFlag) {
        try {
            OpenOrderPakinParam param = new OpenOrderPakinParam();
            DetlDto detlDto;
            List<DetlDto> orderDetails = new ArrayList<>();
            long i = 1;
            List<NccScZkmxbWms> wmsFlag = nccScZkmxbWmsService.selectList(new EntityWrapper<NccScZkmxbWms>().eq("vbillcode", string).ne("wms_flag", 1));
            for (NccSaleXsfhmxWms nccSaleXsfhmxWms : wmsFlag) {
                param.setOrderType("销售退货");
                detlDto = new DetlDto();
                detlDto.setMatnr(nccSaleXsfhmxWms.getWlbm());
                detlDto.setAnfme(nccSaleXsfhmxWms.getNnum().doubleValue());
                detlDto.setStandby1(nccSaleXsfhmxWms.getFhckbm());
                detlDto.setLineNumber(i);
                detlDto.setRemark(JSONObject.toJSONString(nccSaleXsfhmxWms));
                orderDetails.add(detlDto);
                log.info("NccSaleXsfhmxWms数据:{}", JSONObject.toJSON(nccSaleXsfhmxWms));
                i++;
                nccSaleXsfhmxWms.setWmsFlag(1);
                param.setOrderNo(nccSaleXsfhmxWms.getVbillcode());
            }
            param.setOrderDetails(orderDetails);
            openService.pakinOrderCreate(param);
            nccSaleXsfhmxWmsService.updateBatchById(wmsFlag);
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
        return SUCCESS;
    }
    /**
     * 转库,包含产成品入库单
     *
     * @return
     */
    @Transactional
    public ReturnT<String> start2In(List<NccScZkmxbWms> wmsFlag) {
        try {
            OpenOrderPakinParam param = new OpenOrderPakinParam();
            param.setOrderType("转库-入库");
            DetlDto detlDto;
            List<DetlDto> orderDetails = new ArrayList<>();
            long i = 1;
            for (NccScZkmxbWms nccScZkmxbWms : wmsFlag) {
                log.info("NccScZkmxbWms数据:{}", JSONObject.toJSON(nccScZkmxbWms));
                if (nccScZkmxbWms.getDjzt() == 2 && nccScZkmxbWms.getBdr() == 0 && nccScZkmxbWms.getDr() == 0) {
                    detlDto = new DetlDto();
                    detlDto.setMatnr(nccScZkmxbWms.getWlbm());
                    detlDto.setAnfme(nccScZkmxbWms.getYingzzsl());
                    detlDto.setBatch(nccScZkmxbWms.getVbatchcode());
                    detlDto.setLineNumber(i);
                    orderDetails.add(detlDto);
                    i++;
                }
                detlDto = new DetlDto();
                detlDto.setMatnr(nccScZkmxbWms.getWlbm());
                detlDto.setAnfme(nccScZkmxbWms.getYingzzsl().doubleValue());
                detlDto.setBatch(nccScZkmxbWms.getVbatchcode());
                detlDto.setLineNumber(i);
                detlDto.setRemark(JSONObject.toJSONString(nccScZkmxbWms));
                detlDto.setStandby1(nccScZkmxbWms.getRkckbm());
                orderDetails.add(detlDto);
                i++;
                nccScZkmxbWms.setWmsFlag(1);
                param.setOrderNo(nccScZkmxbWms.getVbillcode());
            }
            param.setOrderNo(string);
            param.setOrderDetails(orderDetails);
            openService.pakinOrderCreate(param);
            nccScZkmxbWmsService.updateBatchById(wmsFlag);
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
        return SUCCESS;
    }
    /**
     * 转库,包含出库
     *
     * @return
     */
    @Transactional
    public ReturnT<String> start2Out(List<NccScZkmxbWms> wmsFlag) {
        try {
            OpenOrderPakoutParam param = new OpenOrderPakoutParam();
            param.setOrderType("转库-出库");
            DetlDto detlDto;
            List<DetlDto> orderDetails = new ArrayList<>();
            long i = 1;
            for (NccScZkmxbWms nccScZkmxbWms : wmsFlag) {
                log.info("NccScZkmxbWms数据:{}", JSONObject.toJSON(nccScZkmxbWms));
                detlDto = new DetlDto();
                detlDto.setMatnr(nccScZkmxbWms.getWlbm());
                detlDto.setAnfme(nccScZkmxbWms.getYingzzsl().doubleValue());
                detlDto.setBatch(nccScZkmxbWms.getVbatchcode());
                detlDto.setLineNumber(i);
                detlDto.setRemark(JSONObject.toJSONString(nccScZkmxbWms));
                orderDetails.add(detlDto);
                i++;
                nccScZkmxbWms.setWmsFlag(1);
                param.setOrderNo(nccScZkmxbWms.getVbillcode());
            }
            param.setOrderDetails(orderDetails);
            openService.pakoutOrderCreate(param);
            nccScZkmxbWmsService.updateBatchById(wmsFlag);
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
        return SUCCESS;
    }
    /**
     * 采购到货
     *
     * @return
     */
    @Transactional
    public ReturnT<String> start3(List<NccCgCgdhdWms> wmsFlag) {
        try {
            OpenOrderPakinParam param = new OpenOrderPakinParam();
            param.setOrderType("采购到货");
            DetlDto detlDto;
            List<DetlDto> orderDetails = new ArrayList<>();
            long i = 1;
            for (NccCgCgdhdWms nccCgCgdhdWms : wmsFlag) {
                log.info("nccCgCgdhdWms数据:{}", JSONObject.toJSON(nccCgCgdhdWms));
                detlDto = new DetlDto();
                detlDto.setMatnr(nccCgCgdhdWms.getWlbm());
                detlDto.setAnfme(nccCgCgdhdWms.getYdzsl().doubleValue());
                detlDto.setBatch(nccCgCgdhdWms.getVbatchcode());
                detlDto.setLineNumber(i);
                detlDto.setRemark(JSONObject.toJSONString(nccCgCgdhdWms));
                detlDto.setStandby1(nccCgCgdhdWms.getCkbm());
                orderDetails.add(detlDto);
                i++;
                nccCgCgdhdWms.setWmsFlag(1);
                param.setOrderNo(nccCgCgdhdWms.getVbillcode());
            }
            param.setOrderDetails(orderDetails);
            openService.pakinOrderCreate(param);
            nccCgCgdhdWmsService.updateBatchById(wmsFlag);
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
        return SUCCESS;
    }
    /**
     * 盘点单
     *
     * @return
     */
//    @Transactional
//    public ReturnT<String> start4(List<NccCkPddWms> wmsFlag) {
//        try {
//            InventoryCheckOrder param = new InventoryCheckOrder();
//            InventoryCheckOrderDetl checkOrderDetl = null;
//            for (NccCkPddWms nccScZkmxbWms : wmsFlag) {
//                log.info("NccCkPddWms数据:{}", JSONObject.toJSON(nccScZkmxbWms));
//                Mat mat = matService.selectByMatnr(nccScZkmxbWms.getWlbm());
//                if (Cools.isEmpty(mat)) {
//                    throw new CoolException(nccScZkmxbWms.getWlbm() + "编号商品检索失败,请先添加商品");
//                }
//                checkOrderDetl = new InventoryCheckOrderDetl();
//                checkOrderDetl.setMatnr(nccScZkmxbWms.getWlbm());
//                checkOrderDetl.setMaktx(mat.getMaktx());
//                checkOrderDetl.setOrderNo(nccScZkmxbWms.getVbillcode());
//                checkOrderDetl.setAnfme(nccScZkmxbWms.getZmzsl().doubleValue());
//                checkOrderDetl.setBatch(nccScZkmxbWms.getVbatchcode());
//                inventoryCheckOrderDetlService.insert(checkOrderDetl);
//                nccScZkmxbWms.setWmsFlag(1);
//                param.setOrderNo(nccScZkmxbWms.getVbillcode());
//                param.setCreateBy(nccScZkmxbWms.getPdrmc());
//
//            }
//            param.setCreateTime(new Date());
//            param.setStatus("1");
//            inventoryCheckOrderService.insert(param);
//            nccCkPddWmsService.updateBatchById(wmsFlag);
//        } catch (Exception e) {
//            e.printStackTrace();
//            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//            return FAIL.setMsg(e.getMessage());
//        }
//        return SUCCESS;
//    }
    /**
     * 调拨单
     *
     * @return
     */
    @Transactional
    public ReturnT<String> start5(List<NccSaleDbddWms> wmsFlag) {
        try {
            OpenOrderPakoutParam param = new OpenOrderPakoutParam();
            param.setOrderType("集团内部调拨");
            DetlDto detlDto;
            List<DetlDto> orderDetails = new ArrayList<>();
            long i = 1;
            for (NccSaleDbddWms nccCgCgdhdWms : wmsFlag) {
                log.info("nccCgCgdhdWms数据:{}", JSONObject.toJSON(nccCgCgdhdWms));
                detlDto = new DetlDto();
                detlDto.setMatnr(nccCgCgdhdWms.getWlbm());
                detlDto.setAnfme(nccCgCgdhdWms.getZsl().doubleValue());
                detlDto.setBatch(nccCgCgdhdWms.getVbatchcode());
                detlDto.setLineNumber(i);
                detlDto.setRemark(JSONObject.toJSONString(nccCgCgdhdWms));
                orderDetails.add(detlDto);
                i++;
                nccCgCgdhdWms.setWmsFlag(1);
                param.setOrderNo(nccCgCgdhdWms.getVbillcode());
            }
            param.setOrderDetails(orderDetails);
            openService.pakoutOrderCreate(param);
            nccSaleDbddWmsService.updateBatchById(wmsFlag);
        } catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return FAIL.setMsg(e.getMessage());
        }
        return SUCCESS;
    }