package com.zy.asrs.task.handler; import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.AgvLocDetl; import com.zy.asrs.entity.AgvWaitPakin; import com.zy.asrs.entity.AgvWrkDetl; import com.zy.asrs.entity.AgvWrkMast; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.util.List; import java.util.Map; @Service public class AgvWrkMastHandler extends AbstractHandler { @Autowired AgvWrkMastService agvWrkMastService; @Autowired AgvLocMastService agvLocMastService; @Autowired AgvLocDetlService agvLocDetlService; @Autowired AgvWrkMastLogService agvWrkMastLogService; @Autowired AgvWrkDetlService agvWrkDetlService; @Autowired AgvWrkDetlLogService agvWrkDetlLogService; @Autowired AgvWaitPakinService agvWaitPakinService; @Autowired AgvWaitPakinLogService agvWaitPakinLogService; @Autowired OrderService orderService; @Transactional public ReturnT completedPutWayWrk(AgvWrkMast agvWrkMast) { int wrkNo = agvWrkMast.getWrkNo(); String barcode = agvWrkMast.getBarcode(); String orderNo = getOrderNoByWrkNo(wrkNo); //修改工作档状态为206.库存更新完成 agvWrkMast.setWrkSts(206L); agvWrkMastService.updateById(agvWrkMast); //修改目标库位状态为F.在库 agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F"); //生成AGV工作历史档 agvWrkMastLogService.save(wrkNo); //生成AGV工作明细历史档 agvWrkDetlLogService.save(wrkNo); //删除AGV工作档 agvWrkMastService.deleteById(wrkNo); //删除AGV工作明细档 agvWrkDetlService.delete(new EntityWrapper().eq("wrk_no",wrkNo)); if(agvWrkMast.getIoType() == 1){ //更新目标库位明细 agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo); //生成入库通知历史档 agvWaitPakinLogService.save(barcode); //删除入库通知档 agvWaitPakinService.delete(new EntityWrapper().eq("zpallet",barcode)); } if(!isJSON(orderNo)){ //检查订单是否已完成 orderService.checkComplete(orderNo); }else{ List maps = JSONArray.parseArray(orderNo, Map.class); maps.forEach(map -> { String o = map.get("orderNo").toString(); orderService.checkComplete(o); }); } return SUCCESS; } @Transactional public ReturnT completedCarryWrk(AgvWrkMast agvWrkMast) { int wrkNo = agvWrkMast.getWrkNo(); String orderNo = getOrderNoByWrkNo(wrkNo); //修改工作档状态为206.库存更新完成 agvWrkMast.setWrkSts(206L); agvWrkMastService.updateById(agvWrkMast); //修改源库位状态为O agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O"); //更新目标库位明细 agvLocDetlService.delete(new EntityWrapper().eq("loc_no",agvWrkMast.getSourceLocNo())); //生成AGV工作历史档 agvWrkMastLogService.save(wrkNo); //生成AGV工作明细历史档 agvWrkDetlLogService.save(wrkNo); //删除AGV工作档 agvWrkMastService.deleteById(wrkNo); //删除AGV工作明细档 agvWrkDetlService.delete(new EntityWrapper().eq("wrk_no",wrkNo)); if(!isJSON(orderNo)){ //检查订单是否已完成 orderService.checkComplete(orderNo); }else{ List maps = JSONArray.parseArray(orderNo, Map.class); maps.forEach(map -> { String o = map.get("orderNo").toString(); orderService.checkComplete(o); }); } return SUCCESS; } @Transactional public ReturnT startPutWayWrk(List agvWrkMastList) throws IOException { int startWwrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway"); int code = agvWrkMastService.containerMove(agvWrkMastList); if(code == 0){ agvWrkMastList.forEach(agvWrkMast -> { //202.RCS取货中 agvWrkMast.setWrkSts((long)202); agvWrkMastService.updateById(agvWrkMast); if(agvWrkMast.getIoType() == 1){ //修改AGV入库通知档状态入出状态为Y agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y"); } }); //agvWrkMastService.updateBatchById(agvWrkMastList); return SUCCESS; } return FAIL; } @Transactional public ReturnT startCarryWrk(List agvWrkMastList) throws IOException { int code = agvWrkMastService.startWrk(agvWrkMastList,"carry"); if(code == 0){ agvWrkMastList.forEach(agvWrkMast -> { //202.RCS取货中 agvWrkMast.setWrkSts((long)202); agvWrkMastService.updateById(agvWrkMast); }); //agvWrkMastService.updateBatchById(agvWrkMastList); return SUCCESS; } return FAIL; } private String getOrderNoByWrkNo(int wrkNo){ AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper().eq("wrk_no", wrkNo)); return agvWrkDetl.getOrderNo(); } public static void main(String[] args) { String order = "[{\"anfme\":50.0,\"orderNo\":\"CS110011001111\"},{\"anfme\":50.0,\"orderNo\":\"CS110011001110\"}]"; List maps = JSONArray.parseArray(order, Map.class); maps.forEach(map -> { Object orderNo = map.get("orderNo"); System.out.println(orderNo ); }); } private boolean isJSON(String str) { if (Cools.isEmpty(str)) { return false; } else { str = str.trim(); if (str.startsWith("{") && str.endsWith("}")) { return true; } else if (str.startsWith("[") && str.endsWith("]")) { return true; } else { return false; } } } }