From fb4e7fd8575a97467a972028a91484f71985656c Mon Sep 17 00:00:00 2001 From: Junjie <540245094@qq.com> Date: 星期四, 12 九月 2024 17:03:47 +0800 Subject: [PATCH] # --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java | 468 ++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 387 insertions(+), 81 deletions(-) diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java index 6c7c7ce..92c9b51 100644 --- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java +++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java @@ -3,16 +3,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zy.asrs.framework.exception.CoolException; import com.zy.asrs.wms.asrs.entity.*; -import com.zy.asrs.wms.asrs.entity.enums.LocStsType; +import com.zy.asrs.wms.asrs.entity.enums.*; +import com.zy.asrs.wms.asrs.entity.param.FieldParam; import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam; import com.zy.asrs.wms.asrs.service.*; +import com.zy.asrs.wms.utils.LocUtils; +import com.zy.asrs.wms.utils.OrderUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; -import java.util.List; -import java.util.Random; +import java.util.*; @Service("workService") public class WorkServiceImpl implements WorkService { @@ -30,6 +31,8 @@ @Autowired private TaskDetlFieldService taskDetlFieldService; @Autowired + private OrderService orderService; + @Autowired private OrderDetlService orderDetlService; @Autowired private LocService locService; @@ -41,6 +44,22 @@ private TaskDetlLogService taskDetlLogService; @Autowired private TaskDetlFieldLogService taskDetlFieldLogService; + @Autowired + private LocUtils locUtils; + @Autowired + private ShelvesRuleService shelvesRuleService; + @Autowired + private LanewayRuleService lanewayRuleService; + @Autowired + private CircleRuleService circleRuleService; + @Autowired + private LocTypeBindService locTypeBindService; + @Autowired + private LocTypeService locTypeService; + @Autowired + private MatService matService; + @Autowired + private OrderUtils orderUtils; @Override public String generateTaskNo(Long taskType) { @@ -55,20 +74,177 @@ } @Override - public Loc generateLoc(Long taskType) { - LocSts locSts = locStsService.getOne(new LambdaQueryWrapper<LocSts>().eq(LocSts::getLocSts, String.valueOf(LocStsType.O))); - List<Loc> list = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getLocStsId, locSts.getId())); - if (list.isEmpty()) { - throw new CoolException("娌℃湁绌哄簱浣�"); + public Loc generateEmptyLoc(Long taskType, Integer locTypeHeight) { + List<ShelvesRule> shelvesRules = shelvesRuleService.list(new LambdaQueryWrapper<ShelvesRule>().eq(ShelvesRule::getStatus, 1).orderByDesc(ShelvesRule::getCreateTime)); + if(shelvesRules.isEmpty()) { + throw new CoolException("鏈厤缃笂鏋惰鍒�"); } - return list.get(0); + ShelvesRule shelvesRule = shelvesRules.get(0); + //鍙敤宸烽亾 + List<Long> laneList = shelvesRule.getLaneList(); + //鍙敤宸烽亾Row + List<Integer> laneRowList = new ArrayList<>(); + if (laneList != null) { + //鑾峰彇宸烽亾 + List<LanewayRule> lanewayRules = lanewayRuleService.listByIds(laneList); + for (LanewayRule lanewayRule : lanewayRules) { + laneRowList.addAll(lanewayRule.getLaneX$()); + laneRowList.addAll(lanewayRule.getLaneY$()); + } + } + + Integer currentLev = null; + if (shelvesRule.getRuleType().equals(ShelvesRuleType.HIGH.id)) { + //浼樺厛绔嬩綋灞� + currentLev = circleRuleService.getCurrentValueByFlag(CircleRuleType.LEV.flag); + } + + List<ShelvesRuleDetl> ruleDetls = shelvesRule.getRuleDetl$(); + if(ruleDetls.isEmpty()) { + throw new CoolException("鏈厤缃笂鏋惰鍒欐槑缁�"); + } + + Loc defaultLoc = null; + + for (ShelvesRuleDetl ruleDetl : ruleDetls) { + if (ruleDetl.getDetlType().equals(ShelvesRuleDetlType.TASK_OR_LOC.id)) { + //浠庡簱瀛樻垨浠诲姟涓尮閰嶇浉閭诲簱浣� + defaultLoc = locUtils.getNeighborEmptyLoc(taskType, locTypeHeight); + if (defaultLoc != null) { + return defaultLoc; + } + } + + if (ruleDetl.getDetlType().equals(ShelvesRuleDetlType.SUGGEST.id)) { + //鑾峰彇鎺ㄨ崘搴撲綅 + List<Loc> suggestLoc = locUtils.getSuggestEmptyLoc(taskType, locTypeHeight, laneRowList, currentLev); + //鑾峰彇搴撲綅 + if (!suggestLoc.isEmpty()) { + defaultLoc = locUtils.filterLoc(taskType, suggestLoc); + if(defaultLoc != null) { + return defaultLoc; + } + } + } + + if (ruleDetl.getDetlType().equals(ShelvesRuleDetlType.COMPLETE.id)) { + //浠庡叏灞�搴撲綅涓幏鍙�(瀹屾暣宸烽亾) + List<Loc> globalLoc = locUtils.getGlobalEmptyLoc(taskType, locTypeHeight, laneRowList, currentLev); + //鑾峰彇搴撲綅 + if (!globalLoc.isEmpty()) { + defaultLoc = locUtils.filterAllLoc(globalLoc); + if(defaultLoc != null) { + return defaultLoc; + } + } + } + } + + return defaultLoc; + } + + @Override + public synchronized Loc generateLoc(Long taskType, String barcode, Integer locTypeHeight) { + List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, barcode)); + if (taskType != 10 && waitPakins.isEmpty()) { + throw new CoolException("鎵樼洏鏈粍鎵�"); + } + + WaitPakin waitPakin = waitPakins.get(0); + OrderDetl detl = waitPakin.getDetl$(); + if (detl == null) { + throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�"); + } + String batch = detl.getBatch(); + List<FieldParam> uniqueFields = detl.getUniqueField(); + + Mat mat = detl.getMat$(); + if (mat == null) { + throw new CoolException("鍟嗗搧涓嶅瓨鍦�"); + } + + return generateLoc(taskType, mat.getId(), batch, uniqueFields, locTypeHeight); + } + + @Override + public synchronized Loc generateLoc(Long taskType, Long matId, String batch, List<FieldParam> uniqueFields, Integer locTypeHeight) { + Mat mat = matService.getById(matId); + if (mat == null) { + throw new CoolException("鍟嗗搧涓嶅瓨鍦�"); + } + + List<ShelvesRule> shelvesRules = shelvesRuleService.list(new LambdaQueryWrapper<ShelvesRule>().eq(ShelvesRule::getStatus, 1).orderByDesc(ShelvesRule::getCreateTime)); + if (shelvesRules.isEmpty()) { + throw new CoolException("鏈厤缃笂鏋惰鍒�"); + } + ShelvesRule shelvesRule = shelvesRules.get(0); + //鍙敤宸烽亾 + List<Long> laneList = shelvesRule.getLaneList(); + //鍙敤宸烽亾Row + List<Integer> laneRowList = new ArrayList<>(); + if (laneList != null) { + //鑾峰彇宸烽亾 + List<LanewayRule> lanewayRules = lanewayRuleService.listByIds(laneList); + for (LanewayRule lanewayRule : lanewayRules) { + laneRowList.addAll(lanewayRule.getLaneX$()); + laneRowList.addAll(lanewayRule.getLaneY$()); + } + } + + Integer currentLev = null; + if (shelvesRule.getRuleType().equals(ShelvesRuleType.HIGH.id)) { + //浼樺厛绔嬩綋灞� + currentLev = circleRuleService.getCurrentValueByFlag(CircleRuleType.LEV.flag); + } + + List<ShelvesRuleDetl> ruleDetls = shelvesRule.getRuleDetl$(); + if (ruleDetls.isEmpty()) { + throw new CoolException("鏈厤缃笂鏋惰鍒欐槑缁�"); + } + + Loc defaultLoc = null; + + for (ShelvesRuleDetl ruleDetl : ruleDetls) { + if (ruleDetl.getDetlType().equals(ShelvesRuleDetlType.TASK_OR_LOC.id)) { + //浠庡簱瀛樻垨浠诲姟涓尮閰嶇浉閭诲簱浣� + defaultLoc = locUtils.getNeighborLoc(taskType, mat.getId(), batch, uniqueFields, locTypeHeight); + if (defaultLoc != null) { + return defaultLoc; + } + } + + if (ruleDetl.getDetlType().equals(ShelvesRuleDetlType.SUGGEST.id)) { + //鑾峰彇鎺ㄨ崘搴撲綅 + List<Loc> suggestLoc = locUtils.getSuggestLoc(taskType, mat.getId(), batch, locTypeHeight, laneRowList, currentLev); + //鑾峰彇搴撲綅 + if (!suggestLoc.isEmpty()) { + defaultLoc = locUtils.filterLoc(taskType, suggestLoc); + if (defaultLoc != null) { + return defaultLoc; + } + } + } + + if (ruleDetl.getDetlType().equals(ShelvesRuleDetlType.COMPLETE.id)) { + //浠庡叏灞�搴撲綅涓幏鍙�(瀹屾暣宸烽亾) + List<Loc> globalLoc = locUtils.getGlobalLoc(taskType, locTypeHeight, laneRowList, currentLev); + //鑾峰彇搴撲綅 + if (!globalLoc.isEmpty()) { + defaultLoc = locUtils.filterAllLoc(globalLoc); + if (defaultLoc != null) { + return defaultLoc; + } + } + } + } + return defaultLoc; } @Override @Transactional public boolean generatePakIn(GeneratePakInParam param) { List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, param.getBarcode())); - if (waitPakins.isEmpty()) { + if (param.getTaskType() != 10 && waitPakins.isEmpty()) { throw new CoolException("鎵樼洏鏈粍鎵�"); } @@ -77,8 +253,16 @@ throw new CoolException("浠诲姟绫诲瀷涓嶅瓨鍦�"); } + Task one = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, param.getBarcode())); + if (one != null) { + throw new CoolException("浠诲姟宸茬粡鍒涘缓锛岃鍕块噸澶嶈姹�"); + } + //鐢熸垚搴撲綅 - Loc loc = this.generateLoc(param.getTaskType()); + Loc loc = this.generateLoc(param.getTaskType(), param.getBarcode(), param.getLocTypeHeight()); + if(loc == null) { + throw new CoolException("娌℃湁绌哄簱浣�"); + } Task task = new Task(); task.setTaskNo(this.generateTaskNo(taskType.getId()));//浠诲姟鍙� @@ -108,6 +292,7 @@ taskDetl.setOrderNo(waitPakin.getOrderNo()); taskDetl.setDetlId(waitPakin.getDetlId()); taskDetl.setMatId(waitPakin.getDetl$().getMatId()); + taskDetl.setMatnr(waitPakin.getDetl$().getMat$().getMatnr()); boolean taskDetlSave = taskDetlService.save(taskDetl); if(!taskDetlSave){ throw new CoolException("浠诲姟鏄庣粏鐢熸垚澶辫触"); @@ -135,18 +320,72 @@ throw new CoolException("缁勬墭閫氱煡妗f洿鏂板け璐�"); } - //鏇存柊璁㈠崟鏁版嵁 + //鏇存柊璁㈠崟鏄庣粏鏁版嵁 OrderDetl orderDetl = orderDetlService.getById(taskDetl.getDetlId()); if(orderDetl == null){ - throw new CoolException("璁㈠崟鏁版嵁寮傚父"); + throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�"); } orderDetl.setWorkQty(orderDetl.getWorkQty() + taskDetl.getAnfme()); orderDetl.setUpdateTime(new Date()); boolean orderDetlUpdate = orderDetlService.updateById(orderDetl); if(!orderDetlUpdate){ - throw new CoolException("璁㈠崟鏇存柊澶辫触"); + throw new CoolException("璁㈠崟鏄庣粏鏇存柊澶辫触"); } + + //鑾峰彇璁㈠崟 + Order order = orderService.getById(taskDetl.getOrderId()); + if(order == null){ + throw new CoolException("璁㈠崟涓嶅瓨鍦�"); + } + + //鏇存柊璁㈠崟鐘舵�� + if (order.getOrderSettle().equals(OrderSettleType.WAIT.val())) { + order.setOrderSettle(OrderSettleType.WORKING.val()); + order.setUpdateTime(new Date()); + if (!orderService.updateById(order)) { + throw new CoolException("璁㈠崟鏁版嵁鏇存柊澶辫触"); + } + } + } + + //搴撲綅O => S + loc.setLocStsId(LocStsType.S.val()); + loc.setUpdateTime(new Date()); + boolean locUpdate = locService.updateById(loc); + if(!locUpdate){ + throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�"); + } + + return true; + } + + @Override + public boolean generateEmptyPakIn(GeneratePakInParam param) { + TaskType taskType = taskTypeService.getById(param.getTaskType()); + if (taskType == null) { + throw new CoolException("浠诲姟绫诲瀷涓嶅瓨鍦�"); + } + + //鐢熸垚搴撲綅 + Loc loc = this.generateEmptyLoc(param.getTaskType(), param.getLocTypeHeight()); + if(loc == null) { + throw new CoolException("娌℃湁绌哄簱浣�"); + } + + Task task = new Task(); + task.setTaskNo(this.generateTaskNo(taskType.getId()));//浠诲姟鍙� + task.setTaskSts(1L);//1.鐢熸垚鍏ュ簱浠诲姟 + task.setTaskType(taskType.getId());//浠诲姟绫诲瀷 + task.setIoPri(this.generateIoPri(taskType.getId()));//浼樺厛绾� + task.setOriginLoc(null); + task.setTargetLoc(loc.getLocNo()); + task.setOriginSite(param.getOriginSite()); + task.setTargetSite(null); + task.setBarcode(null);//鎵樼洏鐮� + boolean taskSave = taskService.save(task); + if (!taskSave) { + throw new CoolException("浠诲姟鐢熸垚澶辫触"); } //搴撲綅O => S @@ -196,15 +435,11 @@ throw new CoolException("浠诲姟涓嶅瓨鍦�"); } - List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(taskId); - if (taskDetls.isEmpty()) { - throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�"); - } - //鏇存柊搴撲綅鐘舵�� Loc loc = null; switch (task.getTaskType().intValue()) { case 1://鍏ュ簱 + case 10://绌烘澘 case 53://鎷f枡 case 54://骞舵澘 case 57://鐩樼偣 @@ -225,6 +460,7 @@ case 103://鎷f枡 case 104://骞舵澘 case 107://鐩樼偣 + case 110://绌烘澘 loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc())); if(loc == null){ throw new CoolException("搴撲綅涓嶅瓨鍦�"); @@ -240,70 +476,10 @@ break; } - //鍥炴粴璁㈠崟 - for (TaskDetl taskDetl : taskDetls) { - OrderDetl orderDetl = orderDetlService.getById(taskDetl.getDetlId()); - if(orderDetl == null){ - throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�"); - } - - //鍥炴粴宸ヤ綔鏁伴噺 - orderDetl.setWorkQty(orderDetl.getWorkQty() - taskDetl.getAnfme()); - orderDetl.setUpdateTime(new Date()); - boolean orderDetlUpdate = orderDetlService.updateById(orderDetl); - if(!orderDetlUpdate){ - throw new CoolException("宸ヤ綔鏁伴噺鍥炴粴澶辫触"); - } - - //鍏ュ簱鍥炴粴缁勬墭閫氱煡妗� - if (task.getTaskType() == 1) { - WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getDetlId, taskDetl.getDetlId()).eq(WaitPakin::getBarcode, task.getBarcode())); - if(waitPakin == null){ - throw new CoolException("缁勬墭閫氱煡妗d笉瀛樺湪"); - } - - waitPakin.setIoStatus(0); - waitPakin.setUpdateTime(new Date()); - boolean updateWaitPakin = waitPakinService.updateById(waitPakin); - if(!updateWaitPakin){ - throw new CoolException("缁勬墭閫氱煡妗e洖婊氬け璐�"); - } - } - - List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId())); - for (TaskDetlField detlField : detlFields) { - //鏄庣粏鎵╁睍瀛楁鏁版嵁淇濆瓨鑷冲巻鍙叉。 - TaskDetlFieldLog taskDetlFieldLog = new TaskDetlFieldLog(); - taskDetlFieldLog.sync(detlField); - if (!taskDetlFieldLogService.save(taskDetlFieldLog)) { - throw new CoolException("鏄庣粏鎵╁睍瀛楁杞巻鍙叉。妗堝け璐�"); - } - - //鍒犻櫎鏄庣粏鎵╁睍 - boolean removeField = taskDetlFieldService.removeById(detlField.getId()); - if(!removeField){ - throw new CoolException("鍥炴粴鎵╁睍鏄庣粏澶辫触"); - } - } - - - //鏄庣粏鏁版嵁淇濆瓨鑷冲巻鍙叉。 - TaskDetlLog taskDetlLog = new TaskDetlLog(); - taskDetlLog.sync(taskDetl); - if (!taskDetlLogService.save(taskDetlLog)) { - throw new CoolException("鏄庣粏鏁版嵁杞巻鍙叉。妗堝け璐�"); - } - - //鍒犻櫎鏄庣粏 - boolean removeDetl = taskDetlService.removeById(taskDetl.getId()); - if(!removeDetl){ - throw new CoolException("鍥炴粴鏄庣粏澶辫触"); - } - } - //鏁版嵁淇濆瓨鑷冲巻鍙叉。 TaskLog taskLog = new TaskLog(); taskLog.sync(task); + taskLog.setId(null); if (!taskLogService.save(taskLog)) { throw new CoolException("浠诲姟妗f杞巻鍙叉。妗堝け璐�"); } @@ -314,6 +490,136 @@ throw new CoolException("鍥炴粴浠诲姟澶辫触"); } + if (task.getTaskType() != 10) { + List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(taskId); + if (taskDetls.isEmpty()) { + throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�"); + } + + //鍥炴粴璁㈠崟 + for (TaskDetl taskDetl : taskDetls) { + if (taskDetl.getDetlId() != null) { + orderUtils.updateWorkQty(taskDetl.getDetlId(), taskDetl.getAnfme(), false); + } + + //鍏ュ簱鍥炴粴缁勬墭閫氱煡妗� + if (task.getTaskType() == 1) { + WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getDetlId, taskDetl.getDetlId()).eq(WaitPakin::getBarcode, task.getBarcode())); + if(waitPakin == null){ + throw new CoolException("缁勬墭閫氱煡妗d笉瀛樺湪"); + } + + waitPakin.setIoStatus(0); + waitPakin.setUpdateTime(new Date()); + boolean updateWaitPakin = waitPakinService.updateById(waitPakin); + if(!updateWaitPakin){ + throw new CoolException("缁勬墭閫氱煡妗e洖婊氬け璐�"); + } + } + + //鏄庣粏鏁版嵁淇濆瓨鑷冲巻鍙叉。 + TaskDetlLog taskDetlLog = new TaskDetlLog(); + taskDetlLog.sync(taskDetl); + taskDetlLog.setId(null); + taskDetlLog.setTaskId(taskLog.getId()); + if (!taskDetlLogService.save(taskDetlLog)) { + throw new CoolException("鏄庣粏鏁版嵁杞巻鍙叉。妗堝け璐�"); + } + + //鍒犻櫎鏄庣粏 + boolean removeDetl = taskDetlService.removeById(taskDetl.getId()); + if(!removeDetl){ + throw new CoolException("鍥炴粴鏄庣粏澶辫触"); + } + + List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId())); + for (TaskDetlField detlField : detlFields) { + //鏄庣粏鎵╁睍瀛楁鏁版嵁淇濆瓨鑷冲巻鍙叉。 + TaskDetlFieldLog taskDetlFieldLog = new TaskDetlFieldLog(); + taskDetlFieldLog.sync(detlField); + taskDetlFieldLog.setId(null); + taskDetlFieldLog.setDetlId(taskDetlLog.getId()); + if (!taskDetlFieldLogService.save(taskDetlFieldLog)) { + throw new CoolException("鏄庣粏鎵╁睍瀛楁杞巻鍙叉。妗堝け璐�"); + } + + //鍒犻櫎鏄庣粏鎵╁睍 + boolean removeField = taskDetlFieldService.removeById(detlField.getId()); + if(!removeField){ + throw new CoolException("鍥炴粴鎵╁睍鏄庣粏澶辫触"); + } + } + } + } + + return true; + } + + @Override + public boolean pickTask(Long taskId) { + Task task = taskService.getById(taskId); + if(task == null){ + throw new CoolException("浠诲姟涓嶅瓨鍦�"); + } + + if (task.getTaskType() != 103) { + throw new CoolException("浠诲姟绫诲瀷涓嶅彲鎷f枡"); + } + + if (task.getTaskSts() != 200) { + throw new CoolException("褰撳墠鐘舵�佷笉鍙嫞鏂�"); + } + + //鑾峰彇婧愬簱浣� + Loc originLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc())); + if(originLoc == null){ + throw new CoolException("婧愬簱浣嶄笉瀛樺湪"); + } + + //鑾峰彇婧愬簱浣嶉珮搴� + LocTypeBind locTypeBind = locTypeBindService.getOne(new LambdaQueryWrapper<LocTypeBind>().eq(LocTypeBind::getLocId, originLoc.getId()).in(LocTypeBind::getTypeId, LocBindType.HEIGHT.list())); + if(locTypeBind == null){ + throw new CoolException("搴撲綅绫诲瀷涓嶅瓨鍦�"); + } + LocType locType = locTypeService.getById(locTypeBind.getTypeId()); + if(locType == null){ + throw new CoolException("搴撲綅绫诲瀷涓嶅瓨鍦�"); + } + LocTypeHeightType locTypeHeightType = LocTypeHeightType.get(locType.getFlag()); + if(locTypeHeightType == null){ + throw new CoolException("楂樹綆搴撲綅绫诲瀷涓嶅瓨鍦�"); + } + + Long taskType = task.getTaskType() - 50; + + List<TaskDetl> taskDetls = taskDetlService.list(new LambdaQueryWrapper<TaskDetl>().eq(TaskDetl::getTaskId, taskId).gt(TaskDetl::getAnfme, 0)); + if (taskDetls.isEmpty()) { + throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�"); + } + TaskDetl taskDetl = taskDetls.get(0); + + //鐢熸垚搴撲綅 + Loc loc = this.generateLoc(taskType, taskDetl.getMatId(), taskDetl.getBatch(), taskDetl.getUniqueField(), locTypeHeightType.id); + if(loc == null) { + throw new CoolException("娌℃湁绌哄簱浣�"); + } + + task.setTaskSts(1L);//1.鐢熸垚鍏ュ簱浠诲姟 + task.setTaskType(taskType); + task.setTargetLoc(loc.getLocNo()); + task.setUpdateTime(new Date()); + if (!taskService.updateById(task)) { + throw new CoolException("鎷f枡澶辫触"); + } + + //搴撲綅O => S + loc.setLocStsId(LocStsType.S.val()); + loc.setUpdateTime(new Date()); + boolean locUpdate = locService.updateById(loc); + if(!locUpdate){ + throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�"); + } + return true; } } -- Gitblit v1.9.1