| src/main/java/com/zy/asrs/mapper/OrderDetlPakinMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/OrderDetlPakinService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/OrderDetlPakinServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/common/service/CommonService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/OrderDetlPakinMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/static/js/pakStore/stockOut.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/webapp/views/pakStore/stockOut.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/mapper/OrderDetlPakinMapper.java
@@ -60,4 +60,5 @@ List<OrderDetlPakin> selectOrderDetls(@Param("orderNo")String orderNo,@Param("sku")String sku,@Param("upc") String upc); List<OrderDetlPakin> selectOrderDetlsByOrderNo(@Param("orderNo")String orderNo); boolean morpt(@Param("orderNo")String orderNo); } src/main/java/com/zy/asrs/service/OrderDetlPakinService.java
@@ -35,6 +35,7 @@ boolean increaseQtyByOrderNo(String orderNo, String matnr, String batch, String brand, String standby1, String standby2, String standby3 , String boxType1, String boxType2, String boxType3, Double qty); boolean morpt(String orderNo); /** * 入出库任务生成时,更新单据表中作业数量 * @param orderId src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -917,44 +917,37 @@ } Date now = new Date(); boolean result = false; String orderNo = null; String orderNo1 = null; for (CombParam.CombMat combMat : param.getCombMats()) { if(combMat.getSupplier().equals("1")){ List<OrderDetlPakin> orderDetlPakins = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>() List<OrderDetlPakin> orderDetlPakins2 = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>() .eq("matnr", combMat.getMatnr()).eq("box_type3", combMat.getOrderNo()) .eq("standby1", combMat.getStandby1()).eq("standby2", combMat.getStandby2()) .eq("standby3", combMat.getStandby3()).eq("box_type2","BU-00001"));//1时检索和得 if (orderDetlPakins.size() > 0) { orderNo = orderDetlPakins.get(0).getOrderNo(); combMat.setBoxType1(orderDetlPakins.get(0).getBoxType1()); combMat.setBoxType2(orderDetlPakins.get(0).getBoxType2()); combMat.setBoxType3(orderDetlPakins.get(0).getBoxType3()); combMat.setMemo(orderDetlPakins.get(0).getMemo()); combMat.setSupp(orderDetlPakins.get(0).getSupp()); combMat.setSuppCode(orderDetlPakins.get(0).getSuppCode()); combMat.setManu(orderDetlPakins.get(0).getManu());//仓库编码 .eq("box_type2","BU-00001")); if (orderDetlPakins2.size() > 0) { orderNo1 = orderDetlPakins2.get(0).getOrderNo(); } else { throw new CoolException("未查询到相关订单===>>" + param.getBarcode()); } }else{ //0 List<OrderDetlPakin> orderDetlPakins = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>() .eq("matnr", combMat.getMatnr()).eq("box_type3", combMat.getOrderNo()) .eq("standby1", combMat.getStandby1()).eq("standby2", combMat.getStandby2()) .eq("standby3", combMat.getStandby3()).eq("box_type2","shyucheng.test")); if (orderDetlPakins.size() > 0) { orderNo = orderDetlPakins.get(0).getOrderNo(); combMat.setBoxType1(orderDetlPakins.get(0).getBoxType1()); combMat.setBoxType2(orderDetlPakins.get(0).getBoxType2()); combMat.setBoxType3(orderDetlPakins.get(0).getBoxType3()); combMat.setMemo(orderDetlPakins.get(0).getMemo()); combMat.setSupp(orderDetlPakins.get(0).getSupp()); combMat.setSuppCode(orderDetlPakins.get(0).getSuppCode()); combMat.setManu(orderDetlPakins.get(0).getManu());//仓库编码 } else { throw new CoolException("未查询到相关订单===>>" + param.getBarcode()); } result = true; } //0 List<OrderDetlPakin> orderDetlPakins = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>() .eq("matnr", combMat.getMatnr()).eq("box_type3", combMat.getOrderNo()) .eq("standby1", combMat.getStandby1()).eq("standby2", combMat.getStandby2()) .eq("standby3", combMat.getStandby3()).eq("box_type2","shyucheng.test")); if (orderDetlPakins.size() > 0) { orderNo = orderDetlPakins.get(0).getOrderNo(); combMat.setBoxType1(orderDetlPakins.get(0).getBoxType1()); combMat.setBoxType2(orderDetlPakins.get(0).getBoxType2()); combMat.setBoxType3(orderDetlPakins.get(0).getBoxType3()); combMat.setMemo(orderDetlPakins.get(0).getMemo()); combMat.setSupp(orderDetlPakins.get(0).getSupp()); combMat.setSuppCode(orderDetlPakins.get(0).getSuppCode()); combMat.setManu(orderDetlPakins.get(0).getManu());//仓库编码 } else { throw new CoolException("未查询到相关订单===>>" + param.getBarcode()); } } @@ -965,10 +958,18 @@ if (Cools.isEmpty(order) || order.getSettle() > 2) { throw new CoolException("单据编号已过期"); } Order order1 = orderService.selectByNo(orderNo); if (Cools.isEmpty(order1) || order1.getSettle() > 2) { throw new CoolException("单据编号已过期"); } if(result){ order1.setPayType(1);// y->h order1.setSalesman(orderNo1); orderService.updateById(order1); } // 生成入库通知档 List<DetlDto> detlDtos = new ArrayList<>(); param.getCombMats().forEach(elem -> { // 订单明细数量校验 // OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(), src/main/java/com/zy/asrs/service/impl/OrderDetlPakinServiceImpl.java
@@ -112,4 +112,10 @@ public List<OrderDetlPakin> selectOrderDetlsByOrderNo(String orderNo){ return this.baseMapper.selectOrderDetlsByOrderNo(orderNo); } @Override public boolean morpt(String orderNo){ return this.baseMapper.morpt(orderNo); } } src/main/java/com/zy/asrs/task/kingdee/SaveOrderSyncScheduler.java
@@ -2,6 +2,8 @@ import com.core.common.Cools; import com.zy.asrs.entity.Order; import com.zy.asrs.entity.OrderDetlPakin; import com.zy.asrs.service.OrderDetlPakinService; import com.zy.asrs.service.OrderService; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.kingdee.handler.SaveOrderSyncHandler; @@ -28,7 +30,8 @@ private SaveOrderSyncHandler saveOrderSyncHandler; @Autowired private OrderService orderService; @Autowired private OrderDetlPakinService orderDetlPakinService; @Value("${erp.switch.ReviewOrderSwitch}") private boolean ReviewOrderSwitch; @@ -44,7 +47,7 @@ List<Order> orders = orderService.selectComplete(); if(orders.size() > 0){ for (Order order : orders) { if(order.getDocType() == 3 || order.getDocType() == 16){ //走新增提交审核流程 if(order.getDocType() == 3 || order.getDocType() == 16 || order.getPayType()!=1){ //走新增提交审核流程 ReturnT<String> result = saveOrderSyncHandler.start(order);//4已完成 if (!result.isSuccess()) { log.error("单据[orderNo={}]新增保存至erp失败", order.getOrderNo()); @@ -54,7 +57,18 @@ }else if( order.getDocType() == 21){ //导入订单出库(领料) order.setSettle(8L); orderService.updateById(order); }else{ }else if(order.getPayType() == 1 || order.getSalesman() != null){ Order order1 = orderService.selectByNo(order.getSalesman()); if(orderDetlPakinService.morpt(order.getSalesman())){ order.setSettle(11L); //yu/cheng/dan/deng/dai/chu/ku/dan orderService.updateById(order); // ReturnT<String> result = saveOrderSyncHandler.start(order1);//4已完成hui/bao/dan // if (!result.isSuccess()) { // log.error("单据[orderNo={}]新增保存至erp失败", order.getOrderNo()); // } } } else{ order.setSettle(9L);//不需要新增直接审核 orderService.updateById(order); } src/main/java/com/zy/asrs/task/kingdee/handler/InboundOrderHandler.java
@@ -1227,6 +1227,7 @@ List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); boolean exists = orderDetls.stream() .anyMatch(o -> o.getMatnr().equals(matnr)); if (exists) continue; @@ -1237,35 +1238,40 @@ // supp = locSupp.getOwner(); // } // ========= 保存明细 ========= OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(mat); orderDetl.setThreeCode(detlId); orderDetl.setLineNumber(seq); orderDetl.setAnfme(anfmeBox); orderDetl.setErpAnfme(anfme); orderDetl.setOrderId(order.getId()); orderDetl.setOrderNo(order.getOrderNo()); orderDetl.setSupp(supp); orderDetl.setSuppCode(suppCode); orderDetl.setSku(matnr); orderDetl.setStandby1(s1); orderDetl.setStandby2(s2); orderDetl.setStandby3(s3); orderDetl.setBoxType1(owner); orderDetl.setBoxType2(ownerUuid); orderDetl.setBoxType3(pOrderNo); orderDetl.setMemo(memo); orderDetl.setVolume(totalVolume); orderDetl.setSafeQty(totalNumItems); orderDetl.setManu(warehouse); orderDetl.setCreateBy(9527L); orderDetl.setCreateTime(new Date()); orderDetl.setUpdateBy(9527L); orderDetl.setUpdateTime(new Date()); orderDetl.setStatus(1); orderDetl.setQty(0.0D); try{ OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(mat); orderDetl.setThreeCode(detlId); orderDetl.setLineNumber(seq); orderDetl.setAnfme(anfmeBox); orderDetl.setErpAnfme(anfme); orderDetl.setOrderId(order.getId()); orderDetl.setOrderNo(order.getOrderNo()); orderDetl.setSupp(supp); orderDetl.setSuppCode(suppCode); orderDetl.setSku(matnr); orderDetl.setStandby1(s1); orderDetl.setStandby2(s2); orderDetl.setStandby3(s3); orderDetl.setBoxType1(owner); orderDetl.setBoxType2(ownerUuid); orderDetl.setBoxType3(pOrderNo); orderDetl.setMemo(memo); orderDetl.setVolume(totalVolume); orderDetl.setSafeQty(totalNumItems); orderDetl.setManu(warehouse); orderDetl.setCreateBy(9527L); orderDetl.setCreateTime(new Date()); orderDetl.setUpdateBy(9527L); orderDetl.setUpdateTime(new Date()); orderDetl.setStatus(1); orderDetl.setQty(0.0D); orderDetlService.insert(orderDetl); orderDetlService.insert(orderDetl); } catch (Exception e) { // 如果发生异常,记录详细的错误信息 callApiLogSaveOrder(order, kingDeeUtilType, "保存明细失败,物料:" + matnr + " 错误信息:" + e.getMessage(), false); } } } @@ -1404,35 +1410,40 @@ supp = locSupp.getOwner(); } // ========= 保存明细 ========= OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(mat); orderDetl.setThreeCode(detlId); orderDetl.setLineNumber(seq); orderDetl.setAnfme(anfmeBox); orderDetl.setErpAnfme(anfme); orderDetl.setOrderId(order.getId()); orderDetl.setOrderNo(order.getOrderNo()); orderDetl.setSupp(supp); orderDetl.setSuppCode(suppCode); orderDetl.setSku(matnr); orderDetl.setStandby1(s1); orderDetl.setStandby2(s2); orderDetl.setStandby3(s3); orderDetl.setBoxType1(owner); orderDetl.setBoxType2(ownerUuid); orderDetl.setBoxType3(pOrderNo); orderDetl.setMemo(memo); orderDetl.setVolume(totalVolume); orderDetl.setSafeQty(totalNumItems); orderDetl.setManu(warehouse); orderDetl.setCreateBy(9527L); orderDetl.setCreateTime(new Date()); orderDetl.setUpdateBy(9527L); orderDetl.setUpdateTime(new Date()); orderDetl.setStatus(1); orderDetl.setQty(0.0D); try{ OrderDetl orderDetl = new OrderDetl(); orderDetl.sync(mat); orderDetl.setThreeCode(detlId); orderDetl.setLineNumber(seq); orderDetl.setAnfme(anfmeBox); orderDetl.setErpAnfme(anfme); orderDetl.setOrderId(order.getId()); orderDetl.setOrderNo(order.getOrderNo()); orderDetl.setSupp(supp); orderDetl.setSuppCode(suppCode); orderDetl.setSku(matnr); orderDetl.setStandby1(s1); orderDetl.setStandby2(s2); orderDetl.setStandby3(s3); orderDetl.setBoxType1(owner); orderDetl.setBoxType2(ownerUuid); orderDetl.setBoxType3(pOrderNo); orderDetl.setMemo(memo); orderDetl.setVolume(totalVolume); orderDetl.setSafeQty(totalNumItems); orderDetl.setManu(warehouse); orderDetl.setCreateBy(9527L); orderDetl.setCreateTime(new Date()); orderDetl.setUpdateBy(9527L); orderDetl.setUpdateTime(new Date()); orderDetl.setStatus(1); orderDetl.setQty(0.0D); orderDetlService.insert(orderDetl); orderDetlService.insert(orderDetl); } catch (Exception e) { // 如果发生异常,记录详细的错误信息 callApiLogSaveOrder(order, kingDeeUtilType, "保存明细失败,物料:" + matnr + " 错误信息:" + e.getMessage(), false); } } } } src/main/java/com/zy/common/service/CommonService.java
@@ -1046,18 +1046,17 @@ // 开始查找库位 ==============================>> // 1.按规则查找库位 if (Cools.isEmpty(locMast) && sourceStaNo != 4006) { List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() if (Cools.isEmpty(locMast) && sourceStaNo != 4006) {//si'lou'p四楼盘点选择区域 List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("row1", nearRow) .eq("loc_sts", "O").eq("whs_type", rowLastnoType.getType().longValue()) .orderBy("lev1", true).orderBy("bay1", true));//最浅库位 .orderBy("lev1", true).orderBy("bay1", true)); // 最浅库位 for (LocMast locMast1 : locMasts) { if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { continue; } if (Utils.BooleanWhsTypeStaIoType(rowLastno)) { //获取目标库位所在巷道最深空库位 // 获取目标库位所在巷道最深空库位 LocMast locMast2 = locMastService.selectLocByLocStsPakInO(curRow, nearRow, locMast1, rowLastnoType.getType().longValue()); if (!Cools.isEmpty(locMast2) && locMast2.getRow1() == curRow) { locMast = locMast2; @@ -1065,12 +1064,98 @@ } } } } else { // 根据 findLocNoAttributeVo.getOutArea() 设置列范围 int startBay = 1; int endBay = 19; switch (findLocNoAttributeVo.getOutArea()) { case 1: startBay = 15; endBay = 19; break; case 2: startBay = 8; endBay = 14; break; case 3: startBay = 1; endBay = 8; break; default: break; } // 优先从指定列范围查找 boolean found = false; // 按照排号从38到32递减查找,优先查找指定列范围(如1-8、8-14、15-19) for (int row = 38; row >= 32; row--) { List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("row1", row) .ge("bay1", startBay) .le("bay1", endBay) .eq("loc_sts", "O") .eq("whs_type", rowLastnoType.getType().longValue()) .orderBy("lev1", true) .orderBy("bay1", true)); // 最浅库位 for (LocMast locMast1 : locMasts) { if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { continue; } if (Utils.BooleanWhsTypeStaIoType(rowLastno)) { // 获取目标库位所在巷道最深空库位 LocMast locMast2 = locMastService.selectLocByLocStsPakInO(curRow, nearRow, locMast1, rowLastnoType.getType().longValue()); if (!Cools.isEmpty(locMast2) && locMast2.getRow1() == curRow) { locMast = locMast2; found = true; break; } } } if (found) { break; // 找到目标库位后跳出循环 } } // 如果没有在优先范围内找到合适库位,继续进行全局查找(1-19列) if (!found) { // 从排号38到32查找所有列(1-19) for (int row = 38; row >= 32; row--) { List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("row1", row) .ge("bay1", 1) // 查找1到19列 .le("bay1", 19) .eq("loc_sts", "O") .eq("whs_type", rowLastnoType.getType().longValue()) .orderBy("lev1", true) .orderBy("bay1", true)); // 最浅库位 for (LocMast locMast1 : locMasts) { if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) { continue; } if (Utils.BooleanWhsTypeStaIoType(rowLastno)) { // 获取目标库位所在巷道最深空库位 LocMast locMast2 = locMastService.selectLocByLocStsPakInO(curRow, nearRow, locMast1, rowLastnoType.getType().longValue()); if (!Cools.isEmpty(locMast2) && locMast2.getRow1() == curRow) { locMast = locMast2; found = true; break; } } } if (found) { break; // 找到目标库位后跳出循环 } } } } // else{ // if(findLocNoAttributeVo.getOutArea() == 1){ // // } // } // 递归查询 if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("O")) { src/main/resources/mapper/OrderDetlPakinMapper.xml
@@ -263,4 +263,10 @@ order by update_time </select> <update id="morpt" parameterType="String"> UPDATE man_order_detl_pakin SET qty = anfme, work_qty = anfme WHERE order_no = #{orderNo} </update> </mapper> src/main/webapp/static/js/pakStore/stockOut.js
@@ -71,11 +71,13 @@ layer.msg('请先提取商品库存', {icon: 2}); } else { var staNo = $("#staNoSelect").val(); var outStaArea = $("#outboundAreaSelect").val(); if (staNo === "" || staNo === null){ layer.msg("请选择出库口", {icon: 2}); return; } let param = { outStaArea: outStaArea, outSite: staNo, locDetls: locDetlData } src/main/webapp/views/pakStore/stockOut.html
@@ -23,7 +23,13 @@ box-shadow: 0 0 3px rgba(0,0,0,.3); padding-bottom: 20px; } #staNoSpan, #outboundAreaSpan { text-align: center; display: inline-block; width: 100px; font-size: 13px; margin-right: 10px; /* 增加右边间距 */ } #staNoSpan { text-align: center; display: inline-block; @@ -100,6 +106,13 @@ <select id="staNoSelect" lay-verify="required"> <option value="">请选择站点</option> </select> <!-- 2.选择放货区域 --> <span id="outboundAreaSpan">放货区域:</span> <select id="outboundAreaSelect"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <!-- 2.启动出库 --> <button class="layui-btn layui-btn-lg" id="btn-outbound" lay-event="outbound">启动出库</button> </div>