自动化立体仓库 - WMS系统
#
lty
5 天以前 059a32e8f159561d917a2e750d962439c8f1a8af
#
5个文件已修改
130 ■■■■ 已修改文件
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
@@ -174,7 +174,7 @@
                    jsonObject.put("modify_starttime",  latestUpdateTime);//业务起始日期
                    jsonObject.put("billstatus",  "B");//单据状态
                    jsonObject.put("modify_endtime",  sdf1.format(now));//业务起始日期
                    jsonObject.put("billtype_number",  "im_SalOutBill_STD_BT_S_R");//单据类型
                    jsonObject.put("billtype_number",  "im_SalOutBill_STD_BT_S_R");//单据类型   退货类型待定
                    break;
                case "PRD_PickMtrl"://生产领料单
                    path = imMdcMftproorder;
@@ -876,9 +876,7 @@
                            for (int k = 0; k < billEntryArray.size(); k++) {
                                JSONObject entry = billEntryArray.getJSONObject(k);
                                String matnr = entry.getString("material_number"); //物料编码,内部SKU
//                                Double anfme = entry.getDouble("eap7_decimalfield");//箱数
                                Double anfme = 1.0;//箱数
                                Double anfme = entry.getDouble("eap7_decimalfield");//箱数
                                Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数
                                Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积
                                String warehouse = entry.getString("warehouse_number");//仓库编码
@@ -1198,7 +1196,8 @@
                            for (int k = 0; k < billEntryArray.size(); k++) {
                                JSONObject entry = billEntryArray.getJSONObject(k);
                                String matnr = entry.getString("material_number"); //物料编码,内部SKU
                                Double anfme = entry.getDouble("qty");//箱数
                                Double anfme = entry.getDouble("qty");//个数
                                Double anfmeBox = 0.0;//箱数
                                Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数
                                Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积
                                String warehouse = entry.getString("warehouse_number");//仓库编码
@@ -1223,6 +1222,7 @@
                                            "物料档案不存在:" + matnr, false);
                                    continue;
                                }
                                anfmeBox = anfme/mat.getSafeQty();
                                // ========= 明细去重 =========
                                List<OrderDetl> orderDetls =
                                        orderDetlService.selectByOrderId(order.getId());
@@ -1241,7 +1241,7 @@
                                orderDetl.sync(mat);
                                orderDetl.setThreeCode(detlId);
                                orderDetl.setLineNumber(seq);
                                orderDetl.setAnfme(anfme);
                                orderDetl.setAnfme(anfmeBox);
                                orderDetl.setErpAnfme(anfme);
                                orderDetl.setOrderId(order.getId());
                                orderDetl.setOrderNo(order.getOrderNo());
@@ -1364,9 +1364,8 @@
                            for (int k = 0; k < billEntryArray.size(); k++) {
                                JSONObject entry = billEntryArray.getJSONObject(k);
                                String matnr = entry.getString("material_number"); //物料编码,内部SKU
//                                Double anfme = entry.getDouble("eap7_decimalfield");//箱数
                                Double anfme = 1.0;//箱数
                                Double anfme = entry.getDouble("qty");//个数
                                Double anfmeBox = 0.0;
                                Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数
                                Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积
                                String warehouse = entry.getString("warehouse_number");//仓库编码
@@ -1390,6 +1389,7 @@
                                            "商品不存在:" + matnr, false);
                                    continue;
                                }
                                anfmeBox = anfme/mat.getSafeQty();
                                // ========= 明细去重 =========
                                List<OrderDetl> orderDetls =
                                        orderDetlService.selectByOrderId(order.getId());
@@ -1408,7 +1408,7 @@
                                orderDetl.sync(mat);
                                orderDetl.setThreeCode(detlId);
                                orderDetl.setLineNumber(seq);
                                orderDetl.setAnfme(anfme);
                                orderDetl.setAnfme(anfmeBox);
                                orderDetl.setErpAnfme(anfme);
                                orderDetl.setOrderId(order.getId());
                                orderDetl.setOrderNo(order.getOrderNo());
@@ -1530,7 +1530,8 @@
                            for (int k = 0; k < billEntryArray.size(); k++) {
                                JSONObject entry = billEntryArray.getJSONObject(k);
                                String matnr = entry.getString("material_number"); //物料编码,内部SKU
                                Double anfme = entry.getDouble("completqty");//箱数
                                Double anfmeBox = entry.getDouble("eap7_integerfield");//箱数
                                Double anfme = entry.getDouble("completqty");//个数
                                Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数
                                Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积
                                String warehouse = entry.getString("warehouse_number");//仓库编码
@@ -1573,8 +1574,8 @@
                                orderDetl.sync(mat);
                                orderDetl.setThreeCode(detlId);
                                orderDetl.setLineNumber(seq);
                                orderDetl.setAnfme(anfme);
                                orderDetl.setErpAnfme(anfme);
                                orderDetl.setAnfme(anfmeBox);
                                orderDetl.setErpAnfme(anfme);//汇报单个数
                                orderDetl.setOrderId(order.getId());
                                orderDetl.setOrderNo(order.getOrderNo());
                                orderDetl.setSupp(supp);
src/main/java/com/zy/asrs/task/kingdee/handler/ReviewOrderSyncHandler.java
@@ -56,9 +56,9 @@
    @Value("${erp.address.imMdcMftfeedorderReport}")
    //生产补料单上报
    private String imMdcMftfeedorderReport;
    @Value("${erp.address.imProductinbillReport}")
    @Value("${erp.address.imProductinbillBatchAudit}")
    //生产汇报单上报
    private String imProductinbillReport;
    private String imProductinbillBatchAudit;
    @Value("${erp.address.imOtheroutbillAudi}")
    //其他出库审核上报
    private String imOtheroutbillAudi;
@@ -141,7 +141,7 @@
                dataObj.fluentPut("id", idArray);
                return new JSONObject().fluentPut("data", dataObj);
            case "PRD_MORPT"://生产汇报单
                path = imProductinbillReport;
                path = imProductinbillBatchAudit;
                idArray.add(order.getNumber());
                dataObj.fluentPut("id", idArray);
                return new JSONObject().fluentPut("data", dataObj);
src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
@@ -9,6 +9,7 @@
import com.zy.asrs.service.DocTypeService;
import com.zy.asrs.service.OrderService;
import com.zy.asrs.service.impl.ErpSecretServiceImpl;
import com.zy.asrs.service.impl.MatServiceImpl;
import com.zy.asrs.service.impl.OrderDetlPakinServiceImpl;
import com.zy.asrs.service.impl.OrderDetlServiceImpl;
import com.zy.asrs.task.AbstractHandler;
@@ -40,6 +41,8 @@
    private String imOtheroutbill;
    @Value("${erp.address.imOtherinbill}")
    private String imOtherinbill;
    @Value("${erp.address.imProductinbillReport}")
    private String imProductinbillReport;
    @Autowired
    private OrderService orderService;
@@ -61,6 +64,9 @@
    @Value("${erp.login.xAcfwIdentity}")
    private String xAcfwIdentity;
    String path;
    @Autowired
    private MatServiceImpl matService;
    @Transactional
    public ReturnT<String> start(Order order) {
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -97,15 +103,16 @@
                JSONArray billentryArray = new JSONArray();  // 用于存储 billentry 对象
                String suppCode = null;  // 供应商
                String boxType2 = null;  // 货主/货源
                // 遍历订单详情
                Date now = new Date();
                for (OrderDetl orderDetl : orderDetlList) {
                    suppCode = orderDetl.getSuppCode();
                    boxType2 = orderDetl.getBoxType2();
                    if (orderDetl.getQty() == 0) {
                        continue;
                    }
                    Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
                    Double qty = orderDetl.getQty()*mat.getSafeQty();
                    Double qtytotal = orderDetl.getAnfme()*mat.getSafeQty();
//                    JSONArray idArr = new JSONArray();
//                    idArr.add(0L);
                    // 创建 billentry_lk 对象
@@ -115,8 +122,8 @@
                            .fluentPut("billentry_lk_stableid", 677270092232273922L)
                            .fluentPut("billentry_lk_sbillid", Long.parseLong(order.getItemName()))  // 主单ID
                            .fluentPut("billentry_lk_sid", Long.parseLong(orderDetl.getThreeCode()))  // 明细ID
                            .fluentPut("billentry_lk_baseqty_old", orderDetl.getErpAnfme())  // ERP数量
                            .fluentPut("billentry_lk_baseqty", orderDetl.getQty());  // 作业数量
                            .fluentPut("billentry_lk_baseqty_old", qtytotal)  // ERP数量
                            .fluentPut("billentry_lk_baseqty", qty);  // 作业数量
                    billentryLkArray.add(billentryLk);
                    // 创建 billentry 对象,填充缺失的字段
                    JSONObject billentry = new JSONObject()
@@ -126,7 +133,7 @@
                            .fluentPut("invtype_number", "110")  // 库存类型
                            .fluentPut("outinvstatus_number", "110")
                            .fluentPut("linetype_number", "010")  // 行号类型
                            .fluentPut("qty", orderDetl.getQty())  // 数量
                            .fluentPut("qty", qty)  // 数量
                            .fluentPut("material_number", orderDetl.getMatnr())  // 物料编号
                            .fluentPut("billentry_lk", billentryLkArray);
@@ -149,6 +156,65 @@
                                        .fluentPut("supplier_number", suppCode)  // 供应商编号
                                        .fluentPut("billentry", billentryArray)  // 将 billentry 数组添加到请求参数
                        )));
            case "PRD_MORPT": // 生产汇报单
                JSONArray billentryLkArray1 = new JSONArray();
                JSONArray billentryArray1 = new JSONArray();  // 用于存储 billentry 对象
                String suppCode1 = null;  // 供应商
                String boxType21 = null;  // 货主/货源
                Date now1 = new Date();
                path = imProductinbillReport;
                for (OrderDetl orderDetl : orderDetlList) {
                    suppCode1 = orderDetl.getSuppCode();
                    boxType21 = orderDetl.getBoxType2();
                    if (orderDetl.getQty() == 0) {
                        continue;
                    }
                    Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
                    Double qty = orderDetl.getQty()*mat.getSafeQty();
                    Double qtytotal = orderDetl.getAnfme()*mat.getSafeQty();
//                    JSONArray idArr = new JSONArray();
//                    idArr.add(0L);
                    // 创建 billentry_lk 对象
                    JSONObject billentryLk = new JSONObject()
                            .fluentPut("id", 0L)
                            .fluentPut("seq", orderDetl.getLineNumber())
                            .fluentPut("billentry_lk_stableid", 677270092232273922L)
                            .fluentPut("billentry_lk_sbillid", Long.parseLong(order.getItemName()))  // 主单ID
                            .fluentPut("billentry_lk_sid", Long.parseLong(orderDetl.getThreeCode()))  // 明细ID
                            .fluentPut("billentry_lk_baseqty_old", qtytotal)  // ERP数量
                            .fluentPut("billentry_lk_baseqty", qty);  // 作业数量
                    billentryLkArray1.add(billentryLk);
                    // 创建 billentry 对象,填充缺失的字段
                    JSONObject billentry = new JSONObject()
                            .fluentPut("id", 0L)
                            .fluentPut("warehouse_number", orderDetl.getManu())  // 仓库编号
                            .fluentPut("invstatus_number", "110")  // 库存状态
                            .fluentPut("invtype_number", "110")  // 库存类型
                            .fluentPut("outinvstatus_number", "110")
                            .fluentPut("linetype_number", "010")  // 行号类型
                            .fluentPut("qty", qty)  // 数量
                            .fluentPut("material_number", orderDetl.getMatnr())  // 物料编号
                            .fluentPut("billentry_lk", billentryLkArray1);
                    billentryArray1.add(billentry);
                }
                return new JSONObject()
                        .fluentPut("data", new JSONArray(Arrays.asList(
                                new JSONObject()
                                        .fluentPut("billno", UUID.randomUUID().toString().replace("-", "").substring(0, 16))
                                        .fluentPut("trdbillno", UUID.randomUUID().toString().replace("-", ""))
                                        .fluentPut("billtype_number", "im_PurInBill_STD_BT_S")
                                        .fluentPut("biztime", sdf1.format(now1))
                                        .fluentPut("exratedate", sdf1.format(now1))
                                        .fluentPut("bizorg_number", boxType21)
                                        .fluentPut("biztype_number", "110")  // 货主/货源
                                        .fluentPut("org_number", boxType21)  // 货主/货源
                                        .fluentPut("paymode", "CREDIT")
                                        .fluentPut("invscheme_number", "110")
                                        .fluentPut("billtype_number", "im_PurInBill_STD_BT_S")
                                        .fluentPut("supplier_number", suppCode1)  // 供应商编号
                                        .fluentPut("billentry", billentryArray1)  // 将 billentry 数组添加到请求参数
                        )));
            case "STK_MISCELLANEOUS": // 其他入库单
                path = imOtherinbill;
                billentryArray = new JSONArray();
@@ -156,10 +222,12 @@
                    if (orderDetl.getQty() == 0) {
                        continue;
                    }
                    Mat mat = matService.selectByMatnr(orderDetl.getMatnr());
                    Double qty = orderDetl.getQty()*mat.getSafeQty();
                    JSONObject billentry = new JSONObject()
                            .fluentPut("id", 0L)
                            .fluentPut("material_number", orderDetl.getMatnr())       // 物料编码
                            .fluentPut("qty", orderDetl.getQty())                    // 数量
                            .fluentPut("qty", qty)                    // 数量
                            .fluentPut("warehouse_number", "CK001")     // 仓库
                            .fluentPut("invstatus_number", "110")
                            .fluentPut("invtype_number", "110")
src/main/java/com/zy/asrs/task/kingdee/handler/SubmitOrderSyncHandler.java
@@ -44,6 +44,8 @@
    private String imOtheroutbillSubmit;
    @Value("${erp.address.imOtherinbillSubmit}")
    private String imOtherinbillSubmit;
    @Value("${erp.address.imProductinbillBatchSubmit}")
    private String imProductinbillBatchSubmit;
    @Autowired
    private LoginAuthenticationHandler loginAuthenticationHandler;
    @Autowired
@@ -92,6 +94,11 @@
                idArray.add(order.getNumber());
                dataObj.fluentPut("id", idArray);
                return new JSONObject().fluentPut("data", dataObj);
            case "PRD_MORPT": // 进仓通知单提交
                path = imProductinbillBatchSubmit;
                idArray.add(order.getNumber());
                dataObj.fluentPut("id", idArray);
                return new JSONObject().fluentPut("data", dataObj);
            case "STK_MISCELLANEOUS"://其他入库单
                path = imOtherinbillSubmit;
                idArray.add(order.getOrderNo());
src/main/java/com/zy/erp/kingdee/enums/KingDeeUtilType.java
@@ -3,16 +3,16 @@
public enum KingDeeUtilType {
    BD_MATERIAL(0, "物料档案","BD_MATERIAL","","","",1),
    BD_RRGANIZATION(2, "供应商","BD_RRGANIZATION","","","",1),
    PUR_RECEIVEBIll(3, "收料单","PUR_RECEIVEBIll","","","",1),
    SAL_OUTSTOCK(7, "销售出库单","SAL_OUTSTOCK","FRealQty","","",0),
//    PUR_RECEIVEBIll(3, "收料单","PUR_RECEIVEBIll","","","",1),
//    SAL_OUTSTOCK(7, "销售出库单","SAL_OUTSTOCK","FRealQty","","",0),
//    STK_MisDelivery(19, "其他出库单","STK_MisDelivery","FQty","","",0),
//    STK_MISCELLANEOUS(18, "其他入库单","STK_MISCELLANEOUS","FQty","其他入库单","STK_MISCELLANEOUS",1),
//    SAL_RETURNSTOCK(9, "销售退货单","SAL_RETURNSTOCK","FRealQty","","",1),
    PRD_PickMtrl(10, "生产领料单","PRD_PickMtrl","","","",0),
//    PRD_ReturnMtrl(12, "生产退料单","PRD_ReturnMtrl","FQty","","",1),
//    PRD_PickMtrl(10, "生产领料单","PRD_PickMtrl","","","",0),
    PRD_ReturnMtrl(12, "生产退料单","PRD_ReturnMtrl","FQty","","",1),
//    PRD_FeedMtrl(14, "生产补料单","PRD_FeedMtrl","FActualQty","","",0),
    PRD_MORPT(16, "生产汇报单","PRD_MORPT","FFinishQty","生产入库单","PRD_INSTOCK",1),
//    PRD_MORPT(16, "生产汇报单","PRD_MORPT","FFinishQty","生产入库单","PRD_INSTOCK",1),
//    STK_InspectionForm(20, "产品检验单","STK_InspectionForm","","","",0),
    //    PUR_MRB(2, "采购退料单","PUR_MRB","FRMREALQTY","","",1),