| | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.plugins.Page; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.domain.enums.TaskStatusType; |
| | | import com.zy.asrs.domain.enums.WorkNoType; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.entity.TaskWrk; |
| | | import com.zy.asrs.entity.TaskWrkReport; |
| | | import com.zy.asrs.entity.TaskWrkReportLog; |
| | | import com.zy.asrs.entity.wms.WmsFeedback; |
| | | import com.zy.asrs.mapper.TaskWrkMapper; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.service.TaskWrkReportLogService; |
| | | import com.zy.asrs.service.TaskWrkReportService; |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import com.zy.common.utils.Synchro; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.IOException; |
| | | import java.util.HashMap; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * 定时将任务(完成、取消)转成日志 |
| | |
| | | @Value("${wms.url}") |
| | | private String wmsUrl; |
| | | |
| | | @Value("${wms.TaskExecCallback}") |
| | | @Value("${wms.taskExecCallback}") |
| | | private String TaskExecCallback; |
| | | |
| | | @Resource |
| | | private TaskWrkMapper taskWrkMapper; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | public void execute() throws IOException { |
| | | Page<TaskWrkReport> taskWrkReportPage = taskWrkReportService.selectPage(new Page<>(0, 10)); |
| | | @Resource |
| | | private LocMastService locMastService; |
| | | |
| | | @Resource |
| | | private CommonService commonService; |
| | | |
| | | |
| | | @Scheduled(cron = "0/5 * * * * ? ") |
| | | public synchronized void execute() throws IOException { |
| | | Page<TaskWrkReport> taskWrkReportPage = taskWrkReportService.selectPage(new Page<>(0, 100), new EntityWrapper<TaskWrkReport>().orderBy("create_time", true)); |
| | | if (taskWrkReportPage.getRecords() != null) { |
| | | //新增一个过滤机制 |
| | | for (TaskWrkReport taskWrk : taskWrkReportPage.getRecords()) { |
| | | HashMap<String, Object> headParam = new HashMap<>(); |
| | | if (taskWrk.getStatus().equals(TaskStatusType.OVER.id) || taskWrk.getStatus() == 7) {//完成 |
| | | headParam.put("Result", 1); |
| | | } else if (taskWrk.getStatus().equals(TaskStatusType.CANCEL.id)) { |
| | | headParam.put("Result", 2); |
| | | } |
| | | WmsFeedback wmsFeedback = getWmsFeedback(taskWrk); |
| | | String response = ""; |
| | | Boolean bool = false; |
| | | boolean bool = false; |
| | | try { |
| | | headParam.put("TaskNo", taskWrk.getTaskNo()); |
| | | log.info("wcs手动完成任务上报wms={}", taskWrk); |
| | | response = new HttpHandler.Builder() |
| | | // .setHeaders(headParam) |
| | | .setUri(wmsUrl) |
| | | .setPath(TaskExecCallback) |
| | | .setJson(JSON.toJSONString(headParam)) |
| | | .setJson(JSON.toJSONString(wmsFeedback)) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | TaskWrkReportLog taskWrkLog = new TaskWrkReportLog(); |
| | | Synchro.Copy(taskWrk, taskWrkLog); |
| | | if (!taskWrkReportLogService.insert(taskWrkLog)) { |
| | | throw new CoolException("转历史档失败" + taskWrkLog); |
| | | if (!Cools.isEmpty(response)) { |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (Integer.parseInt(String.valueOf(jsonObject.get("code"))) == 200) { |
| | | TaskWrkReportLog taskWrkLog = new TaskWrkReportLog(); |
| | | Synchro.Copy(taskWrk, taskWrkLog); |
| | | taskWrkLog.setId(null); |
| | | if (!taskWrkReportLogService.insert(taskWrkLog)) { |
| | | throw new CoolException("转历史档失败" + taskWrkLog); |
| | | } |
| | | if (!taskWrkReportService.deleteById(taskWrk)) { |
| | | throw new CoolException("任务档删除失败" + taskWrkLog); |
| | | } |
| | | bool = true; |
| | | } |
| | | } |
| | | if (!taskWrkReportService.deleteById(taskWrk)) { |
| | | throw new CoolException("任务档删除失败" + taskWrkLog); |
| | | } |
| | | bool = true; |
| | | |
| | | } catch (Exception e) { |
| | | log.error("wcs手动完成任务上报wms失败{},返回值={}", taskWrk, response); |
| | | } finally { |
| | | apiLogService.save("wcs完成或者取消任务上报wms" |
| | | apiLogService.save("任务状态上报" |
| | | , wmsUrl + TaskExecCallback |
| | | , null |
| | | , "127.0.0.1" |
| | | , JSON.toJSONString(headParam) |
| | | , JSON.toJSONString(wmsFeedback) |
| | | , response |
| | | , bool |
| | | ); |
| | |
| | | |
| | | } |
| | | |
| | | // @Scheduled(cron = "0/5 * * * * ? ") |
| | | public synchronized void autoMoveLoc() { |
| | | int flag = 1; // 1.跑23号堆垛机前7列,1号堆垛机1,9层 2.跑23号堆垛机后8-12列,1号堆垛机2-8层 |
| | | for(int i = 1; i <= 3; i++ ){ |
| | | // 获取堆垛机对应任务 |
| | | Integer count = taskWrkMapper.selectCount(new EntityWrapper<TaskWrk>().eq("crn_no", i)); |
| | | if (count == 0) { |
| | | // 获取堆垛机巷道在库库位 |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "F").eq("crn_no", i)); |
| | | if (locMast != null) { |
| | | // 获取一个移动的目标库位 |
| | | LocMast locMast1; |
| | | if (flag == 1) { |
| | | if (i == 1) { |
| | | locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0") |
| | | .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").in("lev1",1,9)); |
| | | } else { |
| | | locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0") |
| | | .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").le("bay1",7)); |
| | | } |
| | | |
| | | } else { |
| | | if (i == 1) { |
| | | locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0") |
| | | .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").in("lev1",2,3,4,5,6,7,8)); |
| | | } else { |
| | | locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("crn_no", i).eq("status", "0") |
| | | .eq("loc_sts","O").orderBy("lev1").orderBy("bay1").orderBy("row1").gt("bay1",7)); |
| | | } |
| | | |
| | | } |
| | | |
| | | if (locMast1 != null) { |
| | | // 创建移库任务 |
| | | TaskWrk taskWrk = new TaskWrk(); |
| | | Date now = new Date(); |
| | | taskWrk.setTaskNo(locMast1.getLocNo());//任务号 |
| | | taskWrk.setWrkNo(commonService.getWorkNo(WorkNoType.PAKIN.type)); |
| | | taskWrk.setStatus(TaskStatusType.RECEIVE.id);//任务状态:接收 |
| | | taskWrk.setCreateTime(now); |
| | | taskWrk.setIoType(3);//任务类型 |
| | | taskWrk.setIoPri(11);//优先级 |
| | | taskWrk.setBarcode(locMast.getBarcode());//条码 |
| | | taskWrk.setCrnNo(locMast.getCrnNo()); |
| | | taskWrk.setWrkSts(11); |
| | | taskWrk.setStartPoint(locMast.getLocNo());//起点 |
| | | taskWrk.setTargetPoint(locMast1.getLocNo()); |
| | | taskWrkMapper.insert(taskWrk); |
| | | locMast1.setStatus("1"); |
| | | locMastService.updateById(locMast1); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private WmsFeedback getWmsFeedback(TaskWrkReport taskWrk) { |
| | | WmsFeedback feedback = new WmsFeedback(); |
| | | feedback.setBarcode(taskWrk.getBarcode()); |
| | | feedback.setReportTime(DateUtils.convert(new Date())); |
| | | feedback.setIoType(taskWrk.getIoType()); |
| | | feedback.setTaskNo(taskWrk.getTaskNo()); |
| | | feedback.setStatus(taskWrk.getStatus()); |
| | | return feedback; |
| | | } |
| | | } |