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.jarBinary files differ