| src/main/java/com/zy/asrs/controller/MatController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/entity/InventoryCheckOrder.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/WorkMastScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/utils/Utils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/service/CommonService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/asrs/LocMastMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | 
src/main/java/com/zy/asrs/controller/MatController.java
@@ -69,7 +69,7 @@ EntityWrapper<Mat> wrapper = new EntityWrapper<>(); if (!Cools.isEmpty(condition)) { // wrapper.like("matnr", condition).or().like("maktx", condition); wrapper.like("matnr", condition).or().like("specs", condition); wrapper.like("matnr", condition).or().like("specs", condition).or().like("maktx", condition); } wrapper.orderBy("create_time", false); List<Mat> mats = matService.selectList(wrapper); src/main/java/com/zy/asrs/entity/InventoryCheckOrder.java
@@ -87,9 +87,11 @@ } switch (this.status){ case "1": return "未提交"; return "盘点中"; case "2": return "已提交"; return "盘点完"; case "3": return "已上报"; default: return ""; } src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -17,6 +17,7 @@ import com.zy.common.model.DetlDto; import com.zy.common.model.enums.WorkNoType; import com.zy.common.service.CommonService; import com.zy.common.utils.Synchro; import com.zy.nc.service.NccJcQilibcBarcodeflowWmsService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -794,8 +795,6 @@ } } //如果已经拣料回库,就需要取locNo字段 // String locNo =Cools.isEmpty(wrkMast.getLocNo())? wrkMast.getSourceLocNo():wrkMast.getLocNo(); // inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("loc_no",locNo)) iterator.remove(); iterator1.remove(); } @@ -827,7 +826,21 @@ if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("添加" + wrkMast.getWrkNo() + "盘点任务," + wrkDetl.getMatnr() + "商品," + wrkDetl.getBatch() + "批号任务明细失败"); } String locNo = Cools.isEmpty(wrkMast.getLocNo()) ? wrkMast.getSourceLocNo() : wrkMast.getLocNo(); List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("loc_no", locNo)); for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) { if (wrkDetl.getMatnr().equals(checkOrderDetl.getMatnr()) && Cools.eq(wrkDetl.getBatch(), checkOrderDetl.getBatch())) { checkOrderDetl.setCheckAnfme(wrkDetl.getAnfme()); checkOrderDetl.setStatus("2"); } else { InventoryCheckOrderDetl newDetl = new InventoryCheckOrderDetl(); Synchro.Copy(wrkDetl, newDetl); newDetl.setAnfme(0D); newDetl.setCheckAnfme(wrkDetl.getAnfme()); newDetl.setOrderNo(checkOrderDetl.getOrderNo()); newDetl.setStatus("2"); } } } List<WrkDetl> wrkDetls1 = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); for (WrkDetl wrkDetl : wrkDetls1) { src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -389,6 +389,10 @@ throw new CoolException("保存工作档明细失败"); } if (ioType == 107) { List<InventoryCheckOrderDetl> checkOrderDetls = checkOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", checkOrderNo).eq("loc_no", dto.getLocNo())); if (checkOrderDetls != null && !checkOrderDetls.isEmpty()) { throw new CoolException("该库位的盘点任务已经添加到了该库位中"); } InventoryCheckOrderDetl checkOrderDetl = new InventoryCheckOrderDetl(); checkOrderDetl.setOrderNo(checkOrderNo); checkOrderDetl.setMatnr(detlDto.getLocDetl().getMatnr()); @@ -396,6 +400,7 @@ checkOrderDetl.setBatch(detlDto.getLocDetl().getBatch()); checkOrderDetl.setLocNo(detlDto.getLocDetl().getLocNo()); checkOrderDetl.setAnfme(detlDto.getLocDetl().getAnfme()); checkOrderDetl.setIoTime(new Date()); checkOrderDetl.setStatus("0"); checkOrderDetlService.insert(checkOrderDetl); } src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -1,9 +1,17 @@ package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.entity.InventoryCheckOrder; import com.zy.asrs.entity.InventoryCheckOrderDetl; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.InventoryCheckOrderDetlService; import com.zy.asrs.service.InventoryCheckOrderService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.handler.WorkMastHandler; import com.zy.system.entity.Config; import com.zy.system.service.ConfigService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -26,8 +34,20 @@ @Autowired private WorkMastHandler workMastHandler; @Autowired private InventoryCheckOrderService inventoryCheckOrderService; @Autowired private InventoryCheckOrderDetlService inventoryCheckOrderDetlService; @Autowired private ConfigService configService; @Scheduled(cron = "0/3 * * * * ? ") public void execute(){ public void execute() { List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData(); if (wrkMasts.isEmpty()) { return; @@ -45,4 +65,64 @@ } } /** * 自动删除超过1天,无明细的盘点单 */ @Scheduled(cron = "0/3 * * * * ? ") public void execute2() { List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>()); if (inventoryCheckOrders.isEmpty()) { return; } for (InventoryCheckOrder checkOrder : inventoryCheckOrders) { List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", checkOrder.getOrderNo())); if (checkOrderDetls.isEmpty() && System.currentTimeMillis() - checkOrder.getCreateTime().getTime() >= 1000 * 60 * 60 * 24) { if (!inventoryCheckOrderService.deleteById(checkOrder)) { log.error("盘点单[orderNo={}]删除失败", checkOrder.getOrderNo()); } else { log.info("盘点单[orderNo={}]删除成功", checkOrder.getOrderNo()); } } } } /** * 自动完结达到一定数量的盘点单 */ @Scheduled(cron = "0/30 * * * * ? ") public void execute3() { List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>()); if (inventoryCheckOrders.isEmpty()) { return; } int num = 20; try { Config config = configService.selectConfigByCode("AutoLocMove"); if (Cools.isEmpty(config) || config.getValue().equals("false")) { } else { num = Integer.parseInt(config.getValue()); } } catch (Exception e) { } for (InventoryCheckOrder checkOrder : inventoryCheckOrders) { List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("order_no", checkOrder.getOrderNo())); boolean complete = true; for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) { if (!checkOrderDetl.getStatus().equals("2")) { complete = false; } } if (complete && checkOrderDetls.size() >= num) { checkOrder.setStatus("2"); if (!inventoryCheckOrderService.updateById(checkOrder)) { log.error("盘点单[orderNo={}]更新状态成功", checkOrder.getOrderNo()); } else { log.info("盘点单[orderNo={}]更新状态失败", checkOrder.getOrderNo()); } } } } } src/main/java/com/zy/asrs/utils/Utils.java
@@ -123,17 +123,9 @@ */ public static String getShallowLoc(SlaveProperties slaveProperties, String deepLoc) { int row = getRow(deepLoc); int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount()); int shallowRow = remainder == 1 ? (row + 1) : (row - 1); boolean deepLocLeft = isDeepLocLeft(slaveProperties, row);//判断是否为左深库位 int shallowRow = deepLocLeft? (row + 1) : (row - 1); return zerofill(String.valueOf(shallowRow), 2) + deepLoc.substring(2); } /** * 获取 深库位排对应的浅库位排 */ public static Integer getShallowRow(SlaveProperties slaveProperties, Integer deepRow) { int remainder = (int) Arith.remainder(deepRow, slaveProperties.getGroupCount()); return remainder == 1 ? (deepRow + 1) : (deepRow - 1); } /** @@ -141,32 +133,26 @@ */ public static String getDeepLoc(SlaveProperties slaveProperties, String shallowLoc) { int row = getRow(shallowLoc); int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount()); int targetRow; if (remainder == 2) { targetRow = row - 1; } else if (remainder == 3) { targetRow = row + 1; } else { throw new RuntimeException(shallowLoc + "不是浅库位,系统繁忙"); } return zerofill(String.valueOf(targetRow), 2) + shallowLoc.substring(2); boolean deepLocLeft = isDeepLocLeft(slaveProperties, row-1);//判断是否为左浅库位 int shallowRow = deepLocLeft? (row - 1) : (row + 1); return zerofill(String.valueOf(shallowRow), 2) + shallowLoc.substring(2); } /** * 获取 深库位排对应的浅库位排 */ public static Integer getShallowRow(SlaveProperties slaveProperties, Integer deepRow) { // int remainder = (int) Arith.remainder(deepRow, slaveProperties.getGroupCount()); boolean deepLocLeft = isDeepLocLeft(slaveProperties, deepRow);//判断是否为左深库位 return deepLocLeft ? (deepRow + 1) : (deepRow - 1); } /** * 获取 浅库位排对应的深库位排 */ public static Integer getDeepRow(SlaveProperties slaveProperties, Integer shallowRow) { int remainder = (int) Arith.remainder(shallowRow, slaveProperties.getGroupCount()); int targetRow; if (remainder == 2) { targetRow = shallowRow - 1; } else if (remainder == 3) { targetRow = shallowRow + 1; } else { throw new RuntimeException(shallowRow + "不是浅库位排,系统繁忙"); } return targetRow; boolean deepLocLeft = isDeepLocLeft(slaveProperties, shallowRow-1);//判断是否为左浅库位 return deepLocLeft? (shallowRow - 1) : (shallowRow + 1); } /** @@ -216,17 +202,6 @@ String targetLoc = zerofill(String.valueOf(targetRow), 2) + shallowLoc.substring(2); } // public static void main(String[] args) { // SlaveProperties slaveProperties = new SlaveProperties(); // slaveProperties.setDoubleDeep(true); // List<Integer> list = new ArrayList<>(); // list.add(1);list.add(4);list.add(5);list.add(8);list.add(9);list.add(12); // slaveProperties.setDoubleLocs(list); // slaveProperties.setGroupCount(4); // Integer deepRow = getDeepRow(slaveProperties, 6); // System.out.println(deepRow); // } public static Integer GetWhsType(Integer sourceStaNo) { RowLastnoService rowLastnoService = SpringUtils.getBean(RowLastnoService.class); @@ -317,11 +292,11 @@ } if ((curRow - sRow) % 4 == 0) { necessaryParameters[1] = curRow; //curRow 最深库位排 necessaryParameters[2] = (curRow - sRow + 2) / 4 + sCrnNo - 1; //crnNo 堆垛机号 necessaryParameters[2] = (curRow - sRow) / 4 + sCrnNo; //crnNo 堆垛机号 necessaryParameters[3] = curRow + 1; //nearRow 最浅库位排 } else if ((curRow - sRow + 1) % 4 == 0) { necessaryParameters[1] = curRow; //curRow 最深库位排 necessaryParameters[2] = (curRow - sRow + 1) / 4 + sCrnNo - 1; //crnNo 堆垛机号 necessaryParameters[2] = (curRow - sRow - 3) / 4 + sCrnNo; //crnNo 堆垛机号 necessaryParameters[3] = curRow - 1; //nearRow 最浅库位排 } else { throw new CoolException("库位排号异常:排号:" + curRow); src/main/java/com/zy/common/service/CommonService.java
@@ -375,7 +375,7 @@ continue; } if (Utils.BooleanWhsTypeStaIoType(rowLastno)) { String shallowLoc = Utils.getDeepLoc(slaveProperties, locMast1.getLocNo()); String shallowLoc = Utils.getShallowLoc(slaveProperties, locMast1.getLocNo()); LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>() .eq("loc_no", shallowLoc).eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue())); if (!Cools.isEmpty(locMast2)) { src/main/resources/mapper/asrs/LocMastMapper.xml
@@ -127,7 +127,6 @@ and crn_no=#{crnNo} and bay1 = #{bay} and lev1 = #{lev} and gro1 = #{gro} AND loc_sts not in ('O') order by row1 </select> @@ -150,7 +149,6 @@ and crn_no=#{crnNo} and bay1 = #{bay} and lev1 = #{lev} and gro1 = #{gro} AND loc_sts not in ('O') order by row1 desc </select> <!-- <select id="selectLocByLocStsPakInO1" resultMap="BaseResultMap">--> @@ -172,7 +170,6 @@ and crn_no=#{crnNo} and bay1 = #{bay} and lev1 = #{lev} and gro1 = #{gro} AND loc_sts in ('O') order by row1 desc </select> <!-- <select id="selectLocByLocStsPakInO2" resultMap="BaseResultMap">--> @@ -194,7 +191,6 @@ and crn_no=#{crnNo} and bay1 = #{bay} and lev1 = #{lev} and gro1 = #{gro} AND loc_sts in ('O') order by row1 </select> <select id="findFirstFrozenLocNo" resultType="java.lang.String">