src/main/java/com/zy/asrs/controller/MobileController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/InventoryCheckOrderDetl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/MobileService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/ReportToThirdService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/ReportInventoryCheckOrdersScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/inventoryCheckOrder/inventoryCheckOrder.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/pakStore/locDetlCheckQuery.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -683,4 +683,11 @@ return R.ok("出库成功"); } @RequestMapping("/checkOut/submit/auth") @ManagerAuth(memo = "盘点上报ERP") public R checkOutSubmit(@RequestParam("orderId") Integer orderId) { mobileService.checkOutSubmit(orderId, getUserId()); return R.ok("上报ERP成功"); } } src/main/java/com/zy/asrs/entity/InventoryCheckOrderDetl.java
@@ -58,6 +58,10 @@ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date ioTime; @ApiModelProperty(value = "") @TableField("cwarehouseid") private String cwarehouseid; public InventoryCheckOrderDetl() { } src/main/java/com/zy/asrs/service/MobileService.java
@@ -67,4 +67,6 @@ void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl, Double curOutQty, Integer ioType, Long userId, Date now); void checkOutSubmit(Integer orderId, Long userId); } src/main/java/com/zy/asrs/service/ReportToThirdService.java
@@ -13,6 +13,7 @@ boolean reportTkrk(String matnr, String batch, String orderNo, Double anfme); boolean reportCheckOrder(InventoryCheckOrder checkOrder); boolean reportCheckOrder(String matnr, String batch); } src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -78,6 +78,8 @@ private ManLocDetlService manLocDetlService; @Autowired private ManLocDetlMapper manLocDetlMapper; @Autowired private ReportToThirdService reportToThirdService; @Autowired private InventoryCheckOrderService inventoryCheckOrderService; @@ -851,7 +853,10 @@ List<WrkDetl> paramWrkDetls = JSON.parseArray(JSON.toJSONString(param.getWrkDetls()), WrkDetl.class); for (WrkDetl wrkDetl : paramWrkDetls) { String locNo = Cools.isEmpty(wrkMast.getLocNo()) ? wrkMast.getSourceLocNo() : wrkMast.getLocNo(); List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("loc_no", locNo)); List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>() .eq("loc_no", locNo) .eq("area", wrkDetl.getWrkNo()) ); for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) { if (wrkDetl.getMatnr().equals(checkOrderDetl.getMatnr()) && Cools.eq(wrkDetl.getBatch(), checkOrderDetl.getBatch())) { checkOrderDetl.setCheckAnfme(wrkDetl.getAnfme()); @@ -1182,4 +1187,45 @@ throw new CoolException(locDetl.getLocNo() + "库位不是在库状态"); } } @Override public void checkOutSubmit(Integer orderId, Long userId) { InventoryCheckOrder inventoryCheckOrder = inventoryCheckOrderService.selectOne(new EntityWrapper<InventoryCheckOrder>() .eq("id", orderId)); if (inventoryCheckOrder == null) { throw new CoolException("盘点单不存在"); } if (!inventoryCheckOrder.getStatus().equals("1")) { throw new CoolException("盘点单状态已上报"); } List<InventoryCheckOrderDetl> checkOrderDetlList = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>() .eq("order_no", inventoryCheckOrder.getOrderNo()) ); if (checkOrderDetlList.isEmpty()) { throw new CoolException("盘点单无物料明细"); } InventoryCheckOrderDetl orderDetl = checkOrderDetlList.get(0); List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>() .eq("matnr", orderDetl.getMatnr()) .eq("batch", orderDetl.getBatch()) ); boolean complete = true; for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) { if (!checkOrderDetl.getStatus().equals("2")) { complete = false; } } if (complete) { boolean result = reportToThirdService.reportCheckOrder(orderDetl.getMatnr(), orderDetl.getBatch()); if (!result) { throw new CoolException("盘点单上报失败"); } }else { throw new CoolException("盘点未完成无法上报"); } } } src/main/java/com/zy/asrs/service/impl/ReportToThirdServiceImpl.java
@@ -20,6 +20,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -223,18 +224,49 @@ } @Override public boolean reportCheckOrder(InventoryCheckOrder checkOrder) { Object process1 = processInvcount(checkOrder); //发送请求 NcResultMessage response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, invcountAdd, JSONObject.toJSONString(process1)); log.info("盘点单response:{}", response); if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("盘点单response:{}", response); return true; } else { // remark = response.getMessage() + "--" + response.getErrorStack().substring(0, 100); return false; public boolean reportCheckOrder(String matnr, String batch) { List<InventoryCheckOrderDetl> checkOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>() .eq("matnr", matnr) .eq("batch", batch) ); ArrayList<String> warehouseIdList = new ArrayList<>(); ArrayList<String> orderNoList = new ArrayList<>(); for (InventoryCheckOrderDetl checkOrderDetl : checkOrderDetls) { if (!warehouseIdList.contains(checkOrderDetl.getCwarehouseid())) { warehouseIdList.add(checkOrderDetl.getCwarehouseid()); } if (!orderNoList.contains(checkOrderDetl.getOrderNo())) { orderNoList.add(checkOrderDetl.getOrderNo()); } } boolean result = true; for (String cwarehouseid : warehouseIdList) { Object process1 = processInvcount(matnr, batch, cwarehouseid); //发送请求 NcResultMessage response = SendUtil.sendDataToNc(SendUtil.token, nyncIp + ":" + port, invcountAdd, JSONObject.toJSONString(process1)); log.info("盘点单response:{}", response); if (!Cools.isEmpty(response) && response.isSuccess()) { log.info("盘点单response:{}", response); } else { result = false; } } if (result) { List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>() .in("orderNo", orderNoList) .eq("status", 1) ); for (InventoryCheckOrder inventoryCheckOrder : inventoryCheckOrders) { inventoryCheckOrder.setStatus("2"); inventoryCheckOrderService.updateById(inventoryCheckOrder); } } return result; } private Object processXSFH(List<OrderDetl> orderDetls, Boolean flag) { @@ -314,50 +346,45 @@ return data; } private Object processInvcount(InventoryCheckOrder checkOrder) { private Object processInvcount(String matnr, String batch, String cwarehouseid) { List<InventoryCheckOrderDetl> inventoryCheckOrderDetls = inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>() .eq("order_no", checkOrder.getOrderNo())); .eq("matnr", matnr) .eq("batch", batch) .eq("cwarehouseid", cwarehouseid) ); if (inventoryCheckOrderDetls.isEmpty()) { throw new CoolException("盘点明细不存在"); } //合并数量 BigDecimal checkAnfmeDecimal = new BigDecimal(0); for (InventoryCheckOrderDetl checkOrderDetl : inventoryCheckOrderDetls) { checkAnfmeDecimal = checkAnfmeDecimal.add(BigDecimal.valueOf(checkOrderDetl.getCheckAnfme())); } //计算辅数量 Double weight = MatUtils.calcWeight(matnr, checkAnfmeDecimal.doubleValue()); //组装对象数据 Map<String, Object> data = new HashMap<String, Object>(); //仓库id String cwarehouseid = null; List<InvCountBodyVO> invCountBodyVOList = new ArrayList<>(); for (InventoryCheckOrderDetl inventoryCheckOrderDetl : inventoryCheckOrderDetls) { List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>() .eq("matnr", inventoryCheckOrderDetl.getMatnr()) .eq("batch", inventoryCheckOrderDetl.getBatch()) ); if (wrkDetls.isEmpty()) { throw new CoolException("工作档明细不存在"); } NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>() .eq("WLBM", inventoryCheckOrderDetl.getMatnr()) .eq("VBATCHCODE", inventoryCheckOrderDetl.getBatch()) ); if(null == nccScPcdaWms) { throw new CoolException("ERP数据库无法查询到盘点上报数据"); } cwarehouseid = wrkDetls.get(0).getStandby1(); //计算辅数量 Double weight = MatUtils.calcWeight(inventoryCheckOrderDetl.getMatnr(), inventoryCheckOrderDetl.getCheckAnfme()); InvCountBodyVO invCountBodyVO = new InvCountBodyVO(); invCountBodyVO.setCmaterialoid(inventoryCheckOrderDetl.getMatnr()); invCountBodyVO.setVbatchcode(inventoryCheckOrderDetl.getBatch()); invCountBodyVO.setNcountnum(inventoryCheckOrderDetl.getCheckAnfme()); invCountBodyVO.setNcountastnum(weight); invCountBodyVO.setCstateid(nccScPcdaWms.getPkStorestate()); invCountBodyVO.setPk_batchcode(nccScPcdaWms.getPkBatchcode()); invCountBodyVOList.add(invCountBodyVO); NccScPcdaWms nccScPcdaWms = nccScPcdaWmsService.selectOne(new EntityWrapper<NccScPcdaWms>() .eq("WLBM", matnr) .eq("VBATCHCODE", batch) ); if (null == nccScPcdaWms) { throw new CoolException("ERP数据库无法查询到盘点上报数据"); } InvCountBodyVO invCountBodyVO = new InvCountBodyVO(); invCountBodyVO.setCmaterialoid(matnr); invCountBodyVO.setVbatchcode(batch); invCountBodyVO.setNcountnum(checkAnfmeDecimal.doubleValue()); invCountBodyVO.setNcountastnum(weight); invCountBodyVO.setCstateid(nccScPcdaWms.getPkStorestate()); invCountBodyVO.setPk_batchcode(nccScPcdaWms.getPkBatchcode()); invCountBodyVOList.add(invCountBodyVO); InvCountHeaderVO invCountHeaderVO = new InvCountHeaderVO(); invCountHeaderVO.setPk_org("FYT"); src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -326,15 +326,6 @@ ioType = dto.isAll() ? 101 : 103; } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) { ioType = 107; if (Cools.isEmpty(checkOrderNo)) { checkOrderNo = DateUtils.createTimeStamp(); InventoryCheckOrder checkOrder = new InventoryCheckOrder(); checkOrder.setCreateBy(userId); checkOrder.setStatus("1"); checkOrder.setCreateTime(new Date()); checkOrder.setOrderNo(checkOrderNo); checkOrderService.insert(checkOrder); } } assert ioType != null; // 获取库位 @@ -350,6 +341,20 @@ StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta); // 生成工作号 int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); if (ioType == 107) { if (Cools.isEmpty(checkOrderNo)) { checkOrderNo = DateUtils.createTimeStamp() + "_" + workNo; InventoryCheckOrder checkOrder = new InventoryCheckOrder(); checkOrder.setCreateBy(userId); checkOrder.setStatus("1"); checkOrder.setArea(String.valueOf(workNo)); checkOrder.setCreateTime(new Date()); checkOrder.setOrderNo(checkOrderNo); checkOrderService.insert(checkOrder); } } // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); @@ -406,6 +411,8 @@ checkOrderDetl.setBatch(detlDto.getLocDetl().getBatch()); checkOrderDetl.setLocNo(detlDto.getLocDetl().getLocNo()); checkOrderDetl.setAnfme(detlDto.getLocDetl().getAnfme()); checkOrderDetl.setArea(String.valueOf(workNo)); checkOrderDetl.setCwarehouseid(wrkDetl.getStandby1()); checkOrderDetl.setIoTime(new Date()); checkOrderDetl.setStatus("0"); checkOrderDetlService.insert(checkOrderDetl); src/main/java/com/zy/asrs/task/ReportInventoryCheckOrdersScheduler.java
@@ -31,42 +31,43 @@ /** * 上报盘点结果 * 不自动上报,采用人工手动上报方案 */ @Scheduled(cron = "0/3 * * * * ? ") // @Scheduled(cron = "0/3 * * * * ? ") public void execute() { String erpReport = Parameter.get().getErpReport(); if (Cools.isEmpty(erpReport) || !erpReport.equals("true")) { return; } List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>() .eq("status", 1)); if (inventoryCheckOrders.isEmpty()) { return; } 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) { boolean result = reportToThirdService.reportCheckOrder(checkOrder); if (!result) { continue; } checkOrder.setStatus("2"); if (!inventoryCheckOrderService.updateById(checkOrder)) { log.error("盘点单[orderNo={}]更新状态失败", checkOrder.getOrderNo()); } else { log.info("盘点单[orderNo={}]更新状态成功", checkOrder.getOrderNo()); } } } // String erpReport = Parameter.get().getErpReport(); // if (Cools.isEmpty(erpReport) || !erpReport.equals("true")) { // return; // } // // List<InventoryCheckOrder> inventoryCheckOrders = inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>() // .eq("status", 1)); // if (inventoryCheckOrders.isEmpty()) { // return; // } // // 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) { // boolean result = reportToThirdService.reportCheckOrder(checkOrder); // if (!result) { // continue; // } // // checkOrder.setStatus("2"); // if (!inventoryCheckOrderService.updateById(checkOrder)) { // log.error("盘点单[orderNo={}]更新状态失败", checkOrder.getOrderNo()); // } else { // log.info("盘点单[orderNo={}]更新状态成功", checkOrder.getOrderNo()); // } // } // } } /** src/main/webapp/static/js/inventoryCheckOrder/inventoryCheckOrder.js
@@ -48,7 +48,7 @@ // ,{field: 'itemNum', align: 'center',title: '品项数'} // ,{field: 'count', align: 'center',title: '数量'} // ,{field: 'weight', align: 'center',title: '重量'} ,{field: 'profit$', align: 'center',title: '盈亏',templet: '#profitTpl'} // ,{field: 'profit$', align: 'center',title: '盈亏',templet: '#profitTpl'} ,{field: 'status$', align: 'center',title: '状态'} // ,{field: 'createBy$', align: 'center',title: '添加人员'} // ,{field: 'createTime$', align: 'center',title: '添加时间'} src/main/webapp/views/pakStore/locDetlCheckQuery.html
@@ -78,6 +78,11 @@ </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <input class="layui-input" type="text" name="specs" placeholder="规格" autocomplete="off"> </div> </div>