自动化立体仓库 - WCS系统
aa641ae9531ff38a80316cb4f72fa8ece43d7029..64f4079a20eb4499845182a5b91abbbbcf1b44fc
11 小时以前 Junjie
#
64f407 对比 | 目录
11 小时以前 Junjie
#
257c15 对比 | 目录
11 小时以前 Junjie
#
ccc33d 对比 | 目录
11 小时以前 Junjie
#
d26899 对比 | 目录
11 小时以前 Junjie
#
753071 对比 | 目录
11 小时以前 Junjie
#
7c69a5 对比 | 目录
12 小时以前 Junjie
#
45d301 对比 | 目录
12 小时以前 Junjie
#
e377f0 对比 | 目录
18 小时以前 Junjie
#
90acb0 对比 | 目录
2个文件已添加
46个文件已删除
24个文件已修改
6066 ■■■■■ 已修改文件
src/main/java/com/zy/asrs/controller/ConsoleController.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/CrnController.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/LocDetlController.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/LocMastController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/OpenController.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/ReportQueryController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/TaskWrkController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/WrkDetlController.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/WrkDetlLogController.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/WrkMastController.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/WrkMastLogController.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/domain/enums/TaskStatusType.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/LocDetl.java 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/MatCode.java 593 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/RowLastno.java 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/TaskWrkLog.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ToAgvDTO.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/ToWmsDTO.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WaitPakin.java 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkDetl.java 359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkDetlLog.java 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMast.java 540 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/entity/WrkMastLog.java 546 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/MatCodeMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/RowLastnoMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WaitPakinMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkDetlLogMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/LocDetlService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/MatCodeService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/RowLastnoService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WaitPakinService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkDetlLogService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkDetlService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkMastLogService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/WrkMastService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java 372 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/MatCodeServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/RowLastnoServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WaitPakinServiceImpl.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/NotifyScheduler.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/task/TaskLogScheduler.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/utils/VersionUtils.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/CommonService.java 277 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/service/WmsService.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/MainProcess.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/LedThread.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensCrnThread.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/core/thread/SiemensDevpThread.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/application.yml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/LocDetlMapper.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/MatCodeMapper.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/RowLastnoMapper.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WaitPakinMapper.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkDetlMapper.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WrkMastMapper.xml 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/static/wms/js/locMast/locMast.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/webapp/views/locMast/locMast.html 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/cool-framework-install.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
version/framework-3.4.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/asrs/controller/ConsoleController.java
@@ -20,7 +20,7 @@
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.DeviceErrorService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.service.TaskWrkService;
import com.zy.common.CodeRes;
import com.zy.core.CrnThread;
import com.zy.core.DevpThread;
@@ -57,8 +57,6 @@
    @Autowired
    private SlaveProperties slaveProperties;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private BasDevpService basDevpService;
    @Autowired
    private LocMastMapper locMastMapper;
@@ -70,6 +68,8 @@
    private DeviceErrorService deviceErrorService;
    @Autowired
    private BasCrnpService basCrnpService;
    @Autowired
    private TaskWrkService taskWrkService;
    @PostMapping("/system/running/status")
    @ManagerAuth(memo = "系统运行状态")
@@ -151,9 +151,9 @@
                vo.setCrnStatus(CrnStatusType.MACHINE_ERROR);
            } else {
                if (crnProtocol.getTaskNo()>0) {
                    WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo());
                    if (wrkMast != null) {
                        vo.setCrnStatus(CrnStatusType.process(wrkMast.getIoType()));
                    TaskWrk taskWrk = taskWrkService.selectByWrkNo(crnProtocol.getTaskNo().intValue());
                    if (taskWrk != null) {
                        vo.setCrnStatus(CrnStatusType.process(taskWrk.getIoType()));
                    } else {
                        vo.setCrnStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO: CrnStatusType.MACHINE_UN_AUTO);
                    }
@@ -279,14 +279,14 @@
                    vo.setWorkNo(staProtocol.getWorkNo());   // 工作号
                    if (staProtocol.getWorkNo() > 0) {
                        WrkMast wrkMast = wrkMastService.selectById(staProtocol.getWorkNo());
                        if (wrkMast != null) {
                            vo.setWrkSts(wrkMast.getWrkSts$());   // 工作状态
                            vo.setIoType(wrkMast.getIoType$());   //  入出库类型
                            vo.setSourceStaNo(wrkMast.getSourceStaNo$());
                            vo.setStaNo(wrkMast.getStaNo$());
                            vo.setSourceLocNo(wrkMast.getSourceLocNo$());
                            vo.setLocNo(wrkMast.getLocNo$());
                        TaskWrk taskWrk = taskWrkService.selectByWrkNo(staProtocol.getWorkNo().intValue());
                        if (taskWrk != null) {
                            vo.setWrkSts(taskWrk.getWrkSts$());   // 工作状态
                            vo.setIoType(taskWrk.getIoType$());   //  入出库类型
                            vo.setSourceStaNo(null);
                            vo.setStaNo(null);
                            vo.setSourceLocNo(taskWrk.getStartPoint());
                            vo.setLocNo(taskWrk.getTargetPoint());
                        }
                    }
@@ -330,14 +330,14 @@
                }
                if (crnProtocol.getTaskNo() > 0) {
                    WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo());
                    if (wrkMast != null) {
                        vo.setSourceStaNo(wrkMast.getSourceStaNo$());
                        vo.setStaNo(wrkMast.getStaNo$());
                        vo.setWrkSts(wrkMast.getWrkSts$());   // 工作状态
                        vo.setIoType(wrkMast.getIoType$());   //  入出库类型
                        vo.setSourceLocNo(wrkMast.getSourceLocNo$());
                        vo.setLocNo(wrkMast.getLocNo$());
                    TaskWrk taskWrk = taskWrkService.selectByWrkNo(crnProtocol.getTaskNo().intValue());
                    if (taskWrk != null) {
                        vo.setSourceStaNo(null);
                        vo.setStaNo(null);
                        vo.setWrkSts(taskWrk.getWrkSts$());   // 工作状态
                        vo.setIoType(taskWrk.getIoType$());   //  入出库类型
                        vo.setSourceLocNo(taskWrk.getStartPoint());
                        vo.setLocNo(taskWrk.getTargetPoint());
                        vo.setCrnStatus(crnProtocol.getStatusType().desc);
                        vo.setError("");    // todo
                    }
src/main/java/com/zy/asrs/controller/CrnController.java
@@ -17,7 +17,7 @@
import com.zy.asrs.mapper.BasCrnErrorMapper;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WrkMastService;
import com.zy.asrs.service.TaskWrkService;
import com.zy.asrs.utils.CommandUtils;
import com.zy.asrs.utils.CrnOperaUtils;
import com.zy.core.CrnThread;
@@ -58,8 +58,6 @@
    @Autowired
    private SlaveProperties slaveProperties;
    @Autowired
    private WrkMastService wrkMastService;
    @Autowired
    private BasCrnErrorMapper basCrnErrorMapper;
    @Autowired
    private BasCrnpService basCrnpService;
@@ -67,6 +65,8 @@
    private LocMastService locMastService;
    @Autowired
    private CrnOperaUtils crnOperaUtils;
    @Autowired
    private TaskWrkService taskWrkService;
    @ManagerAuth(memo = "进行中的命令")
@@ -190,13 +190,13 @@
            vo.setWorkNo(crnProtocol.getTaskNo());  //  任务号
            if (crnProtocol.getTaskNo()>0) {
                WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo());
                if (wrkMast != null) {
                    vo.setStatus(CrnStatusType.process(wrkMast.getIoType()).getDesc());   //  模式状态
                    vo.setSourceStaNo(wrkMast.getSourceStaNo$());    //  源站
                    vo.setStaNo(wrkMast.getStaNo$());   //  目标站
                    vo.setSourceLocNo(wrkMast.getSourceLocNo());    //  源库位
                    vo.setLocNo(wrkMast.getLocNo());    //  目标库位
                TaskWrk taskWrk = taskWrkService.selectByWrkNo(crnProtocol.getTaskNo().intValue());
                if (taskWrk != null) {
                    vo.setStatus(CrnStatusType.process(taskWrk.getIoType()).getDesc());   //  模式状态
                    vo.setSourceStaNo(null);    //  源站
                    vo.setStaNo(null);   //  目标站
                    vo.setSourceLocNo(taskWrk.getStartPoint());    //  源库位
                    vo.setLocNo(taskWrk.getTargetPoint());    //  目标库位
                }
            } else {
                vo.setStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO.getDesc(): CrnStatusType.MACHINE_UN_AUTO.getDesc());   //  模式状态
@@ -231,13 +231,13 @@
        vo.setWorkNo(crnProtocol.getTaskNo());  //  任务号
        if (crnProtocol.getTaskNo()>0) {
            WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo());
            if (wrkMast != null) {
                vo.setStatus(CrnStatusType.process(wrkMast.getIoType()).getDesc());   //  模式状态
                vo.setSourceStaNo(wrkMast.getSourceStaNo$());    //  源站
                vo.setStaNo(wrkMast.getStaNo$());   //  目标站
                vo.setSourceLocNo(wrkMast.getSourceLocNo());    //  源库位
                vo.setLocNo(wrkMast.getLocNo());    //  目标库位
            TaskWrk taskWrk = taskWrkService.selectByWrkNo(crnProtocol.getTaskNo().intValue());
            if (taskWrk != null) {
                vo.setStatus(CrnStatusType.process(taskWrk.getIoType()).getDesc());   //  模式状态
                vo.setSourceStaNo(null);    //  源站
                vo.setStaNo(null);   //  目标站
                vo.setSourceLocNo(taskWrk.getStartPoint());    //  源库位
                vo.setLocNo(taskWrk.getTargetPoint());    //  目标库位
            }
        } else {
            vo.setStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO.getDesc(): CrnStatusType.MACHINE_UN_AUTO.getDesc());   //  模式状态
@@ -274,13 +274,13 @@
            vo.setWorkNo(crnProtocol.getTaskNo());  //  任务号
            if (crnProtocol.getTaskNo()>0) {
                WrkMast wrkMast = wrkMastService.selectById(crnProtocol.getTaskNo());
                if (wrkMast != null) {
                    vo.setDeviceStatus(CrnStatusType.process(wrkMast.getIoType()).getDesc());   //  模式状态
                    vo.setSourceStaNo(wrkMast.getSourceStaNo$());    //  源站
                    vo.setStaNo(wrkMast.getStaNo$());   //  目标站
                    vo.setSourceLocNo(wrkMast.getSourceLocNo());    //  源库位
                    vo.setLocNo(wrkMast.getLocNo());    //  目标库位
                TaskWrk taskWrk = taskWrkService.selectByWrkNo(crnProtocol.getTaskNo().intValue());
                if (taskWrk != null) {
                    vo.setDeviceStatus(CrnStatusType.process(taskWrk.getIoType()).getDesc());   //  模式状态
                    vo.setSourceStaNo(null);    //  源站
                    vo.setStaNo(null);   //  目标站
                    vo.setSourceLocNo(taskWrk.getStartPoint());    //  源库位
                    vo.setLocNo(taskWrk.getTargetPoint());    //  目标库位
                }
            } else {
                vo.setDeviceStatus(crnProtocol.modeType.equals(CrnModeType.AUTO)? CrnStatusType.MACHINE_AUTO.getDesc(): CrnStatusType.MACHINE_UN_AUTO.getDesc());   //  模式状态
src/main/java/com/zy/asrs/controller/LocDetlController.java
File was deleted
src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -10,13 +10,10 @@
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.param.LocMastInitParam;
import com.zy.asrs.service.LocDetlService;
import com.zy.asrs.service.LocMastService;
import com.zy.common.entity.Parameter;
import com.zy.common.model.Shelves;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -28,8 +25,6 @@
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private LocDetlService locDetlService;
    @RequestMapping(value = "/locMast/init/pwd")
    public R locMastInitPwd(@RequestParam(required = false) String pwd) {
@@ -203,7 +198,6 @@
            }
        }
        locMastService.delete(new EntityWrapper<>());
        locDetlService.delete(new EntityWrapper<>());
        locMastService.insertBatch(list);
        return R.ok("初始化成功");
    }
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -14,7 +14,6 @@
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
@@ -47,9 +46,6 @@
    private LocMastService locMastService;
    @Autowired
    private BasCrnErrorService basCrnErrorService;
    @Value("${wms.url}")
    private String wmsUrl;
    private static final boolean auth = true;
@@ -153,12 +149,12 @@
                return R.error("条码[barcode]不能为空");
            }
            openService.taskCreateIn(param);
            HashMap<String, Object> result = openService.taskCreateIn(param);
            return R.ok().add(result);
        }catch (Exception e){
            log.error("任务下发异常"+e);
            return R.error();
        }
        return R.ok();
        return R.error();
    }
    //查询任务详情
src/main/java/com/zy/asrs/controller/ReportQueryController.java
@@ -7,7 +7,6 @@
import com.core.common.R;
import com.zy.asrs.entity.*;
import com.zy.asrs.mapper.ReportQueryMapper;
import com.zy.asrs.service.LocDetlService;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
@@ -29,8 +28,6 @@
@RequestMapping("/report")
public class ReportQueryController extends BaseController {
    @Autowired
    private LocDetlService locDetlService;
    @Autowired
    private ReportQueryMapper reportQueryMapper;
src/main/java/com/zy/asrs/controller/TaskWrkController.java
@@ -1,30 +1,22 @@
package com.zy.asrs.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.common.DateUtils;
import com.zy.asrs.domain.dto.NotifyCustomDataDto;
import com.zy.asrs.domain.enums.NotifyMsgType;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.service.ApiLogService;
import com.zy.asrs.service.CommandInfoService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.TaskWrkService;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.asrs.utils.NotifyUtils;
import com.zy.common.utils.HttpHandler;
import com.zy.common.web.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@@ -33,20 +25,10 @@
@Slf4j
public class TaskWrkController extends BaseController {
    @Value("${wms.url}")
    private String wmsUrl;
    @Autowired
    private TaskWrkService taskWrkService;
    @Autowired
    private CommandInfoService commandInfoService;
    @Autowired
    private LocMastService locMastService;
    @Value("${wms.TaskExecCallback}")
    private String TaskExecCallback;
    @Autowired
    private ApiLogService apiLogService;
    @Autowired
    private NotifyUtils notifyUtils;
    @RequestMapping(value = "/taskWrk/{wrkNo}/auth")
    @ManagerAuth
@@ -173,45 +155,10 @@
    @ManagerAuth(memo = "手动完成任务")
    public R complete(@RequestParam String taskNo) {
        TaskWrk taskWrk = taskWrkService.selectByTaskNo(taskNo);
        if (Cools.isEmpty(taskWrk) || taskWrk.getStatus()>=3){
            return R.error("已完结或已取消") ;
        if (Cools.isEmpty(taskWrk) || taskWrk.getStatus() >= 3) {
            return R.error("已完结或已取消");
        }
        LocMast locMast = new LocMast();
        if(taskWrk.getIoType()==1){//入库任务完成库位为F
            locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
            if(Cools.isEmpty(locMast)){
              R.error("没有找到该库位") ;
            }
            locMast.setLocSts("F");
            locMast.setModiTime(new Date());
            locMast.setBarcode(taskWrk.getBarcode());
        }else if(taskWrk.getIoType()==2){//出库任务完成库位为O
            locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
            if(Cools.isEmpty(locMast)){
                R.error("没有找到该库位") ;
            }
            locMast.setLocSts("O");
            locMast.setModiTime(new Date());
        }else if(taskWrk.getIoType()==3){
            locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
            if(Cools.isEmpty(locMast)){
                R.error("没有找到该库位") ;
            }
            locMast.setLocSts("O");
            locMast.setModiTime(new Date());
            locMastService.updateById(locMast);
            locMast=locMastService.selectByLocNo(taskWrk.getTargetPoint());
            if(Cools.isEmpty(locMast)){
                R.error("没有找到该库位") ;
            }
            locMast.setLocSts("F");
            locMast.setModiTime(new Date());
            locMast.setBarcode(taskWrk.getBarcode());
        }
        locMastService.updateById(locMast);
        taskWrk.setStatus(7);//手动完成任务
        taskWrk.setStatus(TaskStatusType.MANUAL_OVER.id);//手动完成任务
        taskWrk.setModiTime(new Date());
        taskWrkService.updateById(taskWrk);
        return R.ok();
src/main/java/com/zy/asrs/controller/WrkDetlController.java
File was deleted
src/main/java/com/zy/asrs/controller/WrkDetlLogController.java
File was deleted
src/main/java/com/zy/asrs/controller/WrkMastController.java
File was deleted
src/main/java/com/zy/asrs/controller/WrkMastLogController.java
File was deleted
src/main/java/com/zy/asrs/domain/enums/TaskStatusType.java
@@ -6,7 +6,8 @@
    DISTRIBUTE(2,"派发"),
    COMPLETE(3,"命令完成"),
    CANCEL(4,"取消"),
    OVER(5,"完结")
    OVER(5,"完结"),
    MANUAL_OVER(7,"手动完结"),
    ;
    public Integer id;
src/main/java/com/zy/asrs/entity/LocDetl.java
File was deleted
src/main/java/com/zy/asrs/entity/MatCode.java
File was deleted
src/main/java/com/zy/asrs/entity/RowLastno.java
File was deleted
src/main/java/com/zy/asrs/entity/TaskWrkLog.java
@@ -1,31 +1,15 @@
package com.zy.asrs.entity;
import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField;
import com.core.common.Cools;
import com.baomidou.mybatisplus.annotations.TableField;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import com.core.common.SpringUtils;
import com.zy.asrs.service.BasWrkIotypeService;
import com.zy.asrs.entity.BasWrkIotype;
import com.core.common.SpringUtils;
import com.zy.system.service.UserService;
import com.zy.system.entity.User;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.core.common.SpringUtils;
import com.zy.asrs.service.BasWrkStatusService;
import com.zy.asrs.entity.BasWrkStatus;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.baomidou.mybatisplus.annotations.TableName;
src/main/java/com/zy/asrs/entity/ToAgvDTO.java
File was deleted
src/main/java/com/zy/asrs/entity/ToWmsDTO.java
File was deleted
src/main/java/com/zy/asrs/entity/WaitPakin.java
File was deleted
src/main/java/com/zy/asrs/entity/WrkDetl.java
File was deleted
src/main/java/com/zy/asrs/entity/WrkDetlLog.java
File was deleted
src/main/java/com/zy/asrs/entity/WrkMast.java
File was deleted
src/main/java/com/zy/asrs/entity/WrkMastLog.java
File was deleted
src/main/java/com/zy/asrs/mapper/LocDetlMapper.java
File was deleted
src/main/java/com/zy/asrs/mapper/MatCodeMapper.java
File was deleted
src/main/java/com/zy/asrs/mapper/RowLastnoMapper.java
File was deleted
src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java
@@ -2,7 +2,6 @@
import com.zy.asrs.entity.TaskWrk;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.zy.asrs.entity.WrkMast;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
src/main/java/com/zy/asrs/mapper/WaitPakinMapper.java
File was deleted
src/main/java/com/zy/asrs/mapper/WrkDetlLogMapper.java
File was deleted
src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
File was deleted
src/main/java/com/zy/asrs/mapper/WrkMastLogMapper.java
File was deleted
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
File was deleted
src/main/java/com/zy/asrs/service/LocDetlService.java
File was deleted
src/main/java/com/zy/asrs/service/MatCodeService.java
File was deleted
src/main/java/com/zy/asrs/service/RowLastnoService.java
File was deleted
src/main/java/com/zy/asrs/service/WaitPakinService.java
File was deleted
src/main/java/com/zy/asrs/service/WrkDetlLogService.java
File was deleted
src/main/java/com/zy/asrs/service/WrkDetlService.java
File was deleted
src/main/java/com/zy/asrs/service/WrkMastLogService.java
File was deleted
src/main/java/com/zy/asrs/service/WrkMastService.java
File was deleted
src/main/java/com/zy/asrs/service/impl/BasCrnpServiceImpl.java
@@ -6,19 +6,17 @@
import com.zy.asrs.entity.BasCrnp;
import com.zy.asrs.mapper.BasCrnpMapper;
import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.WrkMastService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Slf4j
@Service("basCrnpService")
public class BasCrnpServiceImpl extends ServiceImpl<BasCrnpMapper, BasCrnp> implements BasCrnpService {
    @Value("${wms.count}")
    private Integer maxCount;
    @Autowired
    private WrkMastService wrkMastService;
    @Override
    public BasCrnp checkSiteStatus(Integer crnId) {
        BasCrnp crnp = this.selectById(crnId);
src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
@@ -4,20 +4,14 @@
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.core.exception.CoolException;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.mapper.BasDevpMapper;
import com.zy.asrs.service.BasDevpService;
import com.zy.asrs.service.WrkMastService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("basDevpService")
public class BasDevpServiceImpl extends ServiceImpl<BasDevpMapper, BasDevp> implements BasDevpService {
    @Autowired
    private WrkMastService wrkMastService;
    @Override
    public List<Integer> getAvailableInSite() {
@@ -59,9 +53,6 @@
            }
            if(station.getWrkNo()!=null && station.getWrkNo()>0) {
                throw new CoolException(devpNo+"站点已有工作号");
            }
            if(wrkMastService.getWorkingMast(devpNo)>0){
                throw new CoolException(devpNo+"站点不能同时生成两笔入库工作档");
            }
        }
        return station;
src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
File was deleted
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -58,8 +58,6 @@
    @Autowired
    private SlaveProperties slaveProperties;
    @Autowired
    private WrkMastMapper wrkMastMapper;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private BasCrnpService basCrnpService;
@@ -93,8 +91,6 @@
    private NotifyUtils notifyUtils;
    @Value("${wms.count}")
    private Integer maxCount;
    @Autowired
    private WrkMastService wrkMastService;
    @Value("${wms.url}")
    private String wmsUrl;
    @Value("${wms.inboundTaskApplyPath}")
@@ -207,11 +203,43 @@
                                    continue;
                                }
                                taskWrk = createTask1(result, barcode);
                                if (!taskWrkService.insert(taskWrk)) {
                                    log.info("任务:" + result.getTaskNo() + "任务创建失败");
                                String locNo = Utils.getLocNo(result.getRow(), result.getFloor(), result.getColumn());
                                LocMast locMast = locMastService.selectByLocNo(locNo);
                                if (locMast == null) {
                                    log.info(locNo + "库位不存在");
                                    continue;
                                }
                                if (!locMast.getLocSts().equals("O")) {
                                    log.info(locNo + "库位不处于空库位");
                                    continue;
                                }
                                Date now = new Date();
                                taskWrk = new TaskWrk();
                                taskWrk.setTaskNo(result.getTaskNo());//任务号
                                taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type));//获取入库工作号
                                taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
                                taskWrk.setWrkSts(2);//2.设备上走
                                taskWrk.setCreateTime(now);
                                    taskWrk.setIoType(1);//任务类型
                                    taskWrk.setIoPri(13);//优先级
                                    taskWrk.setBarcode(barcode);//条码
                                    taskWrk.setCrnNo(locMast.getCrnNo());
                                    taskWrk.setTargetPoint(locNo);
                                    taskWrk.setStartPoint(String.valueOf(staProtocol.getStaNo()));
                                    if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
                                        taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
                                    }
                                    if (!taskWrkService.insert(taskWrk)) {
                                        log.info("任务:" + result.getTaskNo() + "任务创建失败");
                                    continue;
                                }
                                locMast.setLocSts("S");
                                locMast.setModiTime(new Date());
                                locMastService.updateById(locMast);
                                StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                        .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
@@ -229,7 +257,7 @@
                                customDataDto.setData(JSON.toJSONString(hashMap));
                                boolean notifyResult = notifyUtils.notify("task", 1, String.valueOf(taskWrk.getWrkNo()), taskWrk.getTaskNo(), NotifyMsgType.TASK_START, JSON.toJSONString(taskWrk), true, customDataDto);
                                if(notifyResult) {
                                    taskWrk.setStatus(2);
                                    taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//任务派发
                                    taskWrkService.updateById(taskWrk);
                                }
                            }
@@ -268,280 +296,6 @@
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
    public synchronized void generateStoreWrkFile() throws IOException, InterruptedException {
        try {
            // 根据输送线plc遍历
            for (DevpSlave devp : slaveProperties.getDevp()) {
                // 遍历入库口
                for (DevpSlave.Sta inSta : devp.getInSta()) {
                    // 获取入库站信息
                    DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId());
                    StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo());
                    if (staProtocol == null) {
                        continue;
                    } else {
                        staProtocol = staProtocol.clone();
                    }
                    Short workNo = staProtocol.getWorkNo();
                    Short stano = staProtocol.getStaNo();
                    // 尺寸检测异常
                    boolean back = false;
                    String errMsg = "";
                    if (staProtocol.isFrontErr()) {
                        errMsg = "前超限";
                        back = true;
                    }
                    if (!back && staProtocol.isBackErr()) {
                        errMsg = "后超限";
                        back = true;
                    }
                    if (!back && staProtocol.isHighErr()) {
                        errMsg = "高超限";
                        back = true;
                    }
                    if (!back && staProtocol.isLeftErr()) {
                        errMsg = "左超限";
                        back = true;
                    }
                    if (!back && staProtocol.isRightErr()) {
                        errMsg = "右超限";
                        back = true;
                    }
                    if (!back && staProtocol.isWeightErr()) {
                        errMsg = "超重";
                        back = true;
                    }
                    if (!back && staProtocol.isBarcodeErr()) {
                        errMsg = "扫码失败";
                        back = true;
                    }
                    // 退回
                    if (back) {
                        if (stano == inSta.getBackSta().shortValue()) {
                            continue;
                        }
                        if (workNo == 0 && stano == 0) {
                            continue;
                        }
                        if (!staProtocol.isPakMk()) {
                            continue;
                        }
//                        News.warn("扫码入库失败,{}入库站因{}异常,托盘已被退回", inSta.getStaNo(), errMsg);
                        staProtocol.setWorkNo(workNo);
                        staProtocol.setStaNo(inSta.getStaNo().shortValue());
                        devpThread.setPakMk(staProtocol.getSiteId(), false);
                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                        TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo));
                        if (taskWrk != null) {
                            taskWrk.setMemo(errMsg);//将错误码存入备注字段进行展示
                            taskWrkMapper.updateById(taskWrk);
                        }
                        continue;
                    }
                    // 判断是否满足入库条件
                    if (staProtocol.isAutoing() && staProtocol.isLoading()
                            && staProtocol.isInEnable()
                            && !staProtocol.isEmptyMk() && (workNo >= 9899)
                            && staProtocol.isPakMk()) {
                        // 获取条码扫描仪信息
                        BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode());
                        if (barcodeThread == null) {
                            continue;
                        }
                        String barcode = barcodeThread.getBarcode();
                        if (!Cools.isEmpty(barcode) && !barcode.equals("99999999")) {
                            // 请求wms接口,获取工作号和目标库位
                            ToWmsDTO toWmsDTO = new ToWmsDTO(barcode, staProtocol.getSiteId(), staProtocol.isHigh() ? 2 : 1);
                            TaskWrk taskWrk1 = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", barcode));
                            if (!Cools.isEmpty(taskWrk1)) {
                                log.info("托盘码:" + barcode + "任务档存在");
                                if (taskWrk1.getIoType() == 1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())) {
                                    StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                            .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                    if (Cools.isEmpty(staDesc)) {
                                        log.info("托盘码:" + barcode + "任务档存在");
                                        return;
                                    } else {
                                        staProtocol.setWorkNo(taskWrk1.getWrkNo().shortValue());
                                        staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
                                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                    }
                                }
                                return;
                            }
                            HashMap<String, Object> headParam = new HashMap<>();
                            headParam.put("Content-Type", "application/json");
                            System.out.println(JSON.toJSONString(toWmsDTO));
                            String response;
                            try {
                                response = new HttpHandler.Builder()
                                        // .setHeaders(headParam)
                                        .setUri(wmsUrl)
                                        .setPath(inboundTaskApplyPath)
                                        .setJson(JSON.toJSONString(toWmsDTO))
                                        .build()
                                        .doPost();
                            } catch (Exception e) {
                                log.error("请求入库调用接口失败");
                                log.error("异常信息打印:" + e);
                                try {
                                    BasDevp basDevp = basDevpService.selectById(inSta.getStaNo());
                                    if (Cools.isEmpty(basDevp)) {
                                        log.error("站点号异常" + inSta.getStaNo());
                                    } else if (basDevp.getStaErr() != 0) {
                                        basDevp.setStaErr(2);
                                        basDevpService.updateById(basDevp);
                                    }
                                } catch (Exception e1) {
                                    // 退回
                                    log.error("扫码检测程序异常" + inSta.getStaNo() + "异常信息" + e1);
                                }
                                staProtocol.setWorkNo((short) 9999);
                                staProtocol.setStaNo(inSta.getStaNo().shortValue());
                                devpThread.setPakMk(staProtocol.getSiteId(), false);
                                MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
//                                    TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo));
//                                    if (taskWrk != null) {
//                                        taskWrk.setMemo(errMsg);//将错误码存入备注字段进行展示
//                                        taskWrkMapper.updateById(taskWrk);
//                                    }
                                continue;
                            }
                            JSONObject jsonObject = JSON.parseObject(response);
                            log.info("入库请求参数{}" + JSON.toJSONString(toWmsDTO));
                            log.info("入库请求返回参数{}" + JSON.toJSONString(response));
                            if (jsonObject.getInteger("code").equals(200) && !Cools.isEmpty(jsonObject.get("data").toString())) {
                                GetWmsDto getWmsDto = JSON.parseObject(jsonObject.get("data").toString(), GetWmsDto.class);
                                try {
                                    BasDevp basDevp = basDevpService.selectById(inSta.getStaNo());
                                    if (Cools.isEmpty(basDevp)) {
                                        log.error("站点号异常1" + inSta.getStaNo());
                                        throw new CoolException("站点号异常1,未查询到站点信息" + inSta.getStaNo());
                                    }
                                    Integer staNoCrnNo = Utils.StaNoCrnNo(inSta.getStaNo());
                                    if (staNoCrnNo == 0) {
                                        basDevp.setStaErr(1);
                                        basDevpService.updateById(basDevp);
                                        log.error("站点号异常2" + inSta.getStaNo());
                                        throw new CoolException("站点号异常2,站点号不存在" + inSta.getStaNo());
                                    } else {
                                        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                                                .eq("crn_no", staNoCrnNo.longValue())
                                                .eq("loc_no", getWmsDto.getLocNo()));
                                        if (Cools.isEmpty(locMast)) {
                                            basDevp.setStaErr(1);
                                            basDevpService.updateById(basDevp);
                                            log.error("站点号异常3" + inSta.getStaNo());
                                            throw new CoolException("站点号异常3:此巷道不存在目标库位" + inSta.getStaNo());
                                        }
                                    }
                                } catch (Exception e) {
//                                    log.error("扫码检测程序异常"+inSta.getStaNo()+"异常信息"+e);
                                    // 退回
                                    log.error("扫码检测程序异常" + inSta.getStaNo() + errMsg);
                                    log.error("扫码检测程序异常,异常信息" + e);
                                    staProtocol.setWorkNo((short) 9999);
                                    staProtocol.setStaNo(inSta.getStaNo().shortValue());
                                    devpThread.setPakMk(staProtocol.getSiteId(), false);
                                    MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
//                                    TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo));
//                                    if (taskWrk != null) {
//                                        taskWrk.setMemo(errMsg);//将错误码存入备注字段进行展示
//                                        taskWrkMapper.updateById(taskWrk);
//                                    }
                                    continue;
                                }
                                //查看该库位是否为空库位
                                LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>()
                                        .eq("loc_sts", "O")
                                        .eq("loc_no", getWmsDto.getLocNo()));
                                if (Cools.isEmpty(locMast)) {
                                    try {
                                        HashMap<String, Object> headParam1 = new HashMap<>();
                                        headParam1.put("taskNo", getWmsDto.getTaskNo());
                                        headParam1.put("status", 6);
                                        headParam1.put("ioType", 1);
                                        headParam1.put("barcode", barcode);
                                        String response2;
                                        response2 = new HttpHandler.Builder()
                                                // .setHeaders(headParam)
                                                .setUri(wmsUrl)
                                                .setPath(taskStatusFeedbackPath)
                                                .setJson(JSON.toJSONString(headParam1))
                                                .build()
                                                .doPost();
                                        JSONObject jsonObject1 = JSON.parseObject(response2);
                                        apiLogService.save("wcs派发库位==》不为空《==上报wms"
                                                , wmsUrl + taskStatusFeedbackPath
                                                , null
                                                , "127.0.0.1"
                                                , JSON.toJSONString(headParam1)
                                                , response
                                                , true
                                        );
                                    } catch (Exception e) {
                                        log.error("wcs派发库位==》不为空《==上报wms", getWmsDto.getWrkNo());
                                        throw new CoolException("wcs派发入库任务上报wms失败,派发库位==》不为空《==,异常信息:" + e);
                                    }
                                }
                                // 创新一个入库工作档
                                TaskWrk taskWrk = taskWrkService.selectByTaskNo(getWmsDto.getWrkNo());
                                if (Cools.isEmpty(taskWrk)) {
                                    taskWrk = createTask(getWmsDto, barcode);
                                    if (Cools.isEmpty(taskWrk)) {
                                        log.error("库位异常,库位号:{}", getWmsDto.getTargetLocationCode());
                                    } else {
                                        taskWrkService.insert(taskWrk);
                                        StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>()
                                                .eq("crn_no", taskWrk.getCrnNo()).eq("type_no", 1).eq("stn_no", staProtocol.getSiteId()));
                                        staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue());
                                        staProtocol.setStaNo(staDesc.getCrnStn().shortValue());
                                        MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                                    }
                                }
                            } else {
                                continue;
                            }
                            apiLogService.save("wms请求入库货位接口"
                                    , wmsUrl + inboundTaskApplyPath
                                    , null
                                    , "127.0.0.1"
                                    , JSON.toJSONString(toWmsDTO)
                                    , response
                                    , true
                            );
                        } else {
                            // 退回
                            log.error("扫码入库失败,{}入库站因{}异常,托盘已被退回", inSta.getStaNo(), errMsg);
                            staProtocol.setWorkNo((short) 9999);
                            staProtocol.setStaNo(inSta.getStaNo().shortValue());
                            devpThread.setPakMk(staProtocol.getSiteId(), false);
                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
                            TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo));
                            if (taskWrk != null) {
                                taskWrk.setMemo(errMsg);//将错误码存入备注字段进行展示
                                taskWrkMapper.updateById(taskWrk);
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            log.error("generateStoreWrkFile e", e);
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        }
    }
    /**
     * 堆垛机站出库到出库站
@@ -1110,26 +864,26 @@
                    // 有异常
                    if (latest == null) {
                        if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) {
                            WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo());
                            if (wrkMast == null) {
                            TaskWrk taskWrk = taskWrkService.selectByWrkNo(crnProtocol.getTaskNo().intValue());
                            if (taskWrk == null) {
                                continue;
                            }
                            BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm());
                            String errName = crnError == null ? String.valueOf(crnProtocol.getAlarm()) : crnError.getErrName();
                            BasErrLog basErrLog = new BasErrLog(
                                    null,    // 编号
                                    wrkMast.getWrkNo(),    // 工作号
                                    taskWrk.getWrkNo(),    // 工作号
                                    now,    // 发生时间
                                    null,    // 结束时间
                                    wrkMast.getWrkSts(),    // 工作状态
                                    wrkMast.getIoType(),    // 入出库类型
                                    taskWrk.getWrkSts().longValue(),    // 工作状态
                                    taskWrk.getIoType(),    // 入出库类型
                                    crn.getId(),    // 堆垛机
                                    null,    // plc
                                    wrkMast.getLocNo(),    // 目标库位
                                    wrkMast.getStaNo(),    // 目标站
                                    wrkMast.getSourceStaNo(),    // 源站
                                    wrkMast.getSourceLocNo(),    // 源库位
                                    wrkMast.getBarcode(),    // 条码
                                    taskWrk.getTargetPoint(),    // 目标库位
                                    null,    // 目标站
                                    null,    // 源站
                                    taskWrk.getStartPoint(),    // 源库位
                                    taskWrk.getBarcode(),    // 条码
                                    (int) crnProtocol.getAlarm1(),    // 异常码
                                    errName,    // 异常
                                    1,    // 异常情况
@@ -1276,40 +1030,6 @@
                locMastService.updateById(locMast);
            }
        }
    }
    private TaskWrk createTask1(Result result, String barcode) {
        String locNo = Utils.getLocNo(result.getRow(), result.getFloor(), result.getColumn());
        LocMast locMast = locMastService.selectByLocNo(locNo);
        if (locMast == null) {
            throw new CoolException("库位不存在");
        }
        Date now = new Date();
        TaskWrk taskWrk = new TaskWrk();
        int workNo1 = commonService.getWorkNo(WorkNoType.PAKIN.type);//获取入库工作号
        taskWrk.setTaskNo(result.getTaskNo());//任务号
        taskWrk.setWrkNo(workNo1);
        taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收
        taskWrk.setCreateTime(now);
        taskWrk.setIoType(1);//任务类型
        taskWrk.setIoPri(13);//优先级
        taskWrk.setBarcode(barcode);//条码
        taskWrk.setCrnNo(locMast.getCrnNo());
        taskWrk.setTargetPoint(locNo);
        taskWrk.setStartPoint("116");
        if (result.getAlley().equals("1")) {
            taskWrk.setCrnNo(1);
        } else {
            taskWrk.setCrnNo(2);
        }
        if (taskWrk.getIoType() == 1) {
            taskWrk.setWrkSts(2);
            if (!Cools.isEmpty(taskWrk.getTargetPoint())) {
                taskWrk.setOriginTargetPoint(taskWrk.getTargetPoint());
            }
        }
        return taskWrk;
    }
    private TaskWrk createTask(GetWmsDto dto, String barcode) {
src/main/java/com/zy/asrs/service/impl/MatCodeServiceImpl.java
File was deleted
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -104,6 +104,22 @@
        Date now = new Date();
        taskWrk = new TaskWrk();
        LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", param.getTargetPoint()));
        if (locMast == null) {
            map.put("Code","0");
            map.put("Msg", param.getTaskNo() + "库位不存在!");
            return map;
        }
        if (!locMast.getLocSts().equals("O")) {
            map.put("Code","0");
            map.put("Msg", param.getTaskNo() + "库位不处于空库位!");
            return map;
        }
        locMast.setLocSts("S");
        locMast.setModiTime(new Date());
        locMastService.updateById(locMast);
        int workNo1 = commonService.getWorkNo(WorkNoType.PAKIN.type);//获取入库工作号
        taskWrk.setTaskNo(param.getTaskNo());//任务号
        taskWrk.setWrkNo(workNo1);
src/main/java/com/zy/asrs/service/impl/RowLastnoServiceImpl.java
File was deleted
src/main/java/com/zy/asrs/service/impl/WaitPakinServiceImpl.java
File was deleted
src/main/java/com/zy/asrs/service/impl/WrkDetlLogServiceImpl.java
File was deleted
src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
File was deleted
src/main/java/com/zy/asrs/service/impl/WrkMastLogServiceImpl.java
File was deleted
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
File was deleted
src/main/java/com/zy/asrs/task/NotifyScheduler.java
@@ -91,27 +91,27 @@
                if (notifyDto.getSendCustomData()) {
                    //自定义消息格式
                    NotifyCustomDataDto customData = notifyDto.getCustomData();
                    apiLog.setUrl(customData.getUri() + customData.getPath());
                    apiLog.setRequest(customData.getData());
                    apiLog.setCreateTime(new Date());
                    response = new HttpHandler.Builder()
                            .setUri(customData.getUri())
                            .setPath(customData.getPath())
                            .setJson(customData.getData())
                            .build()
                            .doPost();
                    apiLog.setUrl(customData.getUri() + customData.getPath());
                    apiLog.setRequest(customData.getData());
                    apiLog.setCreateTime(new Date());
                }else {
                    apiLog.setUrl(notifyUri + notifyUriPath);
                    apiLog.setRequest(JSON.toJSONString(notifyDto));
                    apiLog.setCreateTime(new Date());
                    response = new HttpHandler.Builder()
                            .setUri(notifyUri)
                            .setPath(notifyUriPath)
                            .setJson(JSON.toJSONString(notifyDto))
                            .build()
                            .doPost();
                    apiLog.setUrl(notifyUri + notifyUriPath);
                    apiLog.setRequest(JSON.toJSONString(notifyDto));
                    apiLog.setCreateTime(new Date());
                }
                apiLog.setResponse(response);
src/main/java/com/zy/asrs/task/TaskLogScheduler.java
@@ -1,6 +1,8 @@
package com.zy.asrs.task;
import com.alibaba.fastjson.JSON;
import com.core.common.Cools;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.domain.dto.NotifyCustomDataDto;
import com.zy.asrs.domain.enums.NotifyMsgType;
@@ -16,6 +18,7 @@
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
/**
@@ -42,6 +45,8 @@
    private String taskStatusFeedbackPath;
    @Autowired
    private NotifyUtils notifyUtils;
    @Autowired
    private LocMastService locMastService;
    @Scheduled(cron = "0/3 * * * * ? ")
    public void execute() throws IOException {
@@ -50,12 +55,129 @@
            headParam.put("TaskNo", taskWrk.getTaskNo());
            NotifyMsgType notifyMsgType = null;
            if (taskWrk.getStatus().equals(TaskStatusType.OVER.id) || taskWrk.getStatus() == 7) {//完成
            if (taskWrk.getStatus().equals(TaskStatusType.OVER.id) || taskWrk.getStatus().equals(TaskStatusType.MANUAL_OVER.id)) {//完成
                headParam.put("Result", 1);//完成
                notifyMsgType = NotifyMsgType.TASK_COMPLETE;
                if (taskWrk.getIoType() == 1) {//入库任务完成库位为F
                    LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
                    if (locMast == null) {
                        throw new CoolException("没有找到该库位" + taskWrk.getTargetPoint());
                    }
                    if (!locMast.getLocSts().equals("S")) {
                        throw new CoolException(taskWrk.getTaskNo() + "库位不处于S.入库预约");
                    }
                    locMast.setLocSts("F");
                    locMast.setModiTime(new Date());
                    locMast.setBarcode(taskWrk.getBarcode());
                    locMastService.updateById(locMast);
                } else if (taskWrk.getIoType() == 2) {//出库任务完成库位为O
                    LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
                    if (locMast == null) {
                        throw new CoolException("没有找到该库位" + taskWrk.getStartPoint());
                    }
                    if (!locMast.getLocSts().equals("R")) {
                        throw new CoolException(taskWrk.getTaskNo() + "库位不处于R.出库预约");
                    }
                    locMast.setLocSts("O");
                    locMast.setModiTime(new Date());
                    locMast.setBarcode("");
                    locMastService.updateById(locMast);
                } else if (taskWrk.getIoType() == 3) {//移库
                    LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
                    if (locMast == null) {
                        throw new CoolException("没有找到该库位" + taskWrk.getStartPoint());
                    }
                    if (!locMast.getLocSts().equals("R")) {
                        throw new CoolException(taskWrk.getTaskNo() + "库位不处于R.出库预约");
                    }
                    LocMast locMastTarget = locMastService.selectByLocNo(taskWrk.getTargetPoint());
                    if (locMastTarget == null) {
                        throw new CoolException("没有找到该库位" + taskWrk.getTargetPoint());
                    }
                    if (!locMastTarget.getLocSts().equals("S")) {
                        throw new CoolException(taskWrk.getTaskNo() + "库位不处于S.入库预约");
                    }
                    locMastTarget.setLocSts("F");
                    locMastTarget.setModiTime(new Date());
                    locMastTarget.setBarcode(taskWrk.getBarcode());
                    locMastService.updateById(locMastTarget);
                    locMast.setLocSts("O");
                    locMast.setModiTime(new Date());
                    locMast.setBarcode("");
                    locMastService.updateById(locMast);
                }
            } else if (taskWrk.getStatus().equals(TaskStatusType.CANCEL.id)) {
                headParam.put("Result", 2);//取消
                notifyMsgType = NotifyMsgType.TASK_CANCEL;
                if (taskWrk.getIoType() == 1) {//入库任务
                    LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint());
                    if (locMast == null) {
                        throw new CoolException("没有找到该库位" + taskWrk.getTargetPoint());
                    }
                    if (!locMast.getLocSts().equals("S")) {
                        throw new CoolException(taskWrk.getTaskNo() + "库位不处于S.入库预约");
                    }
                    locMast.setLocSts("O");
                    locMast.setModiTime(new Date());
                    locMast.setBarcode("");
                    locMastService.updateById(locMast);
                } else if (taskWrk.getIoType() == 2) {//出库任务
                    LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
                    if (locMast == null) {
                        throw new CoolException("没有找到该库位" + taskWrk.getStartPoint());
                    }
                    if (!locMast.getLocSts().equals("R")) {
                        throw new CoolException(taskWrk.getTaskNo() + "库位不处于R.出库预约");
                    }
                    locMast.setLocSts("F");
                    locMast.setModiTime(new Date());
                    locMast.setBarcode(taskWrk.getBarcode());
                    locMastService.updateById(locMast);
                } else if (taskWrk.getIoType() == 3) {//移库
                    LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint());
                    if (locMast == null) {
                        throw new CoolException("没有找到该库位" + taskWrk.getStartPoint());
                    }
                    if (!locMast.getLocSts().equals("R")) {
                        throw new CoolException(taskWrk.getTaskNo() + "库位不处于R.出库预约");
                    }
                    LocMast locMastTarget = locMastService.selectByLocNo(taskWrk.getTargetPoint());
                    if (locMastTarget == null) {
                        throw new CoolException("没有找到该库位" + taskWrk.getTargetPoint());
                    }
                    if (!locMastTarget.getLocSts().equals("S")) {
                        throw new CoolException(taskWrk.getTaskNo() + "库位不处于S.入库预约");
                    }
                    locMastTarget.setLocSts("O");
                    locMastTarget.setModiTime(new Date());
                    locMastTarget.setBarcode("");
                    locMastService.updateById(locMastTarget);
                    locMast.setLocSts("F");
                    locMast.setModiTime(new Date());
                    locMast.setBarcode(taskWrk.getBarcode());
                    locMastService.updateById(locMast);
                }
            }
            NotifyCustomDataDto customDataDto = new NotifyCustomDataDto();
src/main/java/com/zy/asrs/utils/VersionUtils.java
@@ -1,10 +1,6 @@
package com.zy.asrs.utils;
import com.core.exception.CoolException;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.MatCode;
import com.zy.asrs.entity.WrkDetl;
import com.zy.common.model.LocTypeDto;
/**
@@ -13,64 +9,6 @@
public class VersionUtils {
    // 业务 ----------------------------------------------------------------------
    public static void setWrkDetl(WrkDetl wrkDetl, MatCode matCode) {
//        wrkDetl.setMatNo(matCode.getMatNo()); // 物料编号
//        wrkDetl.setMatName(matCode.getMatName()); // 物料描述
//        wrkDetl.setLgnum(matCode.getStr2()); // 规格
//        wrkDetl.setType(matCode.getStr5()); // 型号
//        wrkDetl.setColor(matCode.getBarcode()); // 条码
//        wrkDetl.setSupplier(matCode.getStr6()); // 批号
//        wrkDetl.setWarehouse(matCode.getStr7()); // 单据编号
//        wrkDetl.setBrand(matCode.getStr3()); // 品项数
//        wrkDetl.setAltme(matCode.getStr1()); // 单位
//        wrkDetl.setBname(matCode.getStr4()); // 客户名称
    }
    public static void setWrkDetl(WrkDetl wrkDetl, LocDetl locDetl) {
        wrkDetl.setMatnr(locDetl.getMatnr()); // 产品编号
        wrkDetl.setMaktx(locDetl.getMaktx()); // 产品描述
        wrkDetl.setSpecs(locDetl.getSpecs()); // 规格
        wrkDetl.setUnit(locDetl.getUnit()); // 单位
//        wrkDetl.setSize(locDetl.getSize()); // 尺寸
        wrkDetl.setColor(locDetl.getColor()); // 颜色
        wrkDetl.setWeight(locDetl.getWeight()); // 单重
        wrkDetl.setZpallet(locDetl.getZpallet()); // 托盘条码
    }
    public static void setLocDetl(LocDetl locDetl, MatCode matCode) {
//        locDetl.setMatNo(matCode.getMatNo()); // 物料编号
//        locDetl.setMatName(matCode.getMatName()); // 物料描述
//        locDetl.setLgnum(matCode.getStr2()); // 规格
//        locDetl.setType(matCode.getStr5()); // 型号
//        locDetl.setColor(matCode.getBarcode()); // 条码
//        locDetl.setSupplier(matCode.getStr6()); // 批号
//        locDetl.setWarehouse(matCode.getStr7()); // 单据编号
//        locDetl.setBrand(matCode.getStr3()); // 品项数
//        locDetl.setAltme(matCode.getStr1()); // 单位
//        locDetl.setBname(matCode.getStr4()); // 客户名称
    }
    public static void setLocDetl(LocDetl locDetl, WrkDetl wrkDetl) {
        locDetl.setMatnr(wrkDetl.getMatnr()); // 产品编号
        locDetl.setMaktx(wrkDetl.getMaktx()); // 产品描述
        locDetl.setSpecs(wrkDetl.getSpecs()); // 规格
        locDetl.setUnit(wrkDetl.getUnit()); // 单位
//        locDetl.setSize(wrkDetl.getSize()); // 尺寸
        locDetl.setColor(wrkDetl.getColor()); // 颜色
        locDetl.setAnfme(wrkDetl.getAnfme()); // 数量
        locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码
    }
    /**
     *  库位移转时类型检测
     **/
    public static void locMoveCheckLocType(LocMast sourceLoc, LocMast loc){
        // 如果源库位是高库位,目标库位是低库位
//        if (sourceLoc.getLocType1() == 2 && loc.getLocType1() == 1) {
//            throw new CoolException("高库位不能移转至低库位");
//        }
    }
    /**
     *  库位移转时类型检测
src/main/java/com/zy/common/service/CommonService.java
@@ -1,29 +1,15 @@
package com.zy.common.service;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Arith;
import com.core.common.Cools;
import com.core.exception.CoolException;
import com.zy.asrs.entity.*;
import com.zy.asrs.service.*;
import com.zy.asrs.utils.Utils;
import com.zy.asrs.utils.VersionUtils;
import com.zy.common.model.LocTypeDto;
import com.zy.common.model.Shelves;
import com.zy.common.model.StartupDto;
import com.zy.core.properties.SlaveProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 * 货架核心功能
 * Created by vincent on 2020/6/11
 */
@Slf4j
@Service
@@ -33,20 +19,6 @@
    private TaskWrkService taskWrkService;
    @Autowired
    private WrkLastnoService wrkLastnoService;
    @Autowired
    private RowLastnoService rowLastnoService;
    @Autowired
    private BasCrnpService basCrnpService;
    @Autowired
    private StaDescService staDescService;
    @Autowired
    private BasDevpService basDevpService;
    @Autowired
    private LocMastService locMastService;
    @Autowired
    private SlaveProperties slaveProperties;
    @Autowired
    private LocDetlService locDetlService;
    /**
     * 生成工作号 wrkMk 0:入库 1 - 3000 ; 1:拣料/并板/盘点 3001 - 6000 ; 2: 出库 6001 -9000 ; 3:其他 9001 -9999
@@ -84,255 +56,6 @@
            }
        }
        return workNo;
    }
    /**
     * 检索库位号
     * @param whsType 类型 1:双深式货架
     * @param staDescId 路径工作类型
     * @param sourceStaNo 源站
     * @param matNos 物料号集合
     * @return locNo 检索到的库位号
     */
    @Transactional
    public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, int times) {
        StartupDto startupDto = new StartupDto();
        // 生成工作号
        int workNo = getWorkNo(0);
        switch (sourceStaNo) {
            case 202:
                whsType = 2;
                break;
            case 205:
                whsType = 1;
                break;
            case 126:
                whsType = 3;
                break;
            case 110:
                whsType = 4;
                break;
            case 301:
                whsType = 5;
                break;
            default:
                throw new CoolException("库位排号分配错误, 源站号:" + sourceStaNo);
        }
        RowLastno rowLastno = rowLastnoService.selectById(whsType);
        if (Cools.isEmpty(rowLastno)) {
            throw new CoolException("数据异常,请联系管理员");
        }
        // ===============>>>> 开始执行
        int curRow = rowLastno.getCurrentRow();
        int sRow = rowLastno.getsRow();
        int eRow = rowLastno.geteRow();
        int crn_qty = rowLastno.getCrnQty();
        int rowCount = eRow - sRow + 1;
        // 目标堆垛机号
        int crnNo = 0;
        // 目标库位
        LocMast locMast = null;
        // 靠近摆放规则 --- 同天同规格物料
        if (!Cools.isEmpty(matNos)) {
            List<String> locNos = locDetlService.getSameDetlToday(matNos.get(0), sRow, eRow);
            for (String locNo : locNos) {
                if (Utils.isShallowLoc(slaveProperties, locNo)) {
                    continue;
                }
                String shallowLocNo = Utils.getShallowLoc(slaveProperties, locNo);
                // 检测目标库位是否为空库位
                LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) {
                    if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) {
                        if (VersionUtils.locMoveCheckLocType(shallowLoc, locTypeDto)) {
                            locMast = shallowLoc;
                            crnNo = locMast.getCrnNo();
                            break;
                        }
                    }
                }
            }
        }
        // 靠近摆放规则 --- 空托
        if (staDescId == 10) {
            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
            if (locMasts.size() > 0) {
                for (LocMast loc : locMasts) {
                    if (Utils.isShallowLoc(slaveProperties, loc.getLocNo())) {
                        continue;
                    }
                    String shallowLocNo = Utils.getShallowLoc(slaveProperties,  loc.getLocNo());
                    // 检测目标库位是否为空库位
                    LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                    if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) {
                        if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) {
                            locMast = shallowLoc;
                            crnNo = locMast.getCrnNo();
                            break;
                        }
                    }
                }
            }
        }
        // 如果没有相近物料,则按规则轮询货架
        if (null == locMast) {
            Shelves shelves = new Shelves(rowCount, crn_qty);
            // 1-4排
            if (whsType == 1) {
                for (int i = 0; i < shelves.group; i ++) {
                    curRow = shelves.start(curRow);
                    if (curRow < 0) {
                        throw new CoolException("检索库位失败,请联系管理员");
                    }
                    Integer crnNo1 = shelves.get(curRow);
                    if (basCrnpService.checkSiteError(crnNo1, true)) {
                        crnNo = crnNo1;
                        break;
                    }
                }
            // 5-8排
            } else if (whsType == 2) {
                curRow = curRow - 4;
                for (int i = 0; i < shelves.group; i ++) {
                    curRow = shelves.start(curRow);
                    if (curRow < 0) {
                        throw new CoolException("检索库位失败,请联系管理员");
                    }
                    Integer crnNo1 = shelves.get(curRow);
                    if (basCrnpService.checkSiteError(crnNo1 + 1, true)) {
                        // 偏移量补偿
                        curRow = curRow + 4;
                        crnNo = crnNo1 + 1;
                        break;
                    }
                }
            // 126空板入 1-8排
            } else {
                for (int i = 0; i < shelves.group; i ++) {
                    curRow = shelves.start(curRow);
                    if (curRow < 0) {
                        throw new CoolException("检索库位失败,请联系管理员");
                    }
                    Integer crnNo1 = shelves.get(curRow);
                    if (basCrnpService.checkSiteError(crnNo1, true)) {
                        crnNo = crnNo1;
                        break;
                    }
                }
            }
        }
        if (crnNo == 0) {
            throw new CoolException("没有可用的堆垛机");
        }
        // 获取目标站
        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                .eq("type_no", staDescId)
                .eq("stn_no", sourceStaNo)
                .eq("crn_no", crnNo);
        StaDesc staDesc = staDescService.selectOne(wrapper);
        if (Cools.isEmpty(staDesc)) {
            log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
            throw new CoolException("入库路径不存在");
        }
        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
        if (!staNo.getAutoing().equals("Y")) {
            throw new CoolException("目标站"+staDesc.getCrnStn()+"不可用");
        }
        // 更新库位排号
        rowLastno.setCurrentRow(curRow);
        rowLastnoService.updateById(rowLastno);
        // 开始查找库位 ==============================>>
        // 1.当检索库排为浅库位排时,优先寻找当前库排的深库位排
        if (locMast == null) {
            if (Utils.isShallowLoc(slaveProperties, curRow)) {
                Integer deepRow = Utils.getDeepRow(slaveProperties, curRow);
                locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1());
                // 因库位移转、需预留空库位
                if (!locMastService.checkEmptyCount(locMast)) {
                    locMast = null;
                }
            }
            if (Cools.isEmpty(locMast)) {
                locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1());
                // 因库位移转、需预留空库位
                if (!locMastService.checkEmptyCount(locMast)) {
                    locMast = null;
                }
                // 目标库位 ===>> 浅库位, 则校验其深库位是否为 F D X
                if (null != locMast && Utils.isShallowLoc(slaveProperties, locMast.getLocNo())) {
                    LocMast deepLoc = locMastService.selectById(Utils.getDeepLoc(slaveProperties, locMast.getLocNo()));
                    if (!deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("X")) {
                        locMast = null;
                    }
                }
                // 目标库位 ===>> 深库位, 则校验其浅库位是否为 O
                if (null != locMast && Utils.isDeepLoc(slaveProperties, locMast.getLocNo())) {
                    LocMast shallowLoc = locMastService.selectById(Utils.getShallowLoc(slaveProperties, locMast.getLocNo()));
                    if (!shallowLoc.getLocSts().equals("O")) {
                        locMast = null;
                    }
                }
            }
        }
        // 2.库位当前所属尺寸无空库位时,调整尺寸参数,向上兼容检索库位
        if (Cools.isEmpty(locMast)) {
            // 当前巷道无空库位时,递归调整至下一巷道,检索全部巷道无果后,跳出递归
            if (times < rowCount) {
                times = times + 1;
                return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times);
            } else {
                times = 0;
            }
            // 轻货物找轻库位为空时,可以去找重库位仓
            if (locTypeDto.getLocType1() == 1) {
                locTypeDto.setLocType1((short) 2);
                return getLocNo(null, staDescId, sourceStaNo, matNos, locTypeDto, times);
            }
            log.error("系统没有空库位!!! 尺寸规格: {}, 轮询次数:{}", JSON.toJSONString(locTypeDto), times);
            throw new CoolException("没有空库位");
        }
        String locNo = locMast.getLocNo();
        // 返回dto
        startupDto.setWorkNo(workNo);
        startupDto.setCrnNo(crnNo);
        startupDto.setSourceStaNo(sourceStaNo);
        startupDto.setStaNo(staNo.getDevNo());
        startupDto.setLocNo(locNo);
        return startupDto;
    }
    public static void main(String[] args) {
        System.out.println(Arith.remainder(1, 4));
        System.out.println("0200201".substring(0, 2));
        String locNo = "0800201";
        int row = Integer.parseInt(locNo.substring(0, 2));
        double remainder = Arith.remainder(row, 4);
        int targetRow;
        if (remainder == 1) {
            // 得到当前库位的外围库位
            targetRow =  row + 1;
        } else if (remainder == 0) {
            // 得到当前库位的内围库位
            targetRow =  row - 1;
        } else {
            return;
        }
        String zerofill = zerofill(String.valueOf(targetRow), 2)+locNo.substring(2);
        System.out.println(zerofill);
    }
    public static String zerofill(String msg, Integer count) {
src/main/java/com/zy/common/service/WmsService.java
File was deleted
src/main/java/com/zy/core/MainProcess.java
@@ -34,7 +34,7 @@
                try {
                    // 间隔
                    Thread.sleep(1000);
                    Thread.sleep(300);
                    // 系统运行状态判断
                    if (!SystemProperties.WCS_RUNNING_STATUS.get()) {
src/main/java/com/zy/core/thread/LedThread.java
@@ -1,12 +1,9 @@
package com.zy.core.thread;
import com.alibaba.fastjson.JSON;
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.CommandInfo;
import com.zy.asrs.service.CommandInfoService;
import com.zy.asrs.service.DeviceErrorService;
import com.zy.common.entity.Parameter;
import com.zy.common.model.MatDto;
import com.zy.core.Slave;
import com.zy.core.ThreadHandler;
@@ -28,7 +25,6 @@
import onbon.bx05.utils.DisplayStyleFactory;
import java.awt.*;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -5,29 +5,22 @@
import HslCommunication.Profinet.Siemens.SiemensPLCS;
import HslCommunication.Profinet.Siemens.SiemensS7Net;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.TaskOverToWms;
import com.zy.asrs.service.*;
import com.zy.common.utils.HttpHandler;
import com.zy.core.CrnThread;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.enums.*;
import com.zy.core.model.CrnSlave;
import com.zy.core.model.Task;
import com.zy.core.model.command.CommandPackage;
import com.zy.core.model.command.CrnCommand;
import com.zy.core.model.protocol.CrnProtocol;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import java.text.MessageFormat;
import java.util.*;
@@ -43,22 +36,6 @@
    private CrnSlave slave;
    private CrnProtocol crnProtocol;
    private boolean resetFlag = false;
    @Value("${wms.url}")
    private String wmsUrl;
    public static final List<Short> rowOne = new ArrayList<Short>() {{
        add((short) 1);add((short) 5);add((short) 7);add((short) 11);add((short) 15);add((short) 19);
    }};
    public static final List<Short> rowTwo = new ArrayList<Short>() {{
        add((short) 2);add((short) 6);add((short) 8);add((short) 12);add((short) 16);add((short) 20);
    }};
    public static final List<Short> rowThree = new ArrayList<Short>() {{
        add((short) 3);add((short) 9);add((short) 13);add((short) 17);add((short) 21);
    }};
    public static final List<Short> rowFour = new ArrayList<Short>() {{
        add((short) 4);add((short) 10);add((short) 14);add((short) 18);
    }};
    public SiemensCrnThread(CrnSlave slave) {
        this.slave = slave;
@@ -201,93 +178,7 @@
                    crnCommand.setAckFinish((short)1);
                    if (write(crnCommand)) {
                        resetFlag = false;
                        //堆垛机任务完成后访问wms请求任务完成 locationDone 货位处理完成
                        TaskWrkService taskWrkService = SpringUtils.getBean(TaskWrkService.class);
                        TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()));
                        String tasktype = null;
                        switch (taskWrk.getIoType()){
                            case 1:
                                tasktype= "RK";
                                break;
                            case 2:
                                tasktype= "CK";
                                break;
                            case 3:
                                tasktype= "YK";
                                break;
                            default:
                                tasktype= "未知";
                        }
                        Map<String, Object> map = new HashMap<>();
                        map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2");
                        TaskOverToWms taskOverToWms = new TaskOverToWms();
                        taskOverToWms.setFeedbackFrom("WCS"); //来源
                        taskOverToWms.setWarehouseId("1688469798893297665"); //仓库标识
                        taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //任务号
                        taskOverToWms.setTaskType(tasktype); // 任务类型
                        taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 容器编码
                        if (taskWrk.getIoType() ==1){
                            taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //设备编码
                            taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //目标库位
                        }else if (taskWrk.getIoType() ==2){
                            Map<Integer,String> map1 = new HashMap<>();
                            map1.put(102,"J-1101");
                            map1.put(106,"J-1103");
                            map1.put(110,"J-1105");
                            map1.put(114,"J-1107");
                            map1.put(118,"J-1109");
                            map1.put(122,"J-1111");
                            map1.put(305,"H-1101");
                            map1.put(405,"G-1101");
                            taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //设备编码
                            taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //源库位
                        } else if (taskWrk.getIoType() == 3) {
                            taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //设备编码
                            taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint());
                            taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //目标库位
                        }
                        taskOverToWms.setTaskStatus("location_done"); //任务状态
                        String response = null;
                        try {
                            response = new HttpHandler.Builder()
                                    .setHeaders(map)
                                    .setUri("10.32.53.195:8080")
                                    .setPath("wcsManager/wcsInterface/taskStatusFeedback")
                                    .setJson(JSON.toJSONString(taskOverToWms))
                                    .build()
                                    .doPost();
                        }catch (Exception e){
                            log.error("堆垛机任务完成,请求wms任务完成接口失败");
                        }
                        ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class);
                        apiLogService.save("Wms任务完成接口"
                                ,"10.32.53.195:8080"+"/wcsManager/wcsInterface/taskStatusFeedback"
                                ,null
                                ,"127.0.0.1"
                                ,JSON.toJSONString(taskOverToWms)
                                ,response
                                ,true
                        );
                        JSONObject jsonObject = JSON.parseObject(response);
                        if (jsonObject.getInteger("code").equals(200)){
                            if (taskWrk.getIoType() == 3){
                                taskWrk.setWrkSts(4);
                            }
                            taskWrk.setStatus(5);
                            if (!taskWrkService.update(taskWrk,new EntityWrapper<TaskWrk>().eq("wrk_no",crnProtocol.getTaskNo()))){
                                log.error("堆垛机任务完成,改变任务状态失败");
                            }
                            log.info("堆垛机任务完成,请求wms任务完成接口成功");
                        }else {
                            log.error("堆垛机任务完成,请求wms任务完成接口完成,但返回失败");
                        }
                    }
                }
            }
src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -9,17 +9,12 @@
import com.core.common.DateUtils;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
import com.zy.asrs.domain.enums.TaskStatusType;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.CommandInfo;
import com.zy.asrs.entity.CommandInfoLog;
import com.zy.asrs.entity.TaskWrk;
import com.zy.asrs.service.*;
import com.zy.core.DevpThread;
import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.OutputQueue;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.CommandStatusType;
import com.zy.core.enums.IoModeType;
import com.zy.core.enums.SlaveType;
import com.zy.core.model.DevpSlave;
@@ -49,12 +44,11 @@
    private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>();
    private short heartBeatVal = 1;
    public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{
        add(100);add(101);add(102);add(103);add(104);
        add(105);add(106);add(107);add(108);add(109);
        add(110);add(111);add(112);add(113);add(114);
        add(115);add(116);add(117);add(118);add(119);
        add(120);add(121);add(122);add(123);add(124);
        add(125);add(1001);add(1002);add(1003);add(1004);
        add(101);add(102);add(103);add(104);
        add(105);add(106);add(107);add(108);
        add(201);add(202);add(203);add(204);add(205);
        add(206);add(207);add(208);add(209);add(210);
        add(211);add(212);
    }};
    /*public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
        add(200);add(201);add(202);add(203);
src/main/resources/application.yml
@@ -8,7 +8,7 @@
    name: @pom.build.finalName@
  datasource:
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://127.0.0.1:1433;databasename=ynhfasrs
    url: jdbc:sqlserver://192.168.10.251:1433;databasename=ynhfasrs
    username: sa
    password: sa@123
  mvc:
@@ -49,12 +49,12 @@
  # 是否开启上报
  start: true
  # WMS系统ip
  url: 10.10.10.222:2410
  url: 192.168.10.12:8001
  # 入库任务申请接口
  inboundTaskApplyPath: api/StereoscopicCallBack/AcceptTaskStatus
  inboundTaskApplyPath: /wes/api/AcceptTaskStatus
  # 任务开始时,WCS回调WMSz
  taskStatusFeedbackPath: api/StereoscopicCallBack/TaskExecCallback
  taskStatusFeedbackPath: /wes/api/TaskExecCallback
  # 任务完成结束时,WCS回调WMS
  TaskExecCallback: api/StereoscopicCallBack/TaskExecFinishedCallback
  TaskExecCallback: /wes/api/TaskExecFinishedCallback
  # 移库申请接口
  movePath: api/InterFace/get_InterFace_TestStorage
  movePath: /wes/api/get_InterFace_TestStorage
src/main/resources/mapper/LocDetlMapper.xml
File was deleted
src/main/resources/mapper/MatCodeMapper.xml
File was deleted
src/main/resources/mapper/RowLastnoMapper.xml
File was deleted
src/main/resources/mapper/WaitPakinMapper.xml
File was deleted
src/main/resources/mapper/WrkDetlMapper.xml
File was deleted
src/main/resources/mapper/WrkMastMapper.xml
File was deleted
src/main/webapp/static/wms/js/locMast/locMast.js
@@ -28,7 +28,7 @@
            // ,{field: 'ctnType', align: 'center',title: ''}
            // ,{field: 'locSts', align: 'center',title: ''}
            // ,{field: 'sheetNo', align: 'center',title: ''}
            // ,{field: 'crnNo', align: 'center',title: '堆垛机号'}
            ,{field: 'crnNo', align: 'center',title: '堆垛机号'}
            ,{field: 'row1', align: 'center',title: '排', sort:true}
            ,{field: 'bay1', align: 'center',title: '列', sort:true}
            ,{field: 'lev1', align: 'center',title: '层', sort:true}
src/main/webapp/views/locMast/locMast.html
@@ -65,15 +65,6 @@
            <input class="layui-input" type="text" name="barcode" placeholder="托盘码" autocomplete="off">
        </div>
    </div>
    <div class="layui-inline">
        <div class="layui-input-inline">
            <select class="layui-input" id="loc_type1" name="loc_type1" autocomplete="off">
                <option value>选择桶类型</option>
                <option value="1">油桶</option>
                <option value="2">净桶</option>
            </select>
        </div>
    </div>
    <!-- 待添加 -->
    <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>
version/cool-framework-install.txt
New file
@@ -0,0 +1 @@
mvn install:install-file -Dfile=framework-3.4.0.jar -DgroupId=cn.cool -DartifactId=framework -Dversion=3.4.0 -Dpackaging=jar -DgeneratePom=true
version/framework-3.4.0.jar
Binary files differ