1018653686@qq.com 1 سال پیش
والد
کامیت
0543dadce0
1فایلهای تغییر یافته به همراه55 افزوده شده و 61 حذف شده
  1. 55 61
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdApiServiceImpl.java

+ 55 - 61
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdApiServiceImpl.java

@@ -350,30 +350,18 @@ public class JdApiServiceImpl implements JdApiService {
                 for (JdOrder jdOrder : jdOrderList) {
                     Long id = collect.get(jdOrder.getOrderId()).getId();
                     jdOrder.setId(id);
-                    //如果京东采购单状态 = 已完成  &  明细数据中存在 实收 != 回告,则给京东采购单打上【异常】标记
-                    //如果实收>回告,则:给对应的明细打上【多货】标记;如果实收<回告,则:给对应的明细打上【少货】标记
-                    if(JdParamConstant.JD_ORDER_STATE_FINISH.equals(jdOrder.getState())){
-                        List<JdOrderDetails> jdOrderDetailsList = jdOrderDetailsService.lambdaQuery().eq(JdOrderDetails::getJdOrderId, jdOrder.getOrderId()).list();
-                        boolean flag = false;
-                        for (JdOrderDetails jdOrderDetail : jdOrderDetailsList) {
-                            if(ObjectUtil.isNotNull(jdOrderDetail.getActualNum()) && ObjectUtil.isNotNull(jdOrderDetail.getConfirmNum()) && jdOrderDetail.getActualNum().compareTo(jdOrderDetail.getConfirmNum()) != 0){
-                                flag = true;
-                                String exDesc = "";
-                                if (jdOrderDetail.getActualNum().compareTo(jdOrderDetail.getConfirmNum()) > 0){
-                                    exDesc = RunParamConstant.EXCESS;
-                                }else {
-                                    exDesc = RunParamConstant.SHORTAGE;
-                                }
-                                jdOrderDetail.setExDesc(exDesc);
-                                jdOrderDetail.setHasEx(RunParamConstant.EXCEPTION);
-                                jdOrderDetail.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
-                                jdOrderDetailsService.updateById(jdOrderDetail);
-                            }
-                        }
-                        if(flag){
-                            jdOrder.setHasEx(RunParamConstant.EXCEPTION);
-                        }
+                    //删除当前订单下的明细
+                    jdOrderDetailsService.lambdaUpdate().eq(JdOrderDetails::getJdOrderId, jdOrder.getOrderId()).remove();
+                    List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
+                    //重新插入明细
+                    boolean hasExFlag = dealOrderDetail(jdClient, jdOrder, jdOrderDetailsList);
+
+                    if (hasExFlag){
+                        jdOrder.setHasEx(RunParamConstant.EXCEPTION);
+                        jdOrder.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
                     }
+                    DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
+                    jdOrderDetailsService.saveBatch(jdOrderDetailsList);
                     jdOrderService.saveOrUpdate(jdOrder);
                 }
                 pageIndex++;
@@ -387,6 +375,47 @@ public class JdApiServiceImpl implements JdApiService {
         }
     }
 
+    private boolean dealOrderDetail(JdClient jdClient, JdOrder jdOrder, List<JdOrderDetails> jdOrderDetailsList) throws Exception {
+        VcGetdetailbyorderidRequest request = new VcGetdetailbyorderidRequest();
+        request.setOrderId(jdOrder.getOrderId());
+        request.setIsPage(false);
+        VcGetdetailbyorderidResponse response = jdClient.execute(request);
+        JOSDetailResultDto josDetailResultDto = response.getJosDetailResultDto();
+        List<PurchaseAllocationDetailDto> purchaseAllocationDetailList = josDetailResultDto.getPurchaseAllocationDetailList();
+        List<JdOrderDetails> jdOrderDetails = BeanUtil.copyToList(purchaseAllocationDetailList, JdOrderDetails.class);
+        DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
+        AtomicBoolean hasExFlag = new AtomicBoolean(false);
+        jdOrderDetails.forEach(item -> {
+            item.setJdOrderId(jdOrder.getId());
+            //产品编码
+            Long wareId = item.getWareId();
+            List<ProductInfo> list = productInfoService.lambdaQuery().eq(ProductInfo::getCustomCode, wareId).list();
+            if (CollectionUtil.isEmpty(list)) {
+                //TODO 没有产品触发异常;
+            } else {
+                item.setProductId(list.get(0).getId());
+            }
+            if(JdParamConstant.JD_ORDER_STATE_FINISH.equals(jdOrder.getState())){
+                //如果京东采购单状态 = 已完成  &  明细数据中存在 实收 != 回告,则给京东采购单打上【异常】标记
+                //如果实收>回告,则:给对应的明细打上【多货】标记;如果实收<回告,则:给对应的明细打上【少货】标记
+                if(ObjectUtil.isNotNull(item.getActualNum()) && ObjectUtil.isNotNull(item.getConfirmNum()) && item.getActualNum().compareTo(item.getConfirmNum()) != 0){
+                    String exDesc;
+                    if (item.getActualNum().compareTo(item.getConfirmNum()) > 0){
+                        exDesc = RunParamConstant.EXCESS;
+                    }else {
+                        exDesc = RunParamConstant.SHORTAGE;
+                    }
+                    item.setHasEx(RunParamConstant.EXCEPTION);
+                    item.setExDesc(exDesc);
+                    item.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
+                    hasExFlag.set(true);
+                }
+            }
+        });
+        jdOrderDetailsList.addAll(jdOrderDetails);
+        return hasExFlag.get();
+    }
+
     /**
      * 处理回告状态、订单属性、删除状态、图书回告不满足原因、订单状态
      * @author hj
@@ -596,43 +625,8 @@ public class JdApiServiceImpl implements JdApiService {
                     //获取明细
                     List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
                     for (JdOrder jdOrder : jdOrderList) {
-                        VcGetdetailbyorderidRequest request = new VcGetdetailbyorderidRequest();
-                        request.setOrderId(jdOrder.getOrderId());
-                        request.setIsPage(false);
-                        VcGetdetailbyorderidResponse response = client.execute(request);
-                        JOSDetailResultDto josDetailResultDto = response.getJosDetailResultDto();
-                        List<PurchaseAllocationDetailDto> purchaseAllocationDetailList = josDetailResultDto.getPurchaseAllocationDetailList();
-                        List<JdOrderDetails> jdOrderDetails = BeanUtil.copyToList(purchaseAllocationDetailList, JdOrderDetails.class);
-                        DynamicDataSourceContextHolder.push(SourceConstant.ITEM);
-                        AtomicBoolean hasExFlag = new AtomicBoolean(false);
-                        jdOrderDetails.forEach(item -> {
-                            item.setJdOrderId(jdOrder.getId());
-                            //产品编码
-                            Long wareId = item.getWareId();
-                            List<ProductInfo> list = productInfoService.lambdaQuery().eq(ProductInfo::getCustomCode, wareId).list();
-                            if (CollectionUtil.isEmpty(list)) {
-                                //TODO 没有产品触发异常;
-                            } else {
-                                item.setProductId(list.get(0).getId());
-                            }
-                            if(JdParamConstant.JD_ORDER_STATE_FINISH.equals(jdOrder.getState())){
-                                //如果京东采购单状态 = 已完成  &  明细数据中存在 实收 != 回告,则给京东采购单打上【异常】标记
-                                if(ObjectUtil.isNotNull(item.getActualNum()) && ObjectUtil.isNotNull(item.getConfirmNum()) && item.getActualNum().compareTo(item.getConfirmNum()) != 0){
-                                    String exDesc;
-                                    if (item.getActualNum().compareTo(item.getConfirmNum()) > 0){
-                                        exDesc = RunParamConstant.EXCESS;
-                                    }else {
-                                        exDesc = RunParamConstant.SHORTAGE;
-                                    }
-                                    item.setHasEx(RunParamConstant.EXCEPTION);
-                                    item.setExDesc(exDesc);
-                                    item.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
-                                    hasExFlag.set(true);
-                                }
-                            }
-                        });
-                        jdOrderDetailsList.addAll(jdOrderDetails);
-                        if (hasExFlag.get()){
+                        boolean hasExFlag = dealOrderDetail(client, jdOrder, jdOrderDetailsList);
+                        if (hasExFlag){
                             jdOrder.setHasEx(RunParamConstant.EXCEPTION);
                             jdOrder.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
                             jdOrderService.updateById(jdOrder);
@@ -885,7 +879,7 @@ public class JdApiServiceImpl implements JdApiService {
         request.setCreatedDateEnd(endTime);
         request.setPageIndex(pageIndex);
         request.setPageSize(pageSize);
-//        request.setOrderIds("1618415008");
+        request.setOrderIds("1624825132");
         if(CollectionUtil.isNotEmpty(orderIds)){
             String orderIdsStr = orderIds.stream().map(Object::toString).collect(Collectors.joining(","));
             request.setOrderIds(orderIdsStr);