src/main/java/com/zy/asrs/controller/CrnController.java
@@ -21,7 +21,6 @@ import com.zy.asrs.service.BasCrnpService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.service.impl.MainServiceImpl; import com.zy.asrs.utils.VersionUtils; import com.zy.core.CrnThread; import com.zy.core.cache.MessageQueue; @@ -38,7 +37,6 @@ import com.zy.core.properties.SystemProperties; 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.ArrayList; @@ -53,7 +51,6 @@ @Slf4j @RestController public class CrnController { @Autowired src/main/java/com/zy/asrs/controller/MonitorController.java
@@ -258,6 +258,7 @@ /** * x轴单位转换 * * @param dot y轴数值保留小数位 */ private List<Map<String, Object>> convert(List<Map<String, Object>> list, StatsType statsType, int dot) { src/main/java/com/zy/asrs/controller/OpenController.java
@@ -1,7 +1,6 @@ package com.zy.asrs.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.AppAuth; import com.core.common.BaseRes; @@ -9,18 +8,18 @@ import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.*; import com.zy.asrs.entity.param.CrnStatusParam; import com.zy.asrs.entity.param.TaskCreateParam; import com.zy.asrs.entity.param.TaskOverParam; import com.zy.asrs.entity.param.WMSAndAGVInterfaceParam; import com.zy.asrs.service.*; import com.zy.asrs.utils.Utils; 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.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; @@ -105,25 +104,6 @@ } } //agv任务完成 @PostMapping("/toAgvTaskOver") @AppAuth(memo = "agv任务完成接口") public R getAgvTaskOver(@RequestHeader String appkey, @RequestBody TaskOverParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } if (Cools.isEmpty(param.getStartPoint())) { return R.error("码头[wharfCode]不能为空"); } if (Cools.isEmpty(param.getStatus())) { return R.error("完成标记[status]不能为空"); } openService.getAgvTaskOver(param); return R.ok(); } //创建任务 @PostMapping("/taskCreate") @@ -189,17 +169,82 @@ return R.ok(); } //查询任务详情 @GetMapping("/queryTask") public R queryTask(@RequestHeader String appkey, @RequestParam String taskNo, HttpServletRequest request) { auth(appkey, taskNo, request); TaskWrk taskWrk = taskWrkService.selectByTaskNo(taskNo); if (taskWrk == null) { return R.error("任务不存在"); //任务取消接口 @PostMapping("/taskCancel") public R taskCancel(@RequestHeader String appkey, @RequestBody WMSAndAGVInterfaceParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.error("参数为空!"); } else if (Cools.isEmpty(param.getTaskNo())) { return R.error("工作号为空!"); } else if (Cools.isEmpty(param.getIoType())) { return R.error("操作类型为空!"); } else if (Cools.isEmpty(param.getBarcode())) { return R.error("托盘码不能为空!"); } return R.ok().add(taskWrk); TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>() .eq("task_no", param.getTaskNo()) .eq("io_type", param.getIoType()) .eq("barcode", param.getBarcode())); if (Cools.isEmpty(taskWrk)) { return R.error("未查到当前任务---" + param); } boolean sign = false; switch (param.getTaskStatus()) { case 1://正常取消 if (taskWrk.getStatus() > 1) { return R.error("任务已开始执行"); } break; case 2://正常完成 if (taskWrk.getStatus() > 1) { return R.error("任务已开始执行"); } sign = true; break; default: return R.error("未知操作"); } return taskWrkOperate(taskWrk, sign); } //任务操作 private R taskWrkOperate(TaskWrk taskWrk, boolean sign) { try { if (sign) {//完成 return taskWrkController.complete(taskWrk.getTaskNo()); } else {//取消 return taskWrkController.cancel(taskWrk.getTaskNo()); } } catch (Exception e) { return R.error(); } } //设备状态查询接口 @GetMapping("/deviceStatus") @Transactional public R deviceStatus() { List<CrnStatusParam> crnStatusParams = new ArrayList<>(); List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>()); for (BasCrnp basCrnp : basCrnps) { CrnStatusParam crnStatusParam = new CrnStatusParam(); crnStatusParam.setCrnNo(basCrnp.getCrnNo()); crnStatusParam.setCrnSts(basCrnp.getCrnSts()); crnStatusParam.setErrorCode(basCrnp.getCrnErr()); BasCrnError error = basCrnErrorService.selectOne(new EntityWrapper<BasCrnError>().eq("error_code", basCrnp.getCrnErr())); if (Cools.isEmpty(error)) { crnStatusParam.setErrorMsg(""); } else { crnStatusParam.setErrorMsg(error.getErrName()); } crnStatusParams.add(crnStatusParam); } return R.ok(crnStatusParams); } //取放货申请 @@ -240,6 +285,31 @@ return openService.getAgvPickAndPlaceV2(param); } private void auth(String appkey, Object obj, HttpServletRequest request) { log.info("{}接口被访问;appkey:{};请求数据:{}", request.getServletPath(), appkey, JSON.toJSONString(obj)); request.setAttribute("cache", obj); if (Cools.isEmpty(appkey)) { throw new CoolException("认证失败,请确认appkey无误!"); } if (!APP_KEY_LIST.contains(appkey)) { throw new CoolException("认证失败,请确认appkey无误!"); } } //查询任务详情 @GetMapping("/queryTask") public R queryTask(@RequestHeader String appkey, @RequestParam String taskNo, HttpServletRequest request) { auth(appkey, taskNo, request); TaskWrk taskWrk = taskWrkService.selectByTaskNo(taskNo); if (taskWrk == null) { return R.error("任务不存在"); } return R.ok().add(taskWrk); } //查询任务指令集合 @GetMapping("/queryTaskCommand") public R queryTaskCommand(@RequestHeader String appkey, @@ -255,16 +325,74 @@ return R.ok().add(commandInfos); } private void auth(String appkey, Object obj, HttpServletRequest request) { log.info("{}接口被访问;appkey:{};请求数据:{}", request.getServletPath(), appkey, JSON.toJSONString(obj)); request.setAttribute("cache", obj); if (Cools.isEmpty(appkey)) { throw new CoolException("认证失败,请确认appkey无误!"); } if (!APP_KEY_LIST.contains(appkey)) { throw new CoolException("认证失败,请确认appkey无误!"); } } //任务下发接口 // @PostMapping("/outboundTaskSend") // @Transactional // public HashMap<String, Object> outboundTaskSend(@RequestBody List<CarryParam> params) { // HashMap<String, Object> map = new HashMap<>(); // for (CarryParam param : params) { // if (Cools.isEmpty(param)) { // map.put("Code", "0"); // map.put("Msg", "参数为空!"); // return map; // } else if (Cools.isEmpty(param.getTaskNo())) { // map.put("Code", "0"); // map.put("Msg", "任务号为空!"); // return map; // } else if (Cools.isEmpty(param.getStereoscopicTaskType())) { // map.put("Code", "0"); // map.put("Msg", "任务类型为空!"); // return map; // } // String fusion = Utils.Fusion(param.getOriginalRowNo(), param.getOriginalFloorNo(), param.getOriginalColumnNo()); // param.setStartPoint(fusion); // LocMast locMast = locMastService.selectByLocNo(param.getStartPoint()); // if (Cools.isEmpty(locMast)) { // map.put("Code", "0"); // map.put("Msg", "初始库位无法找到!"); // return map; // } // // HashMap<String, Object> r = new HashMap<>(); // // if (param.getStereoscopicTaskType() == 2) { // //出库任务创建 // StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() // .eq("type_no", 2) // .eq("crn_no", locMast.getCrnNo()) // .eq("stn_no", param.getTerminalNo())); // if (Cools.isEmpty(staDesc)) { // map.put("Code", "0"); // map.put("Msg", "出库路径不存在!"); // return map; // } // r = openService.taskCreate(new TaskCreateParam(param, staDesc.getCrnNo())); // if (r.get("Code").equals("0")) { // return r; // } // } else if (param.getStereoscopicTaskType() == 3) { // String fusion1 = Utils.Fusion(param.getGoalRowNo(), param.getGoalFloorNo(), param.getGoalColumnNo()); // param.setTerminalNo(fusion1); // //移库任务创建 // r = openService.taskCreate(new TaskCreateParam(param, locMast.getCrnNo())); // if (r.get("Code").equals("0")) { // return r; // } // } // apiLogService.save("Wms任务下发接口" // , request.getRemoteAddr() + request.getRequestURI() // , "" // , request.getRemoteAddr() // , JSON.toJSONString(param) // , r.toString() // , true // ); // } // map.put("Code", "1"); // map.put("Msg", "ok"); // return map; // } //AGV请求入库码头接口 // @PostMapping("/targetWharfApply") @@ -363,150 +491,22 @@ // // // } //任务下发接口 @PostMapping("/outboundTaskSend") @Transactional public HashMap<String, Object> outboundTaskSend(@RequestBody List<CarryParam> params) { HashMap<String, Object> map = new HashMap<>(); for (CarryParam param : params) { if (Cools.isEmpty(param)) { map.put("Code", "0"); map.put("Msg", "参数为空!"); return map; } else if (Cools.isEmpty(param.getTaskNo())) { map.put("Code", "0"); map.put("Msg", "任务号为空!"); return map; } else if (Cools.isEmpty(param.getStereoscopicTaskType())) { map.put("Code", "0"); map.put("Msg", "任务类型为空!"); return map; } String fusion = Utils.Fusion(param.getOriginalRowNo(), param.getOriginalFloorNo(), param.getOriginalColumnNo()); param.setStartPoint(fusion); LocMast locMast = locMastService.selectByLocNo(param.getStartPoint()); if (Cools.isEmpty(locMast)) { map.put("Code", "0"); map.put("Msg", "初始库位无法找到!"); return map; } HashMap<String, Object> r = new HashMap<>(); if (param.getStereoscopicTaskType() == 2) { //出库任务创建 StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() .eq("type_no", 2) .eq("crn_no", locMast.getCrnNo()) .eq("stn_no", param.getTerminalNo())); if (Cools.isEmpty(staDesc)) { map.put("Code", "0"); map.put("Msg", "出库路劲不存在!"); return map; } r = openService.taskCreate(new TaskCreateParam(param, staDesc.getCrnNo())); if (r.get("Code").equals("0")) { return r; } } else if (param.getStereoscopicTaskType() == 3) { String fusion1 = Utils.Fusion(param.getGoalRowNo(), param.getGoalFloorNo(), param.getGoalColumnNo()); param.setTerminalNo(fusion1); //移库任务创建 r = openService.taskCreate(new TaskCreateParam(param, locMast.getCrnNo())); if (r.get("Code").equals("0")) { return r; } } apiLogService.save("Wms任务下发接口" , request.getRemoteAddr() + request.getRequestURI() , "" , request.getRemoteAddr() , JSON.toJSONString(param) , r.toString() , true ); } map.put("Code", "1"); map.put("Msg", "ok"); return map; } //任务取消接口 @PostMapping("/taskCancel") public R taskCancel(@RequestHeader String appkey, @RequestBody WMSAndAGVInterfaceParam param, HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.error("参数为空!"); } else if (Cools.isEmpty(param.getTaskNo())) { return R.error("工作号为空!"); } else if (Cools.isEmpty(param.getIoType())) { return R.error("操作类型为空!"); } else if (Cools.isEmpty(param.getBarcode())) { return R.error("托盘码不能为空!"); } TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>() .eq("task_no", param.getTaskNo()) .eq("io_type", param.getIoType()) .eq("barcode", param.getBarcode())); if (Cools.isEmpty(taskWrk)) { return R.error("未查到当前任务---" + param); } boolean sign = false; switch (param.getTaskStatus()) { case 1://正常取消 if (taskWrk.getStatus() > 1) { return R.error("任务已开始执行"); } break; case 2://正常完成 if (taskWrk.getStatus() > 1) { return R.error("任务已开始执行"); } sign = true; break; default: return R.error("未知操作"); } return taskWrkOperate(taskWrk, sign); } //任务操作 private R taskWrkOperate(TaskWrk taskWrk, boolean sign) { try { if (sign) {//完成 return taskWrkController.complete(taskWrk.getTaskNo()); } else {//取消 return taskWrkController.cancel(taskWrk.getTaskNo()); } } catch (Exception e) { return R.error(); } } //设备状态查询接口 @GetMapping("/deviceStatus") @Transactional public R deviceStatus() { List<CrnStatusParam> crnStatusParams = new ArrayList<>(); List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<>()); for (BasCrnp basCrnp : basCrnps) { CrnStatusParam crnStatusParam = new CrnStatusParam(); crnStatusParam.setCrnNo(basCrnp.getCrnNo()); crnStatusParam.setCrnSts(basCrnp.getCrnSts()); crnStatusParam.setErrorCode(basCrnp.getCrnErr()); BasCrnError error = basCrnErrorService.selectOne(new EntityWrapper<BasCrnError>().eq("error_code", basCrnp.getCrnErr())); if (Cools.isEmpty(error)) { crnStatusParam.setErrorMsg(""); } else { crnStatusParam.setErrorMsg(error.getErrName()); } crnStatusParams.add(crnStatusParam); } return R.ok(crnStatusParams); } // @PostMapping("/toAgvTaskOver") // @AppAuth(memo = "agv任务完成接口") // public R getAgvTaskOver(@RequestHeader String appkey, // @RequestBody TaskOverParam param, // HttpServletRequest request) { // auth(appkey, param, request); // if (Cools.isEmpty(param)) { // return R.parse(BaseRes.PARAM); // } // if (Cools.isEmpty(param.getStartPoint())) { // return R.error("码头[wharfCode]不能为空"); // } // if (Cools.isEmpty(param.getStatus())) { // return R.error("完成标记[status]不能为空"); // } // openService.getAgvTaskOver(param); // return R.ok(); // } } src/main/java/com/zy/asrs/controller/ReportQueryController.java
@@ -22,6 +22,7 @@ /** * 日志统计控制器层 * * @author admin * @date 2018年11月23日 */ @@ -158,6 +159,7 @@ /** * 日入库汇总查询 * * @return */ @RequestMapping("/viewWorkCountInList.action") src/main/java/com/zy/asrs/controller/TaskWrkLogController.java
@@ -1,6 +1,5 @@ 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; @@ -10,17 +9,12 @@ import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.R; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.entity.TaskWrkLog; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.TaskWrkLogService; import com.zy.asrs.service.TaskWrkReportService; import com.zy.asrs.service.ToWmsService; 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.*; src/main/java/com/zy/asrs/controller/TransferTaskController.java
@@ -20,7 +20,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.*; import java.util.Date; import java.util.List; import java.util.Map; @RestController @Slf4j @@ -38,7 +40,6 @@ @Autowired private ToWmsService toWmsService; @RequestMapping(value = "/transferTask/{wrkNo}/auth") @ManagerAuth @@ -129,7 +130,6 @@ List<TaskWrk> list = taskWrkService.selectList(wrapper); return R.ok(exportSupport(list, fields)); } @RequestMapping(value = "/transferTask/check/column/auth") src/main/java/com/zy/asrs/controller/TransferTaskLogController.java
@@ -40,7 +40,6 @@ @Autowired private ToWmsService toWmsService; @RequestMapping(value = "/transferTaskLog/{wrkNo}/auth") @ManagerAuth @@ -131,7 +130,6 @@ List<TaskWrk> list = taskWrkService.selectList(wrapper); return R.ok(exportSupport(list, fields)); } @RequestMapping(value = "/transferTaskLog/check/column/auth") src/main/java/com/zy/asrs/domain/dto/AxisBean.java
@@ -2,8 +2,8 @@ /** * 曲线图表json键 * @author admin * * @author admin */ public class AxisBean { private String name; src/main/java/com/zy/asrs/domain/dto/WorkChartAxis.java
@@ -2,6 +2,7 @@ /** * 入出库统计曲线图 * * @author admin * @date 2018年12月12日 */ src/main/java/com/zy/asrs/domain/vo/LocChartPie.java
@@ -2,6 +2,7 @@ /** * 库位占用百分比 * * @author admin * @date 2018年12月12日 */ src/main/java/com/zy/asrs/entity/ApiConfig.java
@@ -33,7 +33,7 @@ private String url; /** * 状态 0: 正常 1: 禁用 * 状态 0: 正常 1: 禁用 */ @ApiModelProperty(value = "状态 0: 正常 1: 禁用 ") private Integer status; src/main/java/com/zy/asrs/entity/ApiLog.java
@@ -82,13 +82,13 @@ private String err; /** * 结果 1: 成功 0: 失败 * 结果 1: 成功 0: 失败 */ @ApiModelProperty(value = "结果 1: 成功 0: 失败 ") private Integer result; /** * 状态 1: 正常 0: 禁用 * 状态 1: 正常 0: 禁用 */ @ApiModelProperty(value = "状态 1: 正常 0: 禁用 ") private Integer status; src/main/java/com/zy/asrs/entity/BasCrnOpt.java
@@ -110,7 +110,7 @@ private Integer posSta; /** * 响应结果 1: 正常 0: 失败 * 响应结果 1: 正常 0: 失败 */ @ApiModelProperty(value = "响应结果 1: 正常 0: 失败 ") private Integer response; src/main/java/com/zy/asrs/entity/BasErrLog.java
@@ -129,7 +129,7 @@ private String error; /** * 异常情况 1: 未处理 2: 已修复 * 异常情况 1: 未处理 2: 已修复 */ @ApiModelProperty(value = "异常情况 1: 未处理 2: 已修复 ") private Integer status; src/main/java/com/zy/asrs/entity/BasPlcerrorLog.java
@@ -120,7 +120,7 @@ private String err; /** * 异常情况 1: 未处理 2: 已修复 * 异常情况 1: 未处理 2: 已修复 */ @ApiModelProperty(value = "异常情况 1: 未处理 2: 已修复 ") private Integer status; src/main/java/com/zy/asrs/entity/CommandInfoLog.java
@@ -46,7 +46,7 @@ private String endPos; /** * 指令状态 1: 创建 2: 执行 3: 完成 * 指令状态 1: 创建 2: 执行 3: 完成 */ @ApiModelProperty(value = "指令状态 1: 创建 2: 执行 3: 完成 ") @TableField("command_status") src/main/java/com/zy/asrs/entity/TaskWrkLog.java
@@ -30,7 +30,7 @@ private String taskNo; /** * 任务状态 1: 接收 2: 派发 3: 完结 4: 取消 * 任务状态 1: 接收 2: 派发 3: 完结 4: 取消 */ @ApiModelProperty(value = "任务状态 1: 接收 2: 派发 3: 完结 4: 取消 ") private Integer status; src/main/java/com/zy/asrs/entity/TransferTask.java
@@ -122,6 +122,4 @@ private Date cancelTime; } src/main/java/com/zy/asrs/entity/ViewInOutBean.java
@@ -2,6 +2,7 @@ /** * 日出入库次数统计 * * @author admin * @date 2018年11月24日 */ src/main/java/com/zy/asrs/entity/ViewStayTimeBean.java
@@ -13,6 +13,7 @@ /** * 库存滞留时间实体类 * * @author admin * @date 2018年11月23日 */ src/main/java/com/zy/asrs/entity/ViewStockUseBean.java
@@ -2,6 +2,7 @@ /** * 库位使用率视图实体类 * * @author admin * @date 2018年11月23日 */ src/main/java/com/zy/asrs/entity/ViewWorkInBean.java
@@ -13,6 +13,7 @@ /** * 入库明细统计 * * @author admin * @date 2018年11月26日 */ src/main/java/com/zy/asrs/entity/param/TaskOverParam.java
@@ -17,6 +17,11 @@ */ private Integer startPoint; /** * 高度 */ private Integer height; /** * 1放。0取 */ private int type; src/main/java/com/zy/asrs/mapper/DevpTaskMapper.java
@@ -2,17 +2,12 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.zy.asrs.entity.DevpTask; import com.zy.asrs.entity.TaskWrk; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @Mapper @Repository public interface DevpTaskMapper extends BaseMapper<DevpTask> { } src/main/java/com/zy/asrs/mapper/LocMastMapper.java
@@ -39,4 +39,5 @@ List<LocMast> selectLocByLev(@Param("lev") Integer lev); } src/main/java/com/zy/asrs/mapper/TransferTaskLogMapper.java
@@ -1,7 +1,6 @@ package com.zy.asrs.mapper; import com.baomidou.mybatisplus.mapper.BaseMapper; import com.zy.asrs.entity.TransferTask; import com.zy.asrs.entity.TransferTaskLog; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; @@ -9,7 +8,6 @@ @Mapper @Repository public interface TransferTaskLogMapper extends BaseMapper<TransferTaskLog> { } src/main/java/com/zy/asrs/mapper/TransferTaskMapper.java
@@ -9,6 +9,8 @@ @Repository public interface TransferTaskMapper extends BaseMapper<TransferTask> { TransferTask selectByStartPoint(Integer startPoint); TransferTask selectByEndPoint(Integer endPoint); } src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -81,6 +81,7 @@ /** * 堆垛机是否存在出库任务 * * @param crnNo * @return */ @@ -88,6 +89,7 @@ /** * 输送线是否存在入库任务 * * @param crnNo * @return */ @@ -98,6 +100,7 @@ /** * 查找堆垛机号对应所有待出库工作档 * * @param crnNO * @param sourceStaNo * @return src/main/java/com/zy/asrs/service/ApiConfigService.java
@@ -1,7 +1,7 @@ package com.zy.asrs.service; import com.zy.asrs.entity.ApiConfig; import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.ApiConfig; public interface ApiConfigService extends IService<ApiConfig> { src/main/java/com/zy/asrs/service/BasCrnOptService.java
@@ -1,7 +1,7 @@ package com.zy.asrs.service; import com.zy.asrs.entity.BasCrnOpt; import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.BasCrnOpt; public interface BasCrnOptService extends IService<BasCrnOpt> { src/main/java/com/zy/asrs/service/BasDevpService.java
@@ -9,38 +9,44 @@ /** * 入库站 * * @return */ List<Integer> getAvailableInSite(); /** * 空板入库站 * * @return */ List<Integer> getAvailableEmptyInSite(); /** * 出库站 * * @return */ List<Integer> getAvailableOutSite(Integer typeNo); /** * 空板出库站 * * @return */ List<Integer> getAvailableEmptyOutSite(); /** * 目标站点状态检测 * * @param devpNo */ BasDevp checkSiteStatus(Integer devpNo); /** * 目标站点状态检测 * * @param devpNo * @param put 是否入库操作 true 是 ; false 不是 * @param put 是否入库操作 true 是 ; false 不是 */ BasDevp checkSiteStatus(Integer devpNo, boolean put); src/main/java/com/zy/asrs/service/BasErrLogService.java
@@ -1,7 +1,7 @@ package com.zy.asrs.service; import com.zy.asrs.entity.BasErrLog; import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.BasErrLog; public interface BasErrLogService extends IService<BasErrLog> { src/main/java/com/zy/asrs/service/LocDetlService.java
@@ -19,6 +19,7 @@ /** * 获取当天相同规格货物的深库位号 * * @param matnr 物料号 * @return locNo 库位号 */ src/main/java/com/zy/asrs/service/LocMastService.java
@@ -20,6 +20,7 @@ /** * 获取同组货架的空库位 * * @param sourceLocNo 源库位 * @return 同组空库位集合 */ @@ -27,6 +28,7 @@ /** * 堆垛机演示获取源库位 * * @param crn * @return */ @@ -34,6 +36,7 @@ /** * 堆垛机演示获取目标库位 * * @param crn * @return */ @@ -41,6 +44,7 @@ /** * 检查当前库位所属巷道的空库位数量 * * @param locMast * @return */ src/main/java/com/zy/asrs/service/TaskWrkLogService.java
@@ -1,7 +1,7 @@ package com.zy.asrs.service; import com.zy.asrs.entity.TaskWrkLog; import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.TaskWrkLog; public interface TaskWrkLogService extends IService<TaskWrkLog> { src/main/java/com/zy/asrs/service/TaskWrkService.java
@@ -1,7 +1,7 @@ package com.zy.asrs.service; import com.zy.asrs.entity.TaskWrk; import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.TaskWrk; import java.util.List; src/main/java/com/zy/asrs/service/ToWmsService.java
@@ -4,7 +4,6 @@ import com.zy.asrs.entity.TaskWrkLog; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.wms.StorageEscalationParam; import com.zy.asrs.entity.wms.WmsResult; public interface ToWmsService { src/main/java/com/zy/asrs/service/TransferTaskLogService.java
@@ -1,8 +1,6 @@ package com.zy.asrs.service; import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.TaskWrkLog; import com.zy.asrs.entity.TransferTask; import com.zy.asrs.entity.TransferTaskLog; public interface TransferTaskLogService extends IService<TransferTaskLog> { src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java
@@ -1,7 +1,5 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; @@ -9,13 +7,9 @@ import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WmsLocStatus; import com.zy.asrs.mapper.LocMastMapper; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.utils.Utils; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.HashMap; src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -7,12 +7,17 @@ import com.core.exception.CoolException; import com.zy.asrs.controller.CrnController; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.domain.enums.WorkNoType; import com.zy.asrs.domain.param.CrnOperatorParam; import com.zy.asrs.entity.*; import com.zy.asrs.entity.wms.StorageEscalationParam; import com.zy.asrs.mapper.*; import com.zy.asrs.mapper.BasCrnErrorMapper; import com.zy.asrs.mapper.StaDescMapper; import com.zy.asrs.mapper.TaskWrkMapper; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.Utils; import com.zy.common.service.CommonService; import com.zy.core.CrnThread; import com.zy.core.DevpThread; import com.zy.core.cache.MessageQueue; @@ -29,6 +34,7 @@ import com.zy.core.thread.SiemensDevpThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; @@ -36,6 +42,7 @@ import java.io.IOException; import java.util.Date; import java.util.List; import java.util.Random; /** * 立体仓库WCS系统主流程业务 @@ -55,6 +62,8 @@ @Autowired private LocMastService locMastService; @Autowired private LocDetlService locDetlService; @Autowired private BasCrnpService basCrnpService; @Autowired private BasDevpService basDevpService; @@ -66,10 +75,9 @@ private TaskWrkMapper taskWrkMapper; @Autowired private DevpTaskMapper devpTaskMapper; @Autowired private TaskWrkService taskWrkService; @Autowired private CommonService commonService; @Autowired private StaDescMapper staDescMapper; @@ -87,6 +95,22 @@ @Autowired private TransferTaskService transferTaskService; @Autowired private WrkMastService wrkMastService; @Autowired private WrkDetlService wrkDetlService; @Value("${loc-move.enable}") private boolean enable; @Value("${loc-move.crn1}") private boolean crn1; @Value("${loc-move.crn2}") private boolean crn2; @Value("${loc-move.crn3}") private boolean crn3; public void generateStoreWrkFile() throws IOException, InterruptedException { try { @@ -838,7 +862,7 @@ try { // 根据输送线plc遍历 for (DevpSlave devp : slaveProperties.getDevp()) { if (devp.getId() == 2){ if (devp.getId() == 2) { continue; } SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); @@ -1003,23 +1027,117 @@ /** * 跑库程序 */ public void debug() { //首先库位有一个在库的库位 LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "F")); if (locMast != null) { // 再生成一个移库任务 LocMast mk = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O").ne("mk", 1)); public void debug(String sts, Long modiUser, Integer loc_type1) { if (!enable) { return; } List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>()); if (basCrnps.isEmpty()) { return; } for (BasCrnp basCrnp : basCrnps) { if (!basCrnp.getInEnable().equals("N") || !basCrnp.getOutEnable().equals("Y")) { continue; } List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no", basCrnp.getCrnNo()).eq("io_type", 11)); if (Cools.isEmpty(wrkMasts) || wrkMasts.isEmpty()) { int i = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", sts).eq("loc_type1", loc_type1).ne("modi_user", modiUser)); LocMast locMastStart = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", sts).eq("loc_type1", loc_type1).ne("modi_user", modiUser)); if (locMastStart == null || i > 1) { continue; } List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("loc_sts", "O") .eq("crn_no", basCrnp.getCrnNo()) .eq("loc_type1", locMastStart.getLocType1()) .ne("modi_user", 77)); if (Cools.isEmpty(locMasts)) { continue; } Random random = new Random(); LocMast locMastEnd = locMasts.get(random.nextInt(locMasts.size())); locMove(locMastStart, locMastEnd, Long.parseLong(basCrnp.getCrnNo().toString())); } } } public void locMove(LocMast sourceLoc, LocMast locNo, Long userId) { List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc.getLocNo())); LocMast loc = locMastService.selectById(locNo); if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) { throw new CoolException("移转库位属于不同堆垛机"); } Date now = new Date(); // 获取工作号 int workNo = commonService.getWorkNo(WorkNoType.PICK.type); // 保存工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID wrkMast.setIoType(11); // 入出库状态: 11.库格移载 wrkMast.setIoPri(10D); wrkMast.setCrnNo(sourceLoc.getCrnNo()); wrkMast.setSourceLocNo(sourceLoc.getLocNo()); // 源库位 wrkMast.setLocNo(locNo.getLocNo()); // 目标库位 wrkMast.setFullPlt(Cools.isEmpty(locDetls) ? "N" : "Y"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 空板 wrkMast.setBarcode(sourceLoc.getBarcode()); // 托盘码 wrkMast.setLinkMis("N"); wrkMast.setAppeUser(userId); wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); wrkMast.setModiTime(now); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("保存工作档失败"); } // 工作档明细保存 for (LocDetl locDetl : locDetls) { WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(locDetl); wrkDetl.setWrkNo(workNo); wrkDetl.setIoTime(now); wrkDetl.setAnfme(locDetl.getAnfme()); wrkDetl.setAppeTime(now); wrkDetl.setAppeUser(userId); wrkDetl.setModiTime(now); wrkDetl.setModiUser(userId); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作档明细失败"); } } // 修改源库位状态 if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) { sourceLoc.setLocSts("R"); // R.出库预约 sourceLoc.setModiUser(userId); sourceLoc.setModiTime(now); if (!locMastService.updateById(sourceLoc)) { throw new CoolException("更新源库位状态失败"); } } else { throw new CoolException("源库位出库失败,状态:" + sourceLoc.getLocSts$()); } // 修改目标库位状态 if (loc.getLocSts().equals("O")) { loc.setLocSts("S"); // S.入库预约 loc.setModiTime(now); loc.setModiUser(userId); if (!locMastService.updateById(loc)) { throw new CoolException("更新目标库位状态失败"); } } else { throw new CoolException("移转失败,目标库位状态:" + loc.getLocSts$()); } } /** * 转移任务下发 */ public void transferTaskStart() { for (DevpSlave.Sta sta : slaveProperties.getDevp().get(1).getInSta()) { try { // 获取入库站信息 @@ -1082,7 +1200,7 @@ continue; } log.info("转移任务完成:transferTask:" + JSON.toJSONString(transferTask)); transferTask.setStatus(5); transferTask.setStatus(3); transferTaskService.updateById(transferTask); } } catch (Exception e) { src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -270,7 +270,11 @@ if (Cools.isEmpty(basDevp)) { return R.error("站点号有误" + param.getStartPoint()); } if (Cools.isEmpty(param.getHeight())) { return R.error("高度不能为空" + param.getStartPoint()); } if (param.getType() == 0 && basDevp.getAgvStartPick() == 1) { basDevp.setInreq2(param.getHeight().toString()); return R.ok(); } else if (param.getType() == 1 && basDevp.getAgvStartPlace() == 1) { return R.ok(); src/main/java/com/zy/asrs/service/impl/TaskWrkReportServiceImpl.java
@@ -1,42 +1,11 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.domain.enums.WorkNoType; import com.zy.asrs.entity.StaDesc; import com.zy.asrs.entity.TaskWrk; import com.zy.asrs.entity.TaskWrkReport; import com.zy.asrs.mapper.TaskWrkMapper; import com.zy.asrs.mapper.TaskWrkReportMapper; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.StaDescService; import com.zy.asrs.service.TaskWrkReportService; import com.zy.asrs.service.TaskWrkService; import com.zy.asrs.utils.Utils; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import com.zy.core.DevpThread; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.CrnTaskModeType; import com.zy.core.enums.SlaveType; import com.zy.core.model.CrnSlave; import com.zy.core.model.Task; import com.zy.core.model.command.CrnCommand; import com.zy.core.model.protocol.StaProtocol; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.HashMap; import java.util.List; @Slf4j @Service src/main/java/com/zy/asrs/service/impl/TransferTaskServiceImpl.java
@@ -14,11 +14,11 @@ @Override public TransferTask selectByStartPoint(Integer startPoint) { return null; return this.baseMapper.selectByStartPoint(startPoint); } @Override public TransferTask selectByEndPoint(Integer endPoint) { return null; return this.baseMapper.selectByEndPoint(endPoint); } } src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -1,16 +1,13 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.*; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -32,11 +29,7 @@ private WrkMastLogService wrkMastLogService; @Autowired private ToWmsService toWmsService; private ToWmsService toWmsService; @Override src/main/java/com/zy/asrs/task/TaskReportScheduler.java
@@ -17,7 +17,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.io.IOException; src/main/java/com/zy/asrs/utils/VersionUtils.java
@@ -62,7 +62,7 @@ } /** * 库位移转时类型检测 * 库位移转时类型检测 **/ public static void locMoveCheckLocType(LocMast sourceLoc, LocMast loc) { // 如果源库位是高库位,目标库位是低库位 @@ -72,7 +72,7 @@ } /** * 库位移转时类型检测 * 库位移转时类型检测 **/ public static boolean locMoveCheckLocType(LocMast loc, LocTypeDto dto) { src/main/java/com/zy/core/MainProcess.java
@@ -39,8 +39,11 @@ if (!SystemProperties.WCS_RUNNING_STATUS.get()) { continue; } // 跑库程序 //mainService.debug(); // 跑库程序.未调试测试 //mainService.debug("F"); //独立输送线任务.未调试测试 //mainService.transferTaskStart(); //mainService.transferTaskEnd(); // 入库 ===>> 入库站到堆垛机站,根据条码扫描生成入库工作档 src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -121,20 +121,6 @@ this.slave = slave; } public static void main(String[] args) { ArrayList<Integer> staNos = staNos1; System.out.println(staNos.indexOf(129)); System.out.println(staNos.size()); for (int i = 0; i < staNos.size(); i++) { // System.out.println(i*2); // System.out.println(i*2 + 200); // System.out.println(i); } int index = staNos.indexOf(128); System.out.println(index * 2); System.out.println(index * 2 + 200); } private ArrayList<Integer> getStaNo() { switch (slave.getId()) { @@ -586,25 +572,5 @@ siemensS7Net.ConnectClose(); } // public static void main(String[] args) throws Exception { // DevpSlave slave = new DevpSlave(); // slave.setIp("192.168.2.125"); // SiemensDevpThread devpThread = new SiemensDevpThread(slave); // devpThread.connect(); // devpThread.read(); // // 写 // StaProtocol staProtocol = devpThread.getStation().get(1); // staProtocol.setWorkNo((short) 232); // staProtocol.setStaNo((short) 6); // staProtocol.setAutoing(true); // staProtocol.setEmptyMk(true); // staProtocol.setInEnable(true); // devpThread.write(staProtocol); // System.out.println("----------------------------------------"); // // 读 // devpThread.read(); // System.out.println(JSON.toJSONString(devpThread.station)); // // } } src/main/resources/application.yml
@@ -60,3 +60,9 @@ successCode: 200 msg: msg data: data loc-move: enable: false crn1: false crn2: false crn3: false crn4: false src/main/resources/mapper/TransferTaskMapper.xml
@@ -4,4 +4,12 @@ <select id="selectByStartPoint" resultType="com.zy.asrs.entity.TransferTask"> select top 1 * from wcs_transfer_task where start_point = #{startPoint} and status = 1 </select> <select id="selectByEndPoint" resultType="com.zy.asrs.entity.TransferTask"> select top 1 * from wcs_transfer_task where targetPoint = #{endPoint} and status = 2 </select> </mapper>