*
lsh
2025-11-05 621dbf8001b90aa0c253eeb3ba4d38b941d8442e
*
3个文件已修改
133 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/BarcodeUtils.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -4,13 +4,16 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.R;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.controller.CrnController;
import com.zy.asrs.controller.TaskWrkController;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.domain.enums.WorkNoType;
import com.zy.asrs.domain.param.CrnOperatorParam;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.CarryParam;
import com.zy.asrs.entity.param.TaskCreateParam;
import com.zy.asrs.mapper.*;
import com.zy.asrs.service.*;
@@ -70,6 +73,8 @@
    private TaskWrkMapper taskWrkMapper;
    @Autowired
    private TaskWrkService taskWrkService;
    @Autowired
    private TaskWrkController taskWrkController;
    @Autowired
    private StaDescMapper staDescMapper;
    @Autowired
@@ -2897,7 +2902,7 @@
                    if (Cools.isEmpty(taskWrk1)){
                        continue;
                    }
                    if (taskWrk1.getWrkSts() == 2){
                    if (taskWrk1.getIoType() == 3 && taskWrk1.getWrkSts()<3){
                        taskWrk = taskWrk1;
                        break;
                    }
@@ -3185,10 +3190,23 @@
                            if (offer) {
                                log.info("下发输送线任务成功:taskWrk:" + JSON.toJSONString(taskWrk));
                                Date now = new Date();
                                taskWrk.setStatus(TaskStatusType.OVER3.id);
//                                taskWrk.setStatus(TaskStatusType.OVER3.id);
                                taskWrk.setStatus(TaskStatusType.OVER.id);//手动完成任务
                                taskWrk.setWrkSts(14);
                                taskWrk.setModiTime(now);
                                taskWrk.setCompleteTime(now);
                                LocMast locMast=locMastService.selectByLocNo(taskWrk.getStartPoint());
                                if(Cools.isEmpty(locMast)){
                                    R.error("没有找到该库位") ;
                                }
                                locMast.setLocSts("O");
                                locMast.setModiTime(now);
                                locMast.setModiTime(now);
                                locMastService.updateById(locMast);
                                taskWrkService.updateById(taskWrk);
                            } else {
                                log.error("下发输送线任务失败:taskWrk:" + JSON.toJSONString(taskWrk));
@@ -3339,5 +3357,50 @@
            }
        }
    }
    public void locMastTaskDemo(){
        try{
            for (CrnSlave crnSlave : slaveProperties.getCrn()) {
                try{
                    // 获取堆垛机信息
                    CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId());
                    CrnProtocol crnProtocol = crnThread.getCrnProtocol();
                    if (crnProtocol == null) {
                        continue;
                    }
                    for (String locNo : crnProtocol.getLocMastDemoList()){
                        LocMast locMast = locMastService.selectByLocNo(locNo);
                        if (locMast.getLocSts().equals("F")){
                            CarryParam carryParam = new CarryParam();
                            carryParam.setTaskNo(locNo);
                            carryParam.setBarcode(locNo);
                            carryParam.setIoType(1);//任务类型=》1:出库、2:移库、3:入库   ====转换为====>  1:入库,2:出库,3:移库
                            carryParam.setTaskPriority(1);
                            carryParam.setTargetPoint("1012");
                            carryParam.setStartPoint(BarcodeUtils.formatCode(locNo));
                            carryParam.setMeno("Demo");
                            taskWrkController.addTaskPoint(carryParam);
                            Thread.sleep(50);
                        } else if (locMast.getLocSts().equals("O")){
                            CarryParam carryParam = new CarryParam();
                            carryParam.setTaskNo(locNo);
                            carryParam.setBarcode(locNo);
                            carryParam.setIoType(3);//任务类型=》1:出库、2:移库、3:入库   ====转换为====>  1:入库,2:出库,3:移库
                            carryParam.setTaskPriority(1);
                            carryParam.setStartPoint("1012");
                            carryParam.setTargetPoint(BarcodeUtils.formatCode(locNo));
                            carryParam.setMeno("Demo");
                            taskWrkController.addTaskPoint(carryParam);
                            Thread.sleep(50);
                        }
                    }
                } catch (Exception e){
                }
            }
        } catch (Exception e){
        }
    }
}
src/main/java/com/zy/asrs/utils/BarcodeUtils.java
@@ -52,4 +52,40 @@
                return Integer.parseInt(staNo);
        }
    }
    public static String formatCode(String input) {
        if (input == null || input.length() != 7 || !input.matches("\\d+")) {
            throw new IllegalArgumentException("输入必须是7位数字");
        }
        // 根据示例分析拆分规则:
        // "0500708" -> "05", "07", "08" (跳过第3位)
        // "0201001" -> "02", "10", "01"
        // "1001010" -> "10", "10", "10"
        // "0500210" -> "05", "02", "10"
        // 拆分规则:第1-2位,第4-5位,第6-7位(跳过第3位)
        String part1 = input.substring(0, 2);  // 前两位
        String part2 = input.substring(3, 5);  // 第4-5位(跳过第3位)
        String part3 = input.substring(5, 7);  // 第6-7位
        // 去除前导零并格式化为两位数
        String formattedPart1 = String.format("%02d", Integer.parseInt(part1));
        String formattedPart2 = String.format("%02d", Integer.parseInt(part2));
        String formattedPart3 = String.format("%02d", Integer.parseInt(part3));
        return "F-F01-" + formattedPart1 + "-" + formattedPart2 + "-" + formattedPart3;
    }
    public static void main(String[] args) {
        // 测试所有示例
        System.out.println("0500708 -> " + formatCode("0500708")); // F-F01-05-07-08
        System.out.println("0201001 -> " + formatCode("0201001")); // F-F01-02-10-01
        System.out.println("1001010 -> " + formatCode("1001010")); // F-F01-10-10-10
        System.out.println("0500210 -> " + formatCode("0500210")); // F-F01-05-02-10
        // 验证长度是否为14个字符
        String result = formatCode("1000110");
        System.out.println("结果长度: " + result.length() + " 字符: " + result);
    }
}
src/main/java/com/zy/core/MainProcess.java
@@ -25,6 +25,7 @@
    private Thread thread2;
    private Thread thread3;
    private Thread thread4;
    private Thread thread5;
    /**
     * =====>>  开始工作
@@ -35,6 +36,9 @@
        thread2 = new Thread(this::crnAndDevOtherRun);
        thread2.start();
        thread5 = new Thread(this::demoRun5);
        thread5.start();
        thread3 = new Thread(this::demoRun);
        thread3.start();
@@ -128,6 +132,31 @@
        }
    }
    private void demoRun5() {
        while (!Thread.currentThread().isInterrupted()) {
            try {
                // 间隔
                Thread.sleep(200);
                // 系统运行状态判断
                if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
                    continue;
                }
                // 系统演示模式运行状态判断
                if (!SystemProperties.WCS_RUNNING_STATUS_DEMO.get()) {
                    continue;
                }
                // 系统演示模式运行状态判断
                if (SystemProperties.WCS_RUNNING_STATUS_DEMO_VALUE != 2) {
                    continue;
                }
                // 入库  ===>> 执行对工作档的完成操作
                mainService.locMastTaskDemo();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    private void demoOpenRun() {
        while (!Thread.currentThread().isInterrupted()) {
            try {
@@ -183,6 +212,7 @@
        if (thread2 != null) thread2.interrupt();
        if (thread3 != null) thread3.interrupt();
        if (thread4 != null) thread4.interrupt();
        if (thread5 != null) thread5.interrupt();
    }
}