自动化立体仓库 - WMS系统
e0300cb5c16e9487d118361141e59f1d7a284b7a..4768cb6ab3ab41b08cb55bed49fd7db80c544952
6 小时以前 1
#
4768cb 对比 | 目录
6 小时以前 dubin
库存明细统计报表导出
d71313 对比 | 目录
9 小时以前 dubin
库存明细统计导出
e86267 对比 | 目录
9 小时以前 1
#
0f64ee 对比 | 目录
10个文件已修改
89 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/entity/LocDetl.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocDetlMapper.xml 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ManLocDetlMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/js/common.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/LocDetl.java
@@ -48,11 +48,11 @@
    private String maktx;
    @ApiModelProperty(value= "规格")
    @ExcelProperty("规格")
    //@ExcelProperty("规格")
    private String specs;
    @ApiModelProperty(value= "货品特征")
    @ExcelProperty("货品特征")
    //@ExcelProperty("货品特征")
    private String batch;
    @ApiModelProperty(value= "单据编号")
@@ -173,18 +173,21 @@
     * 备用1(PO)
     */
    @ApiModelProperty(value= "备用1")//PO
    @ExcelProperty("客户PO")
    private String standby1 = "1";
    /**
     * 备用2(UPC)
     */
    @ApiModelProperty(value= "备用2")//UPC
    @ExcelProperty("条码UPC")
    private String standby2 = "1";
    /**
     * 备用3(SKU)
     */
    @ApiModelProperty(value= "备用3")//SKU
    @ExcelProperty("客户SKU")
    private String standby3 = "1";
    /**
@@ -192,6 +195,7 @@
     */
    @ApiModelProperty(value= "备用1")
    @TableField("box_type1")
    @ExcelProperty("货主")
    private String boxType1 = "1";
    /**
@@ -206,6 +210,7 @@
     */
    @ApiModelProperty(value= "备用3")
    @TableField("box_type3")
    @ExcelProperty("采购单号")
    private String boxType3 = "1";
    /**
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -840,11 +840,15 @@
        if (ts == null) {
            throw new CoolException("timestamp 生成失败");
        }
        String barcode = String.valueOf(ts);
        if (barcode.length() > 16) {
            barcode = barcode.substring(0, 16);
        }
        basAgvMast.setBarcode(barcode);
        String locNo = null;
        String staNo = null;
        basAgvMast.setBarcode(Long.toString(ts));
        basAgvMast.setTaskNo(commonService.getWorkNo(0));
        basAgvMast.setSourceStaNo(param.getSourceStaNo());
        basAgvMast.setStaNo(param.getStaNo());
@@ -873,7 +877,7 @@
        basAgvMastService.insert(basAgvMast);
        bindCtnrAndBinParam bindParam = new bindCtnrAndBinParam();
        bindParam.setBarcode(Long.toString(ts));
        bindParam.setBarcode(basAgvMast.getBarcode());
        bindParam.setIndBind("1");
        bindParam.setFloorNo(basAgvMast.getFloorNo());
        bindParam.setLocNo(locNo);
src/main/java/com/zy/asrs/task/handler/WrkMastAgvHandler.java
@@ -24,6 +24,8 @@
    @Autowired
    private BasAgvMastService basAgvMastService;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private BasAgvLocDetlService basAgvLocDetlService;
    @Autowired
    private BasAgvWrkDetlService basAgvWrkDetlService;
@@ -35,13 +37,17 @@
    private OpenService openService;
    public ReturnT<String> start(BasAgvMast basAgvMast) {
    public ReturnT<String>                           start(BasAgvMast basAgvMast) {
        try {
            Date now = new Date();
            switch (basAgvMast.getIoType()){
                case 0:
                    LocMast sourceLoc0 = locMastService.selectById(basAgvMast.getSourceLocNo());
                    locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc0.getLocNo()));
                    if(basAgvMast.getFloorNo() == 4){
                        basAgvMast.setBarcode(sourceLoc0.getBarcode());
                        basAgvMastService.updateById(basAgvMast);
                    }
                    sourceLoc0.setLocSts("O");
                    sourceLoc0.setBarcode("");
                    sourceLoc0.setModiTime(now);
@@ -51,7 +57,6 @@
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return FAIL.setMsg("出库 ===>> 修改源库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getSourceLocNo() + "]");
                    }
                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
                    basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                    basAgvMast.setStatus(3);
@@ -67,6 +72,7 @@
                    }
                    // 修改目标库位状态 ==> .locSts
                    locMast1.setLocSts("F");
                    locMast1.setBarcode(sourceLoc1.getBarcode());
                    locMast1.setIoTime(now);
                    locMast1.setModiTime(now);
                    if (!locMastService.updateById(locMast1)) {
@@ -74,21 +80,12 @@
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]");
                    }
                    try{
                        // 转移库存明细数据: 库存号 由工作档源库位变为目标库位
                        locDetlService.updateLocNo(basAgvMast.getLocNo(), basAgvMast.getSourceLocNo());
//                        if (!) {
//                            exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
//                            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                            return FAIL.setMsg("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
//                        }
                    } catch (Exception e) {
                        return FAIL.setMsg(e.getMessage());
                    }
                    if (null != sourceLoc1) {
                        sourceLoc1.setBarcode("");
                        sourceLoc1.setLocSts("O");
@@ -104,9 +101,9 @@
                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo()));
                    basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    basAgvMast.setStatus(3);
                    basAgvMast.setStatus(4);
                    basAgvMastService.updateById(basAgvMast);
                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
//                    openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo()));
                    break;
                case 2:
                    List<LocDetl> locDetls2 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo()));
@@ -189,7 +186,7 @@
                    basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo()));
                    basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo()));
                    basAgvMast.setStatus(3);
                    if(basAgvMast.getIoType() == 2 && basAgvMast.getFloorNo() == 2){
                    if(basAgvMast.getFloorNo() == 2 || basAgvMast.getFloorNo() == 3){
                        basAgvMast.setStatus(4);
                    }
                    basAgvMastService.updateById(basAgvMast);
src/main/java/com/zy/asrs/task/kingdee/ReviewOrderSyncScheduler.java
@@ -32,7 +32,7 @@
    @Value("${erp.switch.ReviewOrderSwitch}")
    private boolean ReviewOrderSwitch;
    @Scheduled(cron = "0/3 * * * * ? ")
    @Scheduled(cron = "0/20 * * * * ?")
    @Async("orderThreadPool")
    public void completeAndReport(){
        if(!ReviewOrderSwitch){
src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java
@@ -32,7 +32,7 @@
    @Value("${erp.switch.ReviewOrderSwitch}")
    private boolean ReviewOrderSwitch;
    @Scheduled(cron = "0/3 * * * * ? ")
    @Scheduled(cron = "0/20 * * * * ?")
    @Async("orderThreadPool")
    public void completeAndReport(){
        if(!ReviewOrderSwitch){
src/main/java/com/zy/asrs/task/kingdee/SubmitOrderSyncScheduler.java
@@ -34,7 +34,7 @@
    @Value("${erp.switch.ReviewOrderSwitch}")
    private boolean ReviewOrderSwitch;
    @Scheduled(cron = "0/3 * * * * ? ")
    @Scheduled(cron = "0/20 * * * * ?")
    @Async("orderThreadPool")
    public void completeAndReport(){
        if(!ReviewOrderSwitch){
src/main/java/com/zy/asrs/task/kingdee/handler/SaveOrderSyncHandler.java
@@ -98,11 +98,12 @@
                    if (orderDetl.getQty() == 0) {
                        continue;
                    }
                    JSONArray idArr = new JSONArray();
                    idArr.add(0L);   // ✅ 注意必须是 Long 类型的 0L
//                    JSONArray idArr = new JSONArray();
//                    idArr.add(0L);   // ✅ 注意必须是 Long 类型的 0L
//                    Double reportNum = orderDetl.getQty() - orderDetl.getWorkQty();//上报数量减去已上报数量
                    // 创建 billentry_lk 对象
                    JSONObject billentryLk = new JSONObject()
                            .fluentPut("id", idArr)
                            .fluentPut("id", 0L)
                            .fluentPut("seq", orderDetl.getLineNumber())
                            .fluentPut("billentry_lk_stableid", 677270092232273922L)
                            .fluentPut("billentry_lk_sbillid", Long.parseLong(order.getItemName()))  // 主单ID
@@ -112,7 +113,7 @@
                    billentryLkArray.add(billentryLk);
                    // 创建 billentry 对象,填充缺失的字段
                    JSONObject billentry = new JSONObject()
                            .fluentPut("id", idArr)
                            .fluentPut("id", 0L)
                            .fluentPut("warehouse_number", orderDetl.getManu())  // 仓库编号
                            .fluentPut("invstatus_number", "110")  // 库存状态
                            .fluentPut("invtype_number", "110")  // 库存类型
@@ -121,8 +122,9 @@
                            .fluentPut("qty", orderDetl.getQty())  // 数量
                            .fluentPut("material_number", orderDetl.getMatnr())  // 物料编号
                            .fluentPut("billentry_lk", billentryLkArray);
                    billentryArray.add(billentry);
//                    orderDetl.setWorkQty(orderDetl.getQty());
//                    orderDetlService.updateById(orderDetl);//将上报数覆盖到历史上
                }
                Date now = new Date();
                return new JSONObject()
@@ -207,13 +209,10 @@
                        JSONObject resultItem = resultArray.getJSONObject(i);
                        String billNo = resultItem.getString("number");  // 获取返回的单据号
                        String billId = resultItem.getString("id");      // 获取返回的ID
                        order.setNumber(billId);
                        orderService.updateById(order);
                        log.info("订单号 {} 与返回的单据号匹配,设置订单 ID 为 {}", order.getOrderNo(), billId);
                        // 判断返回的单据号与订单号是否一致
                        if (billNo != null && billNo.equals(order.getOrderNo())) {
                            // 如果一致,设置订单的 number
                            order.setNumber(billId);
                            log.info("订单号 {} 与返回的单据号匹配,设置订单 ID 为 {}", order.getOrderNo(), billId);
                        }
                    }
                } else {
                    log.error("接口调用失败,失败的操作数量: {}", failCount);
src/main/resources/mapper/LocDetlMapper.xml
@@ -414,9 +414,15 @@
        ROW_NUMBER() over (order by sum(a.anfme) desc) as row
        , a.matnr
        , sum(a.anfme) as anfme
        , a.order_no as orderNo
        , a.standby1
        , a.standby2
        , a.standby3
        , a.box_type1 as boxType1
        , a.box_type3 as boxType3
        from asr_loc_detl a
        where 1=1
        group by a.matnr
        group by a.matnr,a.order_no,a.box_type3,a.standby1,a.standby2,a.standby3,a.box_type1
    </select>
    <select id="selectPakoutByRule" resultMap="BaseResultMap">
src/main/resources/mapper/ManLocDetlMapper.xml
@@ -301,6 +301,10 @@
        update man_loc_detl set loc_no = #{locNo}
        where node_id = #{nodeId}
    </update>
    <update id="updateLocNo0">
        update man_loc_detl set loc_no = #{newLocNo}
        where loc_no = #{oldLocNo}
    </update>
    <delete id="deleteLocNo0">
        delete from man_loc_detl
src/main/webapp/static/js/common.js
@@ -234,7 +234,7 @@
    ,{field: 'anfme', align: 'center',title: '数量', hide: false}
    ,{field: 'zpallet', align: 'center',title: '托盘条码', hide: false}
    // ,{field: 'specs', align: 'center',title: '规格', hide: true}
    ,{field: 'boxType3', align: 'center',title: '采购单号', hide: true}
    // ,{field: 'model', align: 'center',title: '代码', hide: true}
    // ,{field: 'color', align: 'center',title: '颜色', hide: true}
    // ,{field: 'brand', align: 'center',title: '品牌', hide: true}