自动化立体仓库 - WMS系统
zyx
2023-09-24 c832c7f5d6f8c015d609e044e902e070da5240b0
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -20,6 +20,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
@@ -115,7 +116,7 @@
        for (DetlDto detail : orderDetails) {
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
            if (DetlDto.has(list, dto)) {
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),dto.getCsocode(),dto.getIsoseq(),null);
                assert detlDto != null;
                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
            } else {
@@ -160,7 +161,7 @@
                result.setOrderType(order.getDocType$());
                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
                for (OrderDetl orderDetl : orderDetls) {
                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
                    //result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
                }
                if (order.getSettle() == 4L) {
                    // 修改订单状态 4.完成 ===>> 6.已上报
@@ -180,7 +181,7 @@
                result.setOrderType(order.getDocType$());
                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
                for (OrderDetl orderDetl : orderDetls) {
                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
                    //result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
                }
                // 修改订单状态 4.完成 ===>> 6.已上报
                if (!orderService.updateSettle(order.getId(), 6L, null)) {
@@ -250,7 +251,7 @@
        for (DetlDto detail : orderDetails) {
            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
            if (DetlDto.has(list, dto)) {
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),dto.getCsocode(),dto.getIsoseq(),null);
                assert detlDto != null;
                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
            } else {
@@ -294,7 +295,7 @@
                result.setOrderType(order.getDocType$());
                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
                for (OrderDetl orderDetl : orderDetls) {
                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
                    //result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
                }
                if (order.getSettle() == 4L) {
                    // 修改订单状态 4.完成 ===>> 6.已上报
@@ -314,7 +315,7 @@
                result.setOrderType(order.getDocType$());
                List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId());
                for (OrderDetl orderDetl : orderDetls) {
                    result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
                    //result.getOrderDetails().add(new DetlDto(orderDetl.getOrderNo(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getQty()));
                }
                // 修改订单状态 4.完成 ===>> 6.已上报
                if (!orderService.updateSettle(order.getId(), 6L, null)) {
@@ -531,8 +532,9 @@
            List<DetlDto> detlDtos = new ArrayList<>();
            param.getCombMats().forEach(elem -> {
                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
                detlDto.setContainerCode(elem.getContainerCode());
                if (DetlDto.has(detlDtos, detlDto)) {
                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode());
                    assert one != null;
                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
                } else {
@@ -615,16 +617,24 @@
    @Transactional
    public boolean syncMat(MatInfoParam param) {
        if(!Cools.isEmpty(matService.selectByMatnr(param.getCinvcode()))){
            callApiLogSave(param, "/open/asrs/mat/v1", "接收ERP下发商品信息失败!!!商品已存在!!!", false);
            param.setType(false);
            param.setMemo("商品已存在!");
            return false;
        }
        Date now = new Date();
        Mat mat = new Mat();
        Mat mat = matService.selectByMatnr(param.getCinvcode());
        boolean update = true;
        if(Cools.isEmpty(matService.selectByMatnr(param.getCinvcode()))){
            //物料号
            mat = new Mat();
            mat.setMatnr(param.getCinvcode());
            mat.setCreateTime(now);
            mat.setCreateBy(9999L);
            update = false;
//            callApiLogSave(param, "/open/asrs/mat/v1", "接收ERP下发商品信息失败!!!商品已存在!!!", false);
//            param.setType(false);
//            param.setMemo("商品已存在!");
//            return false;
        }
        //Mat mat = new Mat();
        //物料号
        mat.setMatnr(param.getCinvcode());
        //mat.setMatnr(param.getCinvcode());
        //物料名称
        mat.setMaktx(param.getCinvname());
        //规格型号
@@ -648,19 +658,34 @@
        //通用型号
        mat.setModel(param.getCinvdefine4());
        mat.setCreateTime(now);
        //9999表示erp下发
        mat.setUpdateBy(9999L);
        mat.setTagId(1L);
        mat.setUpdateTime(now);
        if (matService.insert(mat)) {
            callApiLogSave(param, "/open/asrs/mat/v1", "接收ERP下发商品信息成功!添加商品信息成功!", true);
            param.setType(true);
        } else {
            callApiLogSave(param, "/open/asrs/mat/v1", "添加ERP下发商品信息失败!!!状态异常!!!", false);
            param.setType(false);
            param.setMemo("添加ERP下发商品信息失败!");
        if(update){
            if (matService.updateById(mat)){
                callApiLogSave(param, "/open/asrs/mat/v1", "接收ERP下发商品信息成功!添加商品信息成功!", true);
                param.setUpdate(true);
            } else {
                callApiLogSave(param, "/open/asrs/mat/v1", "添加ERP下发商品信息失败!!!状态异常!!!", false);
                param.setError(true);
                param.setMemo("添加ERP下发商品信息失败!");
            }
        }else {
            if (matService.insert(mat)) {
                callApiLogSave(param, "/open/asrs/mat/v1", "接收ERP下发商品信息成功!添加商品信息成功!", true);
                param.setInsert(true);
            } else {
                callApiLogSave(param, "/open/asrs/mat/v1", "添加ERP下发商品信息失败!!!状态异常!!!", false);
                param.setError(true);
                param.setMemo("添加ERP下发商品信息失败!");
            }
        }
        matService.insert(mat);
        return true;
    }
@@ -674,11 +699,12 @@
        if(!Cools.isEmpty(orderService.selectByNo(param.get("id").toString()))){
            throw new CoolException("该单据已存在,无法生成单据信息");
        }
        Order order = orderMapping(param);
        Date now = new Date();
        Order order = orderMapping(param,now);
        orderService.insert(order);
        List<Map<String, Object>> orderDetails = (List<Map<String, Object>>) param.get("orderDetails");
        orderDetails.forEach(odParam -> {
            OrderDetl od = orderDetlMapping(order.getOrderNo(),odParam);
            OrderDetl od = orderDetlMapping(order,odParam,now);
            orderDetlService.insert(od);
        });
@@ -702,34 +728,43 @@
        return true;
    }
    private Order orderMapping(Map<String, Object> param){
        Date now = new Date();
    private Order orderMapping(Map<String, Object> param, Date now){
        Order order = new Order();
        //uuid
        order.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
        //核算主体
        order.setItemName(param.get("account").toString());
        //order.setItemName(param.get("account").toString());
        order.setItemName(toString(param.get("account")));
        //单据唯一表示
        order.setOrderNo(param.get("id").toString());
        //order.setOrderNo(param.get("id").toString());
        order.setOrderNo(toString(param.get("id")));
        //业务类型
        order.setDefNumber(param.get("cBusType").toString());
        //order.setDefNumber(param.get("cBusType").toString());
        order.setDefNumber(toString(param.get("cBusType")));
        //单据类型
        DocType docType = docTypeService.selectOrAdd(param.get("cVouchType").toString(), Boolean.TRUE);
        order.setDocType(docType.getDocId());
        //单据日期
        order.setOrderTime(param.get("dDate").toString());
        //order.setOrderTime(param.get("dDate").toString());
        order.setOrderTime(toString(param.get("dDate")));
        //供应商/客户编码
        order.setCstmrName(param.get("ks").toString());
        //order.setCstmrName(param.get("ks").toString());
        order.setCstmrName(toString(param.get("ks")));
        //仓库
        order.setTel(param.get("cWhName").toString());
        //order.setTel(param.get("cWhName").toString());
        order.setTel(toString(param.get("cWhName")));
        //出入库类别
        order.setOperMemb(param.get("cRdName").toString());
        //setOperMemb(param.get("cRdName").toString());
        order.setOperMemb(toString(param.get("cRdName")));
        //部门
        order.setSalesman(param.get("cDepCode").toString());
        //order.setSalesman(param.get("cDepCode").toString());
        order.setSalesman(toString(param.get("cDepCode")));
        //备注
        order.setMemo(param.get("cMemo").toString());
        //order.setMemo(param.get("cMemo").toString());
        order.setMemo(toString(param.get("cMemo")));
        //制单人
        order.setShipCode(param.get("cMaker").toString());
        //order.setShipCode(param.get("cMaker").toString());
        order.setShipCode(toString(param.get("cMaker")));
        order.setCreateTime(now);
        order.setUpdateTime(now);
@@ -741,29 +776,57 @@
        return order;
    }
    private OrderDetl orderDetlMapping(String orderId, Map<String, Object> odParam){
    private OrderDetl orderDetlMapping(Order order, Map<String, Object> odParam, Date now){
        OrderDetl od = new OrderDetl();
        od.setOrderNo(orderId);
        od.setOrderId(order.getId());
        od.setOrderNo(order.getOrderNo());
        //行唯一标识
        od.setItemNum(odParam.get("autoId").toString());
        //od.setItemNum(odParam.get("autoId").toString());
        od.setItemNum(toString(odParam.get("autoId")));
        //存货编码
        od.setMatnr(odParam.get("cInvCode").toString());
        //od.setMatnr(odParam.get("cInvCode").toString());
        od.setMatnr(toString(odParam.get("cInvCode")));
        //存货名称
        od.setMaktx(odParam.get("cInvName").toString());
        //od.setMaktx(odParam.get("cInvName").toString());
        od.setMaktx(toString(odParam.get("cInvName")));
        //规格型号
        od.setSpecs(odParam.get("cInvStd").toString());
        //od.setSpecs(odParam.get("cInvStd").toString());
        od.setSpecs(toString(odParam.get("cInvStd")));
        //计量单位
        od.setUnit(odParam.get("cComUnitName").toString());
        //od.setUnit(odParam.get("cComUnitName").toString());
        od.setUnit(toString(odParam.get("cComUnitName")));
        //数量
        od.setAnfme(Double.parseDouble(odParam.get("iQuantity").toString()));
        //od.setAnfme(toString(odParam.get("iQuantity")));
        //行号
        od.setBrand(odParam.get("irowno").toString());
        //od.setBrand(odParam.get("irowno").toString());
        //od.setBrand(toString(odParam.get("irowno")));
        od.setManu(toString(odParam.get("irowno")));
        //销售订单号
        od.setColor(odParam.get("csocode").toString());
        //od.setColor(odParam.get("csocode").toString());
        //od.setColor(toString(odParam.get("csocode")));
        od.setThreeCode(toString(odParam.get("csocode")));
        //销售订单行号
        od.setOrigin(odParam.get("isoseq").toString());
        //od.setOrigin(odParam.get("isoseq").toString());
        //od.setOrigin(toString(odParam.get("isoseq")));
        od.setDeadTime(toString(odParam.get("isoseq")));
        od.setStatus(1);
        od.setQty(0.0D);
        od.setCreateBy(9999L);
        od.setCreateTime(now);
        od.setUpdateBy(9999L);
        od.setUpdateTime(now);
        return od;
    }
    private String toString(Object o){
        if(StringUtils.isEmpty(o)){
            return null;
        }else{
            return o.toString();
        }
    }
@@ -773,4 +836,12 @@
                response, bool);
    }
    public static void main(String[] args) {
        Object s = null;
        if(StringUtils.isEmpty(s)){
            System.out.println("null");
        }else {
            System.out.println(s.toString());
        }
    }
}