From d87b636f92269b4ec97cb5ca00680409755814a9 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期三, 30 四月 2025 15:38:43 +0800 Subject: [PATCH] 收货优化修改 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasItemController.java | 6 - rsf-server/src/main/Test/CombinationFinder.java | 15 ++- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java | 23 +++++ rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 140 +++++++++++++++++++++------------- rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx | 3 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java | 2 6 files changed, 120 insertions(+), 69 deletions(-) diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx index 598b133..d001fde 100644 --- a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx +++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx @@ -61,7 +61,6 @@ const AsnOrderModal = (props) => { const { open, setOpen, asnId, billReload } = props; - const business = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_business_type') && dict.group == '2') || []; const translate = useTranslate(); const notify = useNotify(); @@ -241,7 +240,7 @@ <DictSelect label={translate("table.field.asnOrder.wkType")} value={formData.wkType} - group='2' + group='1' onChange={(e) => handleChange(e.target.value, 'wkType')} dictTypeCode="sys_business_type" required diff --git a/rsf-server/src/main/Test/CombinationFinder.java b/rsf-server/src/main/Test/CombinationFinder.java index cd7ee08..e879023 100644 --- a/rsf-server/src/main/Test/CombinationFinder.java +++ b/rsf-server/src/main/Test/CombinationFinder.java @@ -1,3 +1,7 @@ +import com.vincent.rsf.framework.common.Cools; +import org.apache.commons.codec.digest.Md5Crypt; + +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -114,10 +118,11 @@ } public static void main(String[] args) { - CombinationFinder finder = new CombinationFinder(); - double[] nums = {3.0, 1.0, 4.0, 2.0}; - double target = 0.1; - List<Integer> result = finder.findCombination(nums, target); - System.out.println("鏈�浼樼粍鍚堢殑绱㈠紩: " + result); // 渚嬪锛岀瓑鍊肩粍鍚堝彲鑳戒负绱㈠紩2锛�4.0锛夊拰3锛�1.0锛� +// CombinationFinder finder = new CombinationFinder(); +// double[] nums = {3.0, 1.0, 4.0, 2.0}; +// double target = 0.1; +// List<Integer> result = finder.findCombination(nums, target); +// System.out.println("鏈�浼樼粍鍚堢殑绱㈠紩: " + result); // 渚嬪锛岀瓑鍊肩粍鍚堝彲鑳戒负绱㈠紩2锛�4.0锛夊拰3锛�1.0锛� + System.out.println(Cools.md5("123456")); } } \ No newline at end of file diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java index d9de613..c18bf62 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java @@ -142,7 +142,7 @@ } @PreAuthorize("hasAuthority('manager:waitPakin:update')") - @ApiOperation("缁勬嫋") + @ApiOperation("缁勬墭") @PostMapping("/waitPakin/merge") public R pikinOrder(@RequestBody WaitPakinParam waitPakin) { Long userId = getLoginUserId(); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java index 688e1a5..b67b341 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java @@ -37,6 +37,7 @@ import com.vincent.rsf.server.system.service.UserLoginService; import com.vincent.rsf.server.system.service.UserService; import com.vincent.rsf.server.system.utils.SerialRuleUtils; +import org.apache.commons.codec.digest.Md5Crypt; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -46,6 +47,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.nio.charset.StandardCharsets; import java.util.*; import java.util.stream.Collectors; @@ -128,10 +130,10 @@ private DeviceSiteMapper deviceSiteMapper; /** + * @return * @author Ryan * @description 鎵嬫寔PDA鐧诲綍鎺ュ彛 * @params LoginParam param锛� HttpServletRequest request - * @return * @time 2025/3/10 15:36 */ @Override @@ -163,10 +165,10 @@ } /** - * @author Ryan - * @description 鎵爜鑾峰彇鏀惰揣鏄庣粏 * @param barcode * @return + * @author Ryan + * @description 鎵爜鑾峰彇鏀惰揣鏄庣粏 * @time 2025/3/10 15:37 */ @Override @@ -174,7 +176,10 @@ if (StringUtils.isBlank(barcode)) { return R.error("鏍囩鐮佷笉鑳戒负绌猴紒锛�"); } - List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, barcode)); + List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>() + .eq(AsnOrderItem::getTrackCode, barcode)); + + if (Objects.isNull(asnOrderItem)) { throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); } @@ -235,7 +240,9 @@ } List<Map<String, Object>> receipts1 = (List<Map<String, Object>>) params.get("receipts"); for (Map<String, Object> rcpt : receipts1) { - if (null == rcpt || Objects.isNull(rcpt)) {continue;} + if (null == rcpt || Objects.isNull(rcpt)) { + continue; + } ReceiptDetlsDto dto = JSONObject.parseObject(JSONObject.toJSONString(rcpt), ReceiptDetlsDto.class); Matnr matnr = matnrMapper.selectById(dto.getMatnrId()); if (Objects.isNull(matnr)) { @@ -249,13 +256,13 @@ // } AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>() .eq(AsnOrderItem::getAsnCode, asnCode) - .eq(AsnOrderItem::getTrackCode, dto.getBarcode()) + .eq(AsnOrderItem::getTrackCode, dto.getBarcode()) .eq(AsnOrderItem::getMatnrId, dto.getMatnrId())); if (Objects.isNull(orderItem)) { throw new CoolException("閫氱煡鍗曟槑缁嗕笉瀛樺湪锛侊紒"); } if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) { - throw new CoolException("鐗╂枡:" + dto.getMaktx() + "鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒"); + throw new CoolException("鐗╂枡:" + dto.getMaktx() + "鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒"); } Double itemRcptQty = dto.getReceiptQty() + orderItem.getQty(); orderItem.setQty(itemRcptQty) @@ -267,7 +274,7 @@ try { if (Objects.isNull(rcpt.get("fieldsindex")) || StringUtils.isBlank(rcpt.get("fieldsindex").toString())) { //鑾峰彇16浣島uid - String uuid16 = CommonUtil.randomUUID16(); + String uuid16 = Cools.md5(dto.getBarcode()); rcpt.put("index", uuid16); orderItem.setFieldsIndex(uuid16); } @@ -296,8 +303,10 @@ .setAsnId(asnOrder.getId()) .setProdTime(dto.getProdTime()) .setWeight(dto.getWeigth()) - .setStockUnit(dto.getStockUnit()) - .setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto)) + //搴撳瓨鍗曚綅涓烘渶灏忓崟浣� + .setUnit(orderItem.getStockUnit()) + .setStockUnit(orderItem.getStockUnit()) + .setBatch(StringUtils.isBlank(orderItem.getBatch()) ? SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto) : orderItem.getBatch()) .setAnfme(dto.getReceiptQty()) .setSplrBatch(dto.getSplrBatch()) .setMatnrCode(matnr.getCode()) @@ -305,20 +314,29 @@ .setCreateBy(loginUserId) .setMatnrId(matnr.getId()) .setMaktx(matnr.getName()) - //搴撳瓨鍗曚綅涓烘渶灏忓崟浣� - .setUnit(dto.getStockUnit()) - .setStockUnit(dto.getStockUnit()) .setWeight(matnr.getWeight()) .setFieldsIndex(orderItem.getFieldsIndex()) .setShipperId(matnr.getShipperId()); //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲 - allOrders.add(item); + WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>() + .eq(WarehouseAreasItem::getAsnItemId, item.getAsnItemId()) + .eq(WarehouseAreasItem::getTrackCode, item.getTrackCode()) + .eq(StringUtils.isNotBlank(item.getSplrBatch()), WarehouseAreasItem::getSplrBatch, item.getSplrBatch())); + if (!Objects.isNull(serviceOne)) { + item.setAnfme(item.getAnfme() + serviceOne.getAnfme()); + item.setId(serviceOne.getId()); + } + + if (!warehouseAreasItemService.saveOrUpdate(item)) { + throw new CoolException("鏀惰揣澶辫触锛侊紒"); + } + } - if (!warehouseAreasItemService.saveBatch(allOrders)) { - throw new CoolException("鏀惰揣澶辫触锛侊紒"); - } +// if (!warehouseAreasItemService.saveBatch(allOrders)) { +// throw new CoolException("鏀惰揣澶辫触锛侊紒"); +// } // //鑾峰彇閲囪喘鏁伴噺 // double purQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getPurQty).sum(); // @@ -333,10 +351,10 @@ } /** - * @author Ryan - * @description 鍏跺畠鏀惰揣 * @param params * @return + * @author Ryan + * @description 鍏跺畠鏀惰揣 */ @Override public R otherReceipt(OtherReceiptParams params) { @@ -345,20 +363,28 @@ } List<AsnOrderItem> asnOrderItem = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>() .eq(AsnOrderItem::getAsnCode, params.getAsnCode()) - .eq(!Objects.isNull(params.getTrackCode()) ,AsnOrderItem::getTrackCode, params.getTrackCode())); + .eq(!Objects.isNull(params.getTrackCode()), AsnOrderItem::getTrackCode, params.getTrackCode())); if (Objects.isNull(asnOrderItem)) { throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�"); } + List<Short> shorts = Arrays.asList(AsnExceStatus.ASN_EXCE_STATUS_TASK_CANCEL.val, AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE + .val, AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val); + AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>() + .notIn(AsnOrder::getExceStatus, shorts) + .eq(AsnOrder::getCode, params.getAsnCode())); + if (Objects.isNull(order)) { + throw new CoolException("璇锋鏌ヨ鍗曠姸鎬佹槸鍚﹀凡瀹屾垚鎴栧凡鍙栨秷锛侊紒"); + } - return getAsnOrderItem(asnOrderItem); + return getAsnOrderItem(asnOrderItem); } /** + * @return * @author Ryan * @description 鑾峰彇鎵�鏈夐�氱煡鍗� - * @return */ @Override public List<AsnOrder> getAllAsnOrders() { @@ -367,10 +393,10 @@ } /** - * @author Ryan - * @description 鑾峰彇鏀惰揣鍖� * @param * @return + * @author Ryan + * @description 鑾峰彇鏀惰揣鍖� * @time 2025/3/11 10:12 */ @Override @@ -380,10 +406,10 @@ } /** - * @author Ryan - * @description 鑾峰彇鎵�鏈夊惎鐢ㄥ姩鎬佸瓧娈� * @param * @return + * @author Ryan + * @description 鑾峰彇鎵�鏈夊惎鐢ㄥ姩鎬佸瓧娈� * @time 2025/3/12 09:23 */ @Override @@ -392,10 +418,10 @@ } /** - * @author Ryan - * @description 鑾峰彇缁勭洏鏄庣粏 * @param * @return + * @author Ryan + * @description 鑾峰彇缁勭洏鏄庣粏 * @time 2025/4/7 16:58 */ @Override @@ -422,10 +448,10 @@ } /** - * @author Ryan - * @description 瑙g粦 * @param param * @return + * @author Ryan + * @description 瑙g粦 */ @Override public WaitPakin unBind(WaitPakinParam param) { @@ -434,6 +460,7 @@ /** * 鎶ユ鍔熻兘 + * * @param code * @param loginUserId * @return @@ -474,10 +501,10 @@ } /** - * @author Ryan - * @description 鎻愪氦鎶ユ * @param * @return + * @author Ryan + * @description 鎻愪氦鎶ユ * @time 2025/4/1 16:47 */ @Override @@ -492,14 +519,15 @@ List<AsnOrder> orders = new ArrayList<>(); orders.add(asnOrder); if (asnOrderMapper.notifyInspect(orders)) { - return R.ok("涓婃姤鎴愬姛锛侊紒"); - }else { + return R.ok("涓婃姤鎴愬姛锛侊紒"); + } else { return R.error("涓婃姤澶辫触锛侊紒"); } } /** * 閫氳繃鐗╂枡锛岃川妫�鍗曡幏鍙栭渶瑕佽川妫�鍗曟嵁 + * * @param params * @return */ @@ -510,7 +538,7 @@ } List<Short> asList = Arrays.asList(QlyIsptStatus.QLY_ISPT_STAS_DONE.val, QlyIsptStatus.QLY_ISPT_STAS_CLOSE.val); QlyInspect inspect = qlyInspectMapper.selectOne(new LambdaQueryWrapper<QlyInspect>() - .notIn(QlyInspect::getIsptStatus, asList) + .notIn(QlyInspect::getIsptStatus, asList) .eq(QlyInspect::getCode, params.getIsptCode())); if (Objects.isNull(inspect)) { throw new CoolException("璐ㄦ鍗曟嵁涓嶅瓨鍦紒!"); @@ -545,6 +573,7 @@ /** * 蹇�熻川妫� + * * @param params * @return */ @@ -563,12 +592,12 @@ } /** - * @author Ryan - * @description 浜哄伐涓婃灦 - * @param - * @return - * @time 2025/4/2 16:33 - */ + * @param + * @return + * @author Ryan + * @description 浜哄伐涓婃灦 + * @time 2025/4/2 16:33 + */ @Override public R operateToStock(OpStockParams params) { if (org.apache.commons.lang3.StringUtils.isBlank(params.getBarcode())) { @@ -692,6 +721,7 @@ /** * 鑾峰彇浠诲姟淇℃伅 + * * @param code * @return */ @@ -736,10 +766,10 @@ } /** - * @Author Ryan * @param code - * @desc 浠诲姟涓婃灦 * @return + * @Author Ryan + * @desc 浠诲姟涓婃灦 */ @Override @Transactional(rollbackFor = Exception.class) @@ -765,14 +795,14 @@ @Override public R completeOrder(Long id, Long loginUserId) { - return asnOrderMapper.completeOrder(id, loginUserId); + return asnOrderMapper.completeOrder(id, loginUserId); } /** - * @author Ryan - * @description 閫氳繃瀹瑰櫒鑾峰彇缁勬嫋鐗╂枡 * @param * @return + * @author Ryan + * @description 閫氳繃瀹瑰櫒鑾峰彇缁勬嫋鐗╂枡 * @time 2025/4/9 16:57 */ @Override @@ -785,7 +815,7 @@ } WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>() .eq(WaitPakin::getBarcode, params.get("barcode").toString()) - .eq(WaitPakin::getFlagDefect, flagDefect) + .eq(WaitPakin::getFlagDefect, flagDefect) .in(WaitPakin::getIoStatus, asList)); if (Objects.isNull(waitPakin)) { return R.ok(new ArrayList<>()); @@ -818,10 +848,10 @@ } /** - * @author Ryan - * @description 涓嶈壇鏍囩 * @param * @return + * @author Ryan + * @description 涓嶈壇鏍囩 * @time 2025/4/12 08:12 */ @Override @@ -831,10 +861,10 @@ } /** - * @author Ryan - * @description 鑾峰彇鍏ュ簱缁勬嫋淇℃伅 * @param barcode * @return + * @author Ryan + * @description 鑾峰彇鍏ュ簱缁勬嫋淇℃伅 */ @Override public R getPakinInStock(String barcode) { @@ -850,23 +880,23 @@ } /** + * @return * @author Ryan * @description 鑾峰彇搴撳彛绔欑偣淇℃伅 - * @return */ @Override public R getDeviceSites() { List<DeviceSite> sites = deviceSiteMapper.selectList(new LambdaQueryWrapper<DeviceSite>() - .select(DeviceSite::getId, DeviceSite::getSite, DeviceSite::getName) + .select(DeviceSite::getId, DeviceSite::getSite, DeviceSite::getName) .eq(DeviceSite::getStatus, 1) .groupBy(DeviceSite::getSite, DeviceSite::getId, DeviceSite::getName)); return R.ok(sites); } /** + * @return * @author Ryan * @description 鑾峰彇鎺ㄨ崘搴撲綅 - * @return */ @Override public R getRecommondLocs() { @@ -930,7 +960,7 @@ //鑾峰彇褰撳墠搴撳瓨淇℃伅 LocItem stockItem = locItemService.getOne(new LambdaQueryWrapper<LocItem>() // .eq(LocItem::getOrderItemId, asnOrderItem.getId()) - .eq(LocItem::getFieldsIndex, asnOrderItem.getFieldsIndex()) + .eq(LocItem::getFieldsIndex, asnOrderItem.getFieldsIndex()) .eq(LocItem::getBatch, asnOrderItem.getBatch()) .eq(LocItem::getMatnrId, asnOrderItem.getMatnrId())); //SET 褰撳墠搴撳瓨鏁伴噺 diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasItemController.java index ac79f29..5a5ad83 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasItemController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseAreasItemController.java @@ -34,12 +34,6 @@ BaseParam baseParam = buildParam(map, BaseParam.class); PageParam<WarehouseAreasItem, BaseParam> pageParam = new PageParam<>(baseParam, WarehouseAreasItem.class); QueryWrapper<WarehouseAreasItem> queryWrapper = pageParam.buildWrapper(true); - queryWrapper.select( "id","area_id","area_name","asn_id","plat_item_id","po_code", - "asn_code", "asn_item_id","matnr_id","maktx","matnr_code","fields_index","track_code", - "SUM(anfme) anfme","SUM(work_qty) work_qty","ispt_result","SUM(qty) qty", "splr_batch","batch","unit","stock_unit", - "brand","shipper_id","splr_id","weight","prod_time","`status`", "create_by", - "create_time","update_by","update_time","memo"); - queryWrapper.groupBy("matnr_code", "splr_batch", "track_code"); return R.ok().add(warehouseAreasItemService.page(pageParam, queryWrapper)); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java index e34df99..0d6bed9 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.manager.controller.params.PakinItem; import com.vincent.rsf.server.manager.controller.params.WaitPakinParam; @@ -187,11 +188,33 @@ } items.add(pakinItem); } + + } double sum1 = items.stream().mapToDouble(WaitPakinItem::getAnfme).sum(); + if (!waitPakinItemService.saveBatch(items)) { throw new CoolException("缁勬嫋鏄庣粏淇濆瓨澶辫触锛侊紒"); } + + for (WaitPakinItem pakinItem : items) { + WarehouseAreasItem one = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>() + .eq(WarehouseAreasItem::getTrackCode, pakinItem.getTrackCode()) + .eq(WarehouseAreasItem::getSplrBatch, pakinItem.getBatch())); + if (Objects.isNull(one)) { + throw new CoolException("鏀惰揣鍖烘暟鎹敊璇紒锛�"); + } + one.setWorkQty(one.getWorkQty() + pakinItem.getAnfme() + one.getQty()) ; + if (one.getWorkQty() > one.getAnfme()) { + throw new CoolException("缁勬墭鏁伴噺涓嶈兘澶т簬鏀惰揣鏁伴噺锛侊紒"); + } + if (!warehouseAreasItemService.saveOrUpdate(one)) { + throw new CoolException("鏀惰揣鍖烘墽琛屾暟閲忎慨鏀瑰け璐ワ紒锛�"); + } + } + + + waitPakin1.setAnfme(sum1); if (!this.updateById(waitPakin1)) { throw new CoolException("缁勬嫋鏁伴噺淇敼澶辫触锛侊紒"); -- Gitblit v1.9.1