From 11662208c26eb3d837d4c2d1e7cbbeae5d5c9943 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 18 八月 2025 13:59:13 +0800 Subject: [PATCH] 库存调整功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 204 insertions(+), 26 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java index 5440f0c..303f02b 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java @@ -2,19 +2,25 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.api.controller.erp.params.*; +import com.vincent.rsf.server.common.domain.BaseParam; +import com.vincent.rsf.server.common.domain.PageParam; +import com.vincent.rsf.server.manager.controller.dto.LocStockDto; +import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.OrderType; -import com.vincent.rsf.server.manager.entity.PurchaseItem; -import com.vincent.rsf.server.manager.service.PurchaseItemService; -import com.vincent.rsf.server.manager.service.PurchaseService; +import com.vincent.rsf.server.manager.service.*; +import com.vincent.rsf.server.manager.service.impl.MatnrServiceImpl; import com.vincent.rsf.server.system.constant.SerialRuleCode; -import com.vincent.rsf.server.api.controller.params.OrderParams; import com.vincent.rsf.server.system.entity.Fields; import com.vincent.rsf.server.system.service.FieldsItemService; import com.vincent.rsf.server.system.service.FieldsService; import com.vincent.rsf.server.system.utils.SerialRuleUtils; import com.vincent.rsf.server.api.service.ReceiveMsgService; -import com.vincent.rsf.server.manager.entity.Purchase; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -42,7 +48,29 @@ private FieldsService fieldsService; @Autowired private FieldsItemService fieldsItemService; + @Autowired + private MatnrGroupService matnrGroupService; + @Autowired + private MatnrServiceImpl matnrService; + @Autowired + private AsnOrderService asnOrderService; + @Autowired + private AsnOrderItemService asnOrderItemService; + @Autowired + private DeliveryService deliveryService; + @Autowired + private DeliveryItemService deliveryItemService; + @Autowired + private LocService locService; + @Autowired + private LocItemService locItemService; + /** + * @author Ryan + * @date 2025/8/15 + * @description: 淇濆瓨PO/DO鍗曟嵁 + * @version 1.0 + */ @Override @Transactional(rollbackFor = Exception.class) public boolean syncPurchasee(List<OrderParams> orders) { @@ -50,35 +78,69 @@ throw new CoolException("鍗曟嵁鍐呭涓嶈兘涓虹┖锛侊紒"); } orders.forEach(ors -> { - Purchase purchase = new Purchase(); - BeanUtils.copyProperties(ors, purchase); - String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.PURCHASE_CODE, purchase); - purchase.setCode(wkVal) - .setType(OrderType.ORDER_IN.type); - if (!purchaseService.save(purchase)) { - throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触"); - } + if (ors.getType().equals("po")) { + Purchase purchase = new Purchase(); + BeanUtils.copyProperties(ors, purchase); + String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.PURCHASE_CODE, purchase); + purchase.setCode(wkVal) + .setType(OrderType.ORDER_IN.type); + if (!purchaseService.save(purchase)) { + throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触"); + } - //鏌ヨ鎵╁睍瀛楁鏄惁瀛樺湪 - List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1)); + //鏌ヨ鎵╁睍瀛楁鏄惁瀛樺湪 + List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1)); - //鍒ゆ柇瀛愬垪琛ㄤ笉涓虹┖ - if (!ors.getChildren().isEmpty()) { - ArrayList<PurchaseItem> list = new ArrayList<>(); - ors.getChildren().forEach(orderItem -> { - PurchaseItem item = new PurchaseItem(); - BeanUtils.copyProperties(orderItem, item); + //鍒ゆ柇瀛愬垪琛ㄤ笉涓虹┖ + if (!ors.getChildren().isEmpty()) { + ArrayList<PurchaseItem> list = new ArrayList<>(); + ors.getChildren().forEach(orderItem -> { + PurchaseItem item = new PurchaseItem(); + BeanUtils.copyProperties(orderItem, item); // if (!fields.isEmpty()) { // List<String> fieldValue = fields.stream().map(Fields::getFields).collect(Collectors.toList()); // fieldValue.forEach(value -> { // // }); // } - item.setPurchaseId(purchase.getId()); - list.add(item); - }); - if (!purchaseItemService.saveBatch(list)) { - throw new CoolException("閲囪喘鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�"); + item.setPurchaseId(purchase.getId()); + list.add(item); + }); + if (!purchaseItemService.saveBatch(list)) { + throw new CoolException("閲囪喘鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�"); + } + } + } else { + Delivery delivery = new Delivery(); + BeanUtils.copyProperties(ors, delivery); + String wkVal = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_DELIVERY_RULE_CODE, delivery); + delivery.setCode(wkVal) + .setType(OrderType.ORDER_OUT.type); + if (!deliveryService.save(delivery)) { + throw new CoolException("閲囪喘鍗曟嵁淇濆瓨澶辫触"); + } + + //鏌ヨ鎵╁睍瀛楁鏄惁瀛樺湪 + List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1)); + + //鍒ゆ柇瀛愬垪琛ㄤ笉涓虹┖ + if (!ors.getChildren().isEmpty()) { + ArrayList<DeliveryItem> list = new ArrayList<>(); + ors.getChildren().forEach(orderItem -> { + DeliveryItem item = new DeliveryItem(); + BeanUtils.copyProperties(orderItem, item); +// if (!fields.isEmpty()) { +// List<String> fieldValue = fields.stream().map(Fields::getFields).collect(Collectors.toList()); +// fieldValue.forEach(value -> { +// +// }); +// } + item.setDeliveryId(delivery.getId()); + list.add(item); + }); + if (!deliveryItemService.saveBatch(list)) { + throw new CoolException("閲囪喘鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�"); + } } } }); @@ -86,6 +148,122 @@ return true; } + /** + * 鐗╂枡淇℃伅鍚屾 + * + * @param matnrs + */ + @Override + public void syncMatnrs(List<BaseMatParms> matnrs) { + List<Matnr> syncMatnrs = new ArrayList<>(); + if (!matnrs.isEmpty()) { + matnrs.forEach(matnr -> { + Matnr mat = new Matnr(); + if (Objects.isNull(matnr.getMatnr())) { + throw new RuntimeException("鐗╂枡缂栫爜涓嶈兘涓虹┖锛侊紒"); + } + BeanUtils.copyProperties(matnr, mat); + mat.setCode(matnr.getMatnr()).setName(matnr.getMaktx()); + if (!Objects.isNull(matnr.getGroupName())) { + MatnrGroup matnrGroup = matnrGroupService.getOne(new LambdaQueryWrapper<MatnrGroup>().eq(MatnrGroup::getName, matnr.getGroupName()), false); + if (Objects.isNull(matnrGroup)) { + mat.setGroupCode(matnrGroup.getCode()).setGroupId(matnrGroup.getId()); + } + } + syncMatnrs.add(mat); + }); + if (!matnrService.saveOrUpdateBatch(syncMatnrs)) { + throw new CoolException("鐗╂枡淇℃伅淇濆瓨鎴愬姛锛侊紒"); + } + } + } + /** + * @author Ryan + * @date 2025/8/15 + * @description: 璁㈠崟鏌ヨ + * @version 1.0 + */ + @Override + public R queryOrderStatus(QueryOrderParam queryParams) { + WkOrder wkOrders = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>() + .eq(WkOrder::getCode, queryParams.getOrderNo()) + .eq(WkOrder::getType, queryParams.getType())); + if (Objects.isNull(wkOrders)) { + throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�"); + } + List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, wkOrders.getId())); + + WkOrderDto wkorderDto = new WkOrderDto(); + wkorderDto.setOrder(wkOrders).setOrderItems(orderItems); + + return R.ok().add(wkorderDto); + } + + /** + * @author Ryan + * @date 2025/8/15 + * @description: 鏌ヨ搴撲綅淇℃伅 + * @version 1.0 + */ + @Override + public R syncLocsDetl(PageParam<Loc, BaseParam> pageParam, QueryWrapper<Loc> wrapper) { + Page<Object> page = new Page<>(); + page.setCurrent(pageParam.getCurrent()).setSize(pageParam.getSize()); + IPage<LocStockDto> locStocks = locService.getLocDetls(page); + return R.ok().add(locStocks); + } + + /** + * @author Ryan + * @date 2025/8/18 + * @description: 搴撲綅鍚屾 + * @version 1.0 + */ + @Override + @Transactional(timeout = 30, rollbackFor = Exception.class) + public R syncLocs(List<SyncLocsParams> locs) { + List<Loc> syncLocs = new ArrayList<>(); + locs.forEach(loc -> { + Loc loc1 = new Loc(); + BeanUtils.copyProperties(loc, loc1); + loc1.setCode(loc.getLocCode()).setId(null); + syncLocs.add(loc1); + }); + if (!locService.saveBatch(syncLocs)) { + throw new CoolException("搴撲綅鍚屾澶辫触锛侊紒"); + } + return R.ok(); + } + + /** + * @author Ryan + * @date 2025/8/18 + * @description: 鐗╂枡淇℃伅鍚屾 + * @version 1.0 + */ + @Override + @Transactional(timeout = 30, rollbackFor = Exception.class) + public R syncMatGroups(List<SyncMatGroupsParams> matGroupsParams) { + List<MatnrGroup> syncMatGroups = new ArrayList<>(); + matGroupsParams.forEach(matGroupsParam -> { + MatnrGroup matnrGroup = new MatnrGroup(); + BeanUtils.copyProperties(matGroupsParam, matnrGroup); + if (Objects.isNull(matGroupsParam.getCode())) { + throw new CoolException("鐗╂枡鍒嗙粍缂栫爜涓嶈兘涓虹┖锛侊紒"); + } + if (Objects.isNull(matGroupsParam.getName())) { + throw new CoolException("鍒嗙粍鍚嶇О涓嶈兘涓虹┖锛侊紒"); + } + if (Objects.isNull(matGroupsParam.getParCode())) { + throw new CoolException("涓婄骇鐗╂枡鍒嗙粍缂栫爜涓嶈兘涓虹┖锛侊紒"); + } + syncMatGroups.add(matnrGroup); + }); + if (!matnrGroupService.saveBatch(syncMatGroups)) { + throw new CoolException("鐗╂枡鍒嗙粍淇濆瓨澶辫触锛侊紒"); + } + return R.ok(); + } } -- Gitblit v1.9.1