From ca23f2be97249ab82494983ee34636dcc28c8a19 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 02 四月 2025 10:13:52 +0800
Subject: [PATCH] 报检提示优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java |  147 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 147 insertions(+), 0 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java
index 5f3bfc8..570175a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReportMsgServiceImpl.java
@@ -1,7 +1,37 @@
 package com.vincent.rsf.server.api.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.vincent.rsf.common.domain.CommonReponse;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.api.config.RemotesInfoProperties;
+import com.vincent.rsf.server.api.entity.dto.PoItemsDto;
+import com.vincent.rsf.server.api.entity.params.ErpInspectItem;
+import com.vincent.rsf.server.api.entity.params.ErpInspectParams;
 import com.vincent.rsf.server.api.service.ReportMsgService;
+import com.vincent.rsf.server.manager.entity.AsnOrder;
+import com.vincent.rsf.server.manager.entity.AsnOrderItem;
+import com.vincent.rsf.server.manager.entity.Purchase;
+import com.vincent.rsf.server.manager.service.AsnOrderItemService;
+import com.vincent.rsf.server.manager.service.AsnOrderService;
+import com.vincent.rsf.server.manager.service.PurchaseService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author Ryan
@@ -10,7 +40,124 @@
  * @description
  * @create 2025/3/12 17:08
  */
+@Slf4j
 @Service
 public class ReportMsgServiceImpl implements ReportMsgService {
 
+    @Autowired
+    private PurchaseService purchaseService;
+
+    @Autowired
+    private RemotesInfoProperties.ApiInfo apiInfo;
+
+    @Autowired
+    private RestTemplate restTemplate;
+    @Autowired
+    private RemotesInfoProperties remotesInfoProperties;
+
+    @Autowired
+    private AsnOrderService asnOrderService;
+    @Autowired
+    private AsnOrderItemService asnOrderItemService;
+    /**
+     * @author Ryan
+     * @description 涓婃姤璐ㄦ鍒楄〃
+     * @params [items 鍒楄〃]
+     * @return boolean
+     * @time 2025/3/7 09:12
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean reportInspectNotify(List<PoItemsDto> items) {
+        if (items.isEmpty()) {
+            throw new CoolException("涓婃姤鍐呭涓虹┖锛侊紒");
+        }
+        List<ErpInspectParams> inspectParams =  new ArrayList<>();
+        Map<String, List<PoItemsDto>> listMap = items.stream().collect(Collectors.groupingBy(PoItemsDto::getPurchaseId));
+        listMap.keySet().forEach(key -> {
+            Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getId, Long.valueOf(key)));
+            if (Objects.isNull(purchase)) {
+                throw new CoolException("閲囪喘鍗曚俊鎭湁璇紒锛�");
+            }
+            ErpInspectParams params = new ErpInspectParams();
+            List<ErpInspectItem> inspectItems = new ArrayList<>();
+            //璧嬪�糴rp涓诲崟缂栫爜,缂栧彿
+            params.setPoId(purchase.getPlatId())
+                    .setPoCode(purchase.getPlatCode());
+            List<PoItemsDto> dtos = listMap.get(key);
+            if (dtos.isEmpty()) {
+                throw new CoolException("鍗曟嵁淇℃伅閿欒锛侊紒");
+            }
+            dtos.forEach(dto -> {
+                ErpInspectItem inspect= new ErpInspectItem();
+                BeanUtils.copyProperties(dto, inspect);
+                //璧嬪�糴rp鏄庣粏缂栫爜
+                inspect.setPoItemId(dto.getPlatItemId());
+                inspectItems.add(inspect);
+            });
+            params.setChildren(inspectItems);
+            inspectParams.add(params);
+
+        });
+
+        MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
+        //鑾峰彇涓婃姤璐ㄦ鎺ュ彛
+        String url = remotesInfoProperties.getBaseUrl() + apiInfo.getNotifyInspect();
+        // 璁剧疆璇锋眰鍙傛暟
+        params.add("params", JSONObject.toJSONString(inspectParams));
+        log.info("璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", url, JSONObject.toJSONString(inspectParams));
+        HttpHeaders headers = new HttpHeaders();
+        headers.add("Content-Type", "application/json");
+        HttpEntity httpEntity = new HttpEntity<>(params, headers);
+        // 璇锋眰
+        ResponseEntity<String> exchange = restTemplate.exchange(url, HttpMethod.POST, httpEntity, String.class);
+        log.info("涓嬪彂浠诲姟 杩斿洖缁撴灉锛歿}", exchange);
+        if (Objects.isNull(exchange.getBody()) || exchange.getBody() == null) {
+            throw new CoolException("涓嬪彂浠诲姟澶辫触锛侊紒");
+        } else {
+            CommonReponse reponse = (CommonReponse) JSON.parse(exchange.getBody());
+            if (reponse.getCode() == 0) {
+                //淇敼asn涓婃姤鐘舵��
+                Set<String> itemSets = items.stream().map(PoItemsDto::getId).collect(Collectors.toSet());
+                Set<Long> longSet = new HashSet<>();
+                itemSets.forEach(set -> {
+                    longSet.add(Long.parseLong(set));
+                });
+
+                List<AsnOrderItem> asnOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getPoDetlId, longSet));
+                if (asnOrderItems.isEmpty()) {
+                    throw new CoolException("ASN鍗曟嵁涓嶅瓨鍦紒锛�");
+                }
+                List<Long> list = asnOrderItems.stream().map(AsnOrderItem::getId).collect(Collectors.toList());
+
+                /**************************     淇敼ASN鏄庣粏鍗曠姸鎬�         ******************************/
+
+
+                if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>().in(AsnOrderItem::getId, list).set(AsnOrderItem::getStatus, 1))) {
+                    throw new CoolException("ASN鏄庣粏鍗曟嵁鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+                }
+
+                /**************************     淇敼ASN涓诲崟鏁版嵁         ******************************/
+                //鑾峰彇ASN鏄庣粏璁㈠崟鏍囪瘑
+                List<Long> ids = asnOrderItems.stream().map(AsnOrderItem::getAsnId).collect(Collectors.toList());
+                //ASN鏄庣粏鍗曟嵁鍒嗙粍
+                Map<Long, List<AsnOrderItem>> asnIds = asnOrderItems.stream().collect(Collectors.groupingBy(AsnOrderItem::getAsnId));
+                ids.forEach(id -> {
+                    int count = asnOrderService.count(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, id));
+                    if (count == asnIds.get(id).size()) {
+                        if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>().eq(AsnOrder::getId, id).set(AsnOrder::getStatus, 1))) {
+                            throw new CoolException("ASN涓诲崟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+                        }
+                    } else {
+                        if (!asnOrderService.update(new LambdaUpdateWrapper<AsnOrder>().eq(AsnOrder::getId, id).set(AsnOrder::getStatus, 2))) {
+                            throw new CoolException("ASN涓诲崟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+                        }
+                    }
+                });
+                return true;
+            } else {
+                throw new CoolException(reponse.getMsg());
+            }
+        }
+    }
 }

--
Gitblit v1.9.1