自动化立体仓库 - WMS系统
#
Junjie
2023-09-09 307ba2fc4f1b7c09111f6ff8fd7fa13a0b9b4a46
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;
@@ -615,16 +616,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 +657,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 +698,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 +727,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 +775,54 @@
        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.setColor(odParam.get("csocode").toString());
        //od.setColor(odParam.get("csocode").toString());
        od.setColor(toString(odParam.get("csocode")));
        //销售订单行号
        od.setOrigin(odParam.get("isoseq").toString());
        //od.setOrigin(odParam.get("isoseq").toString());
        od.setOrigin(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 +832,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());
        }
    }
}