From 52d78628a70d6aa129f874050b7846d259819554 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期三, 15 十月 2025 08:54:19 +0800
Subject: [PATCH] 物料同步接口优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java |   54 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 35 insertions(+), 19 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
index 4033ee4..4dc8371 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -11,6 +11,7 @@
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.manager.entity.WkOrder;
+import com.vincent.rsf.server.manager.entity.WkOrderItem;
 import com.vincent.rsf.server.manager.enums.OrderType;
 import com.vincent.rsf.server.manager.enums.OrderWorkType;
 import com.vincent.rsf.server.common.domain.BaseParam;
@@ -23,13 +24,13 @@
 import com.vincent.rsf.server.manager.enums.CompanysType;
 import com.vincent.rsf.server.manager.enums.QlyIsptResult;
 import com.vincent.rsf.server.manager.mapper.AsnOrderItemMapper;
-import com.vincent.rsf.server.manager.entity.AsnOrderItem;
 import com.vincent.rsf.server.manager.service.AsnOrderItemService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.vincent.rsf.server.manager.service.AsnOrderService;
 import com.vincent.rsf.server.manager.service.CompanysService;
 import com.vincent.rsf.server.manager.service.MatnrService;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
+import com.vincent.rsf.server.system.entity.Fields;
 import com.vincent.rsf.server.system.service.DictDataService;
 import com.vincent.rsf.server.system.service.FieldsItemService;
 import com.vincent.rsf.server.system.service.FieldsService;
@@ -45,7 +46,7 @@
 import java.util.stream.Collectors;
 
 @Service("asnOrderItemService")
-public class AsnOrderItemServiceImpl extends ServiceImpl<AsnOrderItemMapper, AsnOrderItem> implements AsnOrderItemService {
+public class AsnOrderItemServiceImpl extends ServiceImpl<AsnOrderItemMapper, WkOrderItem> implements AsnOrderItemService {
 
     @Autowired
     private AsnOrderService asnOrderMapper;
@@ -72,7 +73,7 @@
         if (Objects.isNull(orders) || orders.isEmpty()) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        List<AsnOrderItem> items = this.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getId, orders));
+        List<WkOrderItem> items = this.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getId, orders));
         if (items.isEmpty()) {
             throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
         }
@@ -137,9 +138,9 @@
             if (!asnOrderMapper.save(order)) {
                 throw new CoolException("鍗曟嵁淇濆瓨澶辫触锛侊紒");
             }
-            List<AsnOrderItem> items = new ArrayList<>();
+            List<WkOrderItem> items = new ArrayList<>();
             for (AsnOrderTemplate orderTemplate : listMap.get(key)) {
-                AsnOrderItem orderItem = new AsnOrderItem();
+                WkOrderItem orderItem = new WkOrderItem();
                 if (StringUtils.isBlank(orderTemplate.getMatnrCode())) {
                     throw new CoolException(orderTemplate.getCode() + "锛氱墿鏂欑紪鐮佷笉鑳戒负绌猴紒锛�");
                 }
@@ -160,8 +161,8 @@
                     throw new CoolException(sbFaild.toString());
                 }
                 String trackCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, matnr);
-                orderItem.setAsnId(order.getId())
-                        .setAsnCode(order.getCode())
+                orderItem.setOrderId(order.getId())
+                        .setOrderCode(order.getCode())
                         .setSplrBatch(orderTemplate.getSplrBatch())
                         .setPlatItemId(orderTemplate.getPlatItemId())
                         .setAnfme(Double.parseDouble(orderTemplate.getAnfme()))
@@ -202,7 +203,7 @@
             }
             if (!items.isEmpty()) {
 //                double qty = items.stream().mapToDouble(AsnOrderItem::getQty).sum();
-                double anfme = items.stream().mapToDouble(AsnOrderItem::getAnfme).sum();
+                double anfme = items.stream().mapToDouble(WkOrderItem::getAnfme).sum();
                 if (!asnOrderMapper.update(new LambdaUpdateWrapper<WkOrder>()
 //                        .set(AsnOrder::getQty, qty)
                         .set(WkOrder::getAnfme, anfme)
@@ -226,26 +227,41 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean fieldsSave(Map<String, Object> params, Long loginUserId) {
-        AsnOrderItem asnOrderItem = JSONObject.parseObject(JSONObject.toJSONString(params), AsnOrderItem.class);
-        if (StringUtils.isNoneBlank(asnOrderItem.getSplrCode())) {
+        WkOrderItem wkOrderItem = JSONObject.parseObject(JSONObject.toJSONString(params), WkOrderItem.class);
+        if (StringUtils.isNoneBlank(wkOrderItem.getSplrCode())) {
             Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>()
-                    .eq(Companys::getId, asnOrderItem.getSplrCode())
+                    .eq(Companys::getId, wkOrderItem.getSplrCode())
                     .eq(Companys::getType, CompanysType.COMPANYS_TYPE_SUPPLIER.val));
             if (!Objects.isNull(companys)) {
-                asnOrderItem.setSplrCode(companys.getCode()).setSplrName(companys.getName());
+                wkOrderItem.setSplrCode(companys.getCode()).setSplrName(companys.getName());
             }
         }
-        if (Objects.isNull(asnOrderItem.getAnfme()) || Double.compare(asnOrderItem.getAnfme(), 0.0) <= 0) {
+        if (Objects.isNull(wkOrderItem.getAnfme()) || Double.compare(wkOrderItem.getAnfme(), 0.0) <= 0) {
             throw new CoolException("璁″垝鏁颁笉鑳戒负绌猴紒锛�");
         }
+
+        Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getCode, wkOrderItem.getMatnrCode()));
+        if (Objects.isNull(matnr)) {
+            throw new CoolException("鏁版嵁閿欒锛氱墿鏂�" + wkOrderItem.getMatnrCode() + "涓嶅瓨鍦紒锛�");
+        }
+        wkOrderItem.setMatnrCode(matnr.getCode()).setMatnrId(matnr.getId());
+
         //淇濆瓨鎵╁睍瀛楁
         try {
             StringBuffer sb = new StringBuffer();
-            if (Objects.isNull(asnOrderItem.getFieldsIndex()) || StringUtils.isBlank(asnOrderItem.getFieldsIndex())) {
-                sb.append(asnOrderItem.getMatnrId() + asnOrderItem.getSplrBatch() );
+            if (Objects.isNull(wkOrderItem.getFieldsIndex()) || StringUtils.isBlank(wkOrderItem.getFieldsIndex())) {
+                List<Fields> fields = FieldsUtils.getFieldsSta();
+                for (Fields field : fields) {
+                    if (Objects.isNull(params.get(field.getFields()))) {
+                        continue;
+                    }
+                    //瀛楁鎷兼帴
+                    sb.append(params.get(field.getFields()));
+                }
+                sb.append(wkOrderItem.getMatnrId() + wkOrderItem.getSplrBatch());
                 //鑾峰彇16浣島uid
                 String uuid16 = Cools.md5Chinese(sb.toString());
-                asnOrderItem.setFieldsIndex(uuid16);
+                wkOrderItem.setFieldsIndex(uuid16);
                 params.put("index", uuid16);
             }
             //淇濆瓨鎴栨洿鏂板姩鎬佸瓧娈靛��
@@ -253,15 +269,15 @@
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
-        asnOrderItem.setUpdateBy(loginUserId).setCreateBy(loginUserId);
-        if (!this.saveOrUpdate(asnOrderItem)) {
+        wkOrderItem.setUpdateBy(loginUserId).setCreateBy(loginUserId);
+        if (!this.saveOrUpdate(wkOrderItem)) {
             throw new CoolException("鏀惰揣閫氱煡鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�");
         }
         return true;
     }
 
     @Override
-    public IPage<Map<String, Object>> listByAsnId(PageParam<AsnOrderItem, BaseParam> pageParam, QueryWrapper<AsnOrderItem> buildWrapper) {
+    public IPage<Map<String, Object>> listByAsnId(PageParam<WkOrderItem, BaseParam> pageParam, QueryWrapper<WkOrderItem> buildWrapper) {
         IPage<Map<String, Object>> hsahMap = this.baseMapper.resultForMap(pageParam, buildWrapper);
         if (hsahMap.getRecords().isEmpty()) {
             return hsahMap.setRecords(new ArrayList<>());

--
Gitblit v1.9.1