1018653686@qq.com vor 1 Jahr
Ursprung
Commit
e25e7e9a93

+ 3 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdOrder.java

@@ -1,5 +1,7 @@
 package com.fjhx.victoriatourist.entity.jd.po;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
@@ -151,5 +153,6 @@ public class JdOrder extends BasePo {
     private String remark;
 
     /**处理状态;1=未处理;2=已处理**/
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String handleStatus;
 }

+ 5 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/jd/po/JdOrderDetails.java

@@ -1,5 +1,7 @@
 package com.fjhx.victoriatourist.entity.jd.po;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.ruoyi.common.core.domain.BasePo;
 import lombok.Getter;
@@ -83,10 +85,13 @@ public class JdOrderDetails extends BasePo {
     private String wareProperty;//目前是json考虑新表
     //----------------------京东订单明细字段结束--------------------------------------
     /**是否有异常**/
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String hasEx;
     /**异常描述**/
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String exDesc;
     /**处理状态**/
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String handleStatus;
     /**异常处理**/
     private String exHandle;

+ 42 - 12
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdApiServiceImpl.java

@@ -29,6 +29,9 @@ import com.fjhx.victoriatourist.service.jd.constants.InitDictConstant;
 import com.fjhx.victoriatourist.service.jd.constants.JdParamConstant;
 import com.fjhx.victoriatourist.service.jd.constants.RunParamConstant;
 import com.fjhx.victoriatourist.service.jd.factory.JdClientFactory;
+import com.google.common.collect.ArrayTable;
+import com.google.common.collect.HashBasedTable;
+import com.google.common.collect.Table;
 import com.jd.open.api.sdk.JdClient;
 import com.jd.open.api.sdk.domain.supplier.PoCommonForJosWebService.response.getcomponentlist.Component;
 import com.jd.open.api.sdk.domain.supplier.PoCommonForJosWebService.response.getwaredeliverdistinctlist.WarehouseDto;
@@ -337,7 +340,7 @@ public class JdApiServiceImpl implements JdApiService {
             int pageSize = 30;
             Page<JdOrder> page = new Page<>(pageIndex, pageSize);
             do {
-                Page<JdOrder> jdOrderPage = jdOrderService.lambdaQuery().notIn(JdOrder::getState, notIn).orderByAsc(JdOrder::getCreatedDate).page(page);
+                Page<JdOrder> jdOrderPage = jdOrderService.lambdaQuery().notIn(JdOrder::getState, notIn).orderByDesc(JdOrder::getCreatedDate).page(page);
                 //2.按每30个订单查询京东订单状态
                 List<JdOrder> records = jdOrderPage.getRecords();
                 totalPage = (jdOrderPage.getTotal() / pageSize) + (jdOrderPage.getTotal() % pageSize > 0 ? 1 : 0);
@@ -350,18 +353,41 @@ public class JdApiServiceImpl implements JdApiService {
                 for (JdOrder jdOrder : jdOrderList) {
                     Long id = collect.get(jdOrder.getOrderId()).getId();
                     jdOrder.setId(id);
-                    //删除当前订单下的明细
-                    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);
+                    if(JdParamConstant.JD_ORDER_STATE_FINISH.equals(jdOrder.getState())) {
+                        List<JdOrderDetails> jdOrderDetailsList = new ArrayList<>();
+                        //重新插入明细
+                        boolean hasExFlag = dealOrderDetail(jdClient, jdOrder, jdOrderDetailsList);
+                        DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
+                        //获取当前明细记录
+                        List<JdOrderDetails> dbJdOrderDetails = jdOrderDetailsService.lambdaQuery().eq(JdOrderDetails::getJdOrderId, id).list();
+                        Table<Long, Long, JdOrderDetails> jdOrderDetailsTable = HashBasedTable.create();
+                        jdOrderDetailsList.forEach(item -> jdOrderDetailsTable.put(item.getOrderId(), item.getWareId(), item));
+                        for (JdOrderDetails dbJdOrderDetail : dbJdOrderDetails) {
+                            JdOrderDetails onlineJdOrderDetails = jdOrderDetailsTable.get(dbJdOrderDetail.getOrderId(), dbJdOrderDetail.getWareId());
+                            dbJdOrderDetail.setDeliverCenterId(onlineJdOrderDetails.getDeliverCenterId());
+                            dbJdOrderDetail.setDeliverCenterName(onlineJdOrderDetails.getDeliverCenterName());
+                            dbJdOrderDetail.setWareName(onlineJdOrderDetails.getWareName());
+                            dbJdOrderDetail.setPurchasePrice(onlineJdOrderDetails.getPurchasePrice());
+                            dbJdOrderDetail.setOriginalNum(onlineJdOrderDetails.getOriginalNum());
+                            dbJdOrderDetail.setConfirmNum(onlineJdOrderDetails.getConfirmNum());
+                            dbJdOrderDetail.setActualNum(onlineJdOrderDetails.getActualNum());
+                            dbJdOrderDetail.setNonDeliveryReason(onlineJdOrderDetails.getNonDeliveryReason());
+                            dbJdOrderDetail.setTotoalPrice(onlineJdOrderDetails.getTotoalPrice());
+                            dbJdOrderDetail.setStoreId(onlineJdOrderDetails.getStoreId());
+                            dbJdOrderDetail.setStoreName(onlineJdOrderDetails.getStoreName());
+                            dbJdOrderDetail.setHasEx(onlineJdOrderDetails.getHasEx());
+                            dbJdOrderDetail.setExDesc(onlineJdOrderDetails.getExDesc());
+                            dbJdOrderDetail.setHandleStatus(onlineJdOrderDetails.getHandleStatus());
+                        }
+                        if (hasExFlag) {
+                            jdOrder.setHasEx(RunParamConstant.EXCEPTION);
+                            jdOrder.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
+                        }else{
+                            jdOrder.setHasEx(RunParamConstant.NO_EXCEPTION);
+                            jdOrder.setHandleStatus(null);
+                        }
+                        jdOrderDetailsService.saveOrUpdateBatch(dbJdOrderDetails);
                     }
-                    DynamicDataSourceContextHolder.push(SourceConstant.VICTORIATOURIST);
-                    jdOrderDetailsService.saveBatch(jdOrderDetailsList);
                     jdOrderService.saveOrUpdate(jdOrder);
                 }
                 pageIndex++;
@@ -409,6 +435,10 @@ public class JdApiServiceImpl implements JdApiService {
                     item.setExDesc(exDesc);
                     item.setHandleStatus(RunParamConstant.EXCEPTION_STATE_UNTREATED);
                     hasExFlag.set(true);
+                }else {
+                    item.setHasEx(null);
+                    item.setExDesc(null);
+                    item.setHandleStatus(null);
                 }
             }
         });