| | |
| | | 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); |
| | | } |
| | |
| | | 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 |
| | |
| | | } |
| | | |
| | | 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{ |
| | | result = true; |
| | | } |
| | | //0 |
| | | List<OrderDetlPakin> orderDetlPakins = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>() |
| | | .eq("matnr", combMat.getMatnr()).eq("box_type3", combMat.getOrderNo()) |
| | |
| | | throw new CoolException("未查询到相关订单===>>" + param.getBarcode()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | 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(), |
| | |
| | | public List<OrderDetlPakin> selectOrderDetlsByOrderNo(String orderNo){ |
| | | return this.baseMapper.selectOrderDetlsByOrderNo(orderNo); |
| | | } |
| | | |
| | | @Override |
| | | public boolean morpt(String orderNo){ |
| | | return this.baseMapper.morpt(orderNo); |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | 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; |
| | |
| | | private SaveOrderSyncHandler saveOrderSyncHandler; |
| | | @Autowired |
| | | private OrderService orderService; |
| | | |
| | | @Autowired |
| | | private OrderDetlPakinService orderDetlPakinService; |
| | | @Value("${erp.switch.ReviewOrderSwitch}") |
| | | private boolean ReviewOrderSwitch; |
| | | |
| | |
| | | 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()); |
| | |
| | | }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); |
| | | } |
| | |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | |
| | | boolean exists = orderDetls.stream() |
| | | .anyMatch(o -> o.getMatnr().equals(matnr)); |
| | | if (exists) continue; |
| | |
| | | // supp = locSupp.getOwner(); |
| | | // } |
| | | // ========= 保存明细 ========= |
| | | try{ |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | } catch (Exception e) { |
| | | // 如果发生异常,记录详细的错误信息 |
| | | callApiLogSaveOrder(order, kingDeeUtilType, "保存明细失败,物料:" + matnr + " 错误信息:" + e.getMessage(), false); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | supp = locSupp.getOwner(); |
| | | } |
| | | // ========= 保存明细 ========= |
| | | try{ |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | } catch (Exception e) { |
| | | // 如果发生异常,记录详细的错误信息 |
| | | callApiLogSaveOrder(order, kingDeeUtilType, "保存明细失败,物料:" + matnr + " 错误信息:" + e.getMessage(), false); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | // 开始查找库位 ==============================>> |
| | | |
| | | // 1.按规则查找库位 |
| | | if (Cools.isEmpty(locMast) && sourceStaNo != 4006) { |
| | | 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()) |
| | |
| | | } |
| | | } |
| | | } |
| | | } 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; |
| | | } |
| | | // else{ |
| | | // if(findLocNoAttributeVo.getOutArea() == 1){ |
| | | // |
| | | // } |
| | | // } |
| | | |
| | | // 优先从指定列范围查找 |
| | | 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; // 找到目标库位后跳出循环 |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | // 递归查询 |
| | | if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("O")) { |
| | |
| | | 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> |
| | |
| | | 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 |
| | | } |
| | |
| | | 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; |
| | |
| | | <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> |