Browse Source

Merge remote-tracking branch 'origin/develop' into develop

FengChaoYu 5 months ago
parent
commit
274651da2a
18 changed files with 564 additions and 378 deletions
  1. 16 0
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/websit/AdminWebsitApplyCount.java
  2. 3 3
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/pay/PayOrderController.java
  3. 12 0
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/user/UserController.java
  4. 2 2
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/common/outside/OutsideBaseApi.java
  5. 14 0
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/common/outside/WechatLogic.java
  6. 31 6
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/PayOrderLogic.java
  7. 21 0
      mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/user/UserLogic.java
  8. 2 2
      mall-miniapp-service/src/main/resources/mapper/CommonMapper.xml
  9. 12 0
      mall-server-api/src/main/java/com/gree/mall/manager/controller/common/WechatController.java
  10. 1 1
      mall-server-api/src/main/java/com/gree/mall/manager/controller/policy/MailboxController.java
  11. 1 0
      mall-server-api/src/main/java/com/gree/mall/manager/helper/ResponseHelper.java
  12. 36 4
      mall-server-api/src/main/java/com/gree/mall/manager/logic/common/SysDictCompanyLogic.java
  13. 224 195
      mall-server-api/src/main/java/com/gree/mall/manager/logic/common/WechatLogic.java
  14. 162 146
      mall-server-api/src/main/java/com/gree/mall/manager/logic/websit/SettlementOrderLogic.java
  15. 1 1
      mall-server-api/src/main/java/com/gree/mall/manager/schedule/OrderBaseSchedule.java
  16. 1 1
      mall-server-api/src/main/resources/mapper/workorder/IncreMapper.xml
  17. 1 1
      mall-server-api/src/main/resources/mapper/workorder/OrderBaseCMapper.xml
  18. 24 16
      mall-server-sync-api/src/main/java/com/gree/mall/manager/logic/SyncOrderInfoLogic.java

+ 16 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/websit/AdminWebsitApplyCount.java

@@ -0,0 +1,16 @@
+package com.gree.mall.miniapp.bean.websit;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel
+public class AdminWebsitApplyCount {
+
+    @ApiModelProperty("待审批")
+    private Integer dsh;
+
+    @ApiModelProperty("已入驻")
+    private Integer yrz;
+}

+ 3 - 3
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/pay/PayOrderController.java

@@ -119,7 +119,7 @@ public class PayOrderController {
 
 
     @PostMapping("/paid")
     @PostMapping("/paid")
     @ApiOperation(value = "扫码支付获得结果")
     @ApiOperation(value = "扫码支付获得结果")
-    public ResponseHelper<Boolean> paid(
+    public ResponseHelper<WorkerOrder> paid(
             @ApiParam(required = true, value = "订单号") @RequestParam(required = true) String orderId,
             @ApiParam(required = true, value = "订单号") @RequestParam(required = true) String orderId,
             @ApiParam(required = false, value = "扫付款码得到得code") @RequestParam(required = false) String authCode,
             @ApiParam(required = false, value = "扫付款码得到得code") @RequestParam(required = false) String authCode,
             @ApiParam(required = true, value = "WECHAT 微信支付  LINE 线下支付") @RequestParam(required = true) String payType,
             @ApiParam(required = true, value = "WECHAT 微信支付  LINE 线下支付") @RequestParam(required = true) String payType,
@@ -131,8 +131,8 @@ public class PayOrderController {
                 throw new RemoteServiceException("系统繁忙,请稍后再试");
                 throw new RemoteServiceException("系统繁忙,请稍后再试");
             }
             }
             String ip = IpUtil.getIpAddr(request);
             String ip = IpUtil.getIpAddr(request);
-            payOrderLogic.upIsPay(orderId);
-            Boolean payStatus = payOrderLogic.paid(orderId, authCode, ip, payType);
+            WorkerOrder workerOrder = payOrderLogic.upIsPay(orderId);
+            WorkerOrder payStatus = payOrderLogic.paid(workerOrder.getOrderId(), authCode, ip, payType);
 
 
             return ResponseHelper.success(payStatus);
             return ResponseHelper.success(payStatus);
         } finally {
         } finally {

+ 12 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/user/UserController.java

@@ -7,6 +7,7 @@ import com.gree.mall.miniapp.bean.Page;
 import com.gree.mall.miniapp.bean.common.WxJsApiSignBean;
 import com.gree.mall.miniapp.bean.common.WxJsApiSignBean;
 import com.gree.mall.miniapp.bean.settle.OrderShareBean;
 import com.gree.mall.miniapp.bean.settle.OrderShareBean;
 import com.gree.mall.miniapp.bean.user.*;
 import com.gree.mall.miniapp.bean.user.*;
+import com.gree.mall.miniapp.bean.websit.AdminWebsitApplyCount;
 import com.gree.mall.miniapp.constant.Constant;
 import com.gree.mall.miniapp.constant.Constant;
 import com.gree.mall.miniapp.exception.RemoteServiceException;
 import com.gree.mall.miniapp.exception.RemoteServiceException;
 import com.gree.mall.miniapp.helper.ResponseHelper;
 import com.gree.mall.miniapp.helper.ResponseHelper;
@@ -246,6 +247,17 @@ public class UserController {
         return ResponseHelper.success(adminWebsitApplyBeans);
         return ResponseHelper.success(adminWebsitApplyBeans);
     }
     }
 
 
+
+    @GetMapping("/apply/websitCount")
+    @ApiOperation("入驻的网点数量")
+    public ResponseHelper<AdminWebsitApplyCount> applyWebsitList(
+
+    ){
+        AdminWebsitApplyCount adminWebsitApplyCount = userLogic
+                .websitCount();
+        return ResponseHelper.success(adminWebsitApplyCount);
+    }
+
     @PostMapping("/default/websit")
     @PostMapping("/default/websit")
     @ApiOperation(value = "设置默认网点")
     @ApiOperation(value = "设置默认网点")
     public ResponseHelper defaultWebsit(
     public ResponseHelper defaultWebsit(

+ 2 - 2
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/common/outside/OutsideBaseApi.java

@@ -20,9 +20,9 @@ public class OutsideBaseApi {
 
 
 
 
     public <T> T checkData(ResponseHelper<T> result){
     public <T> T checkData(ResponseHelper<T> result){
-        if(result.getCode() != ResponseHelper.ResponseCode_Success){
+        if(result.getCode() != ResponseHelper.ResponseCode_Success ){
             String errMsg = result.getMessage().replace("温馨提示:", "");
             String errMsg = result.getMessage().replace("温馨提示:", "");
-            throw new RemoteServiceException(result.getCode(),errMsg);
+            throw new RemoteServiceException(result.getCode(), errMsg);
         }
         }
         return result.getData();
         return result.getData();
     }
     }

+ 14 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/common/outside/WechatLogic.java

@@ -273,4 +273,18 @@ public class WechatLogic extends OutsideBaseApi{
         log.info("微信支付:{}",payDetail);
         log.info("微信支付:{}",payDetail);
         return payDetail;
         return payDetail;
     }
     }
+
+    public String queryOrder(String orderId, String payWorkerCodeId) {
+        Map<String,Object> map = new HashMap<>();
+        map.put("orderId",orderId);
+        map.put("companyWechatConfigId",payWorkerCodeId);
+
+        String s = HttpUtils.requestPostForm(pcUrl + "/wechat/payment/queryOrder", map, getHeader());
+        log.info("微信付款码查询订单response:{}",s);
+        ResponseHelper<String> result = JSONUtil.toBean(s, new TypeReference<ResponseHelper<String>>() {
+        }, false);
+        String orderNewId = checkData(result);
+        log.info("微信付款码查询订单:{}",orderNewId);
+        return orderNewId;
+    }
 }
 }

+ 31 - 6
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/order/PayOrderLogic.java

@@ -463,12 +463,15 @@ public class PayOrderLogic {
     }
     }
 
 
     @Transactional(rollbackFor = Exception.class)
     @Transactional(rollbackFor = Exception.class)
-    public Boolean paid(String orderId, String authCode,String ip,String payType) throws Exception {
+    public WorkerOrder paid(String orderId, String authCode,String ip,String payType) throws Exception {
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
         WorkerOrder workerOrder = workerOrderService.getById(orderId);
         WorkerOrder workerOrder = workerOrderService.getById(orderId);
 
 
         AdminWebsit adminWebsit = adminWebsitService.getById(workerOrder.getWebsitId());
         AdminWebsit adminWebsit = adminWebsitService.getById(workerOrder.getWebsitId());
 
 
+
+
+
         if (StringUtil.isEmpty(adminWebsit.getPayWorkerCodeId()))
         if (StringUtil.isEmpty(adminWebsit.getPayWorkerCodeId()))
             throw new RemoteServiceException("网点支付配置未配置");
             throw new RemoteServiceException("网点支付配置未配置");
 
 
@@ -484,7 +487,7 @@ public class PayOrderLogic {
             workerOrder.setIdentity(user.getIdCard());
             workerOrder.setIdentity(user.getIdCard());
         }
         }
 
 
-        List<WorkerOrderItem> workerOrderItems = workerOrderItemService.lambdaQuery().eq(WorkerOrderItem::getOrderId, orderId).list();
+        List<WorkerOrderItem> workerOrderItems = workerOrderItemService.lambdaQuery().eq(WorkerOrderItem::getOrderId, workerOrder.getOrderId()).list();
 
 
 
 
         workerOrder.setSource(commonLogic.getSource().equals(OrderInfoSourceEnum.A)?OrderInfoSourceEnum.A.getRemark():OrderInfoSourceEnum.B.getRemark() );
         workerOrder.setSource(commonLogic.getSource().equals(OrderInfoSourceEnum.A)?OrderInfoSourceEnum.A.getRemark():OrderInfoSourceEnum.B.getRemark() );
@@ -502,6 +505,7 @@ public class PayOrderLogic {
         workerOrder.setOpenId(currentCompanyWechat.getUser().getMiniOpenId());
         workerOrder.setOpenId(currentCompanyWechat.getUser().getMiniOpenId());
         workerOrder.updateById();
         workerOrder.updateById();
 
 
+
         //插入手工结算数据
         //插入手工结算数据
         if (workerOrder.getManualAmount() != null && workerOrder.getManualAmount().doubleValue() > 0) {
         if (workerOrder.getManualAmount() != null && workerOrder.getManualAmount().doubleValue() > 0) {
             this.addManualSettlementOrder(workerOrder, workerOrderItems);
             this.addManualSettlementOrder(workerOrder, workerOrderItems);
@@ -665,7 +669,7 @@ public class PayOrderLogic {
         this.addSettlementOrder(workerOrder,workerOrderItems);
         this.addSettlementOrder(workerOrder,workerOrderItems);
 
 
 
 
-        return true;
+        return workerOrder;
     }
     }
 
 
     private void makeSubStockData(WorkerOrder workerOrder, List<WorkerOrderItem> workerOrderItems, List<WorkerStockDTO> workerStockDTOS) {
     private void makeSubStockData(WorkerOrder workerOrder, List<WorkerOrderItem> workerOrderItems, List<WorkerStockDTO> workerStockDTOS) {
@@ -1137,7 +1141,8 @@ public class PayOrderLogic {
 
 
         return settlementOrderService.lambdaQuery()
         return settlementOrderService.lambdaQuery()
                 .in(!CollectionUtils.isEmpty(status),SettlementOrder::getStatus,status)
                 .in(!CollectionUtils.isEmpty(status),SettlementOrder::getStatus,status)
-                .eq(SettlementOrder::getUserId,currentCompanyWechat.getUser().getUserId())
+                .and(item -> item.eq(SettlementOrder::getUserId,currentCompanyWechat.getUser().getUserId())
+                        .or().eq(SettlementOrder::getWorkerNumber,currentCompanyWechat.getUser().getWorkerNumber()))
                 .between(!StringUtil.isEmpty(startTime),SettlementOrder::getCreateTime,startTime,endTime)
                 .between(!StringUtil.isEmpty(startTime),SettlementOrder::getCreateTime,startTime,endTime)
                 .in(SettlementOrder::getCompanyWechatId,currentCompanyWechat.getCompanyWechatId())
                 .in(SettlementOrder::getCompanyWechatId,currentCompanyWechat.getCompanyWechatId())
                 .orderByDesc(SettlementOrder::getCreateTime)
                 .orderByDesc(SettlementOrder::getCreateTime)
@@ -1183,7 +1188,7 @@ public class PayOrderLogic {
                 .orderByAsc(Brand::getSortNum).list();
                 .orderByAsc(Brand::getSortNum).list();
     }
     }
 
 
-    public void upIsPay(String orderId) {
+    public WorkerOrder upIsPay(String orderId) {
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
         CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
 
 
         WorkerOrder workerOrder = workerOrderService.getById(orderId);
         WorkerOrder workerOrder = workerOrderService.getById(orderId);
@@ -1199,10 +1204,30 @@ public class PayOrderLogic {
             throw new RemoteServiceException("订单已取消支付");
             throw new RemoteServiceException("订单已取消支付");
         }
         }
 
 
+
+
+        String orderIdNew = wechatLogic.queryOrder(workerOrder.getOrderId(),
+                adminWebsit.getPayWorkerCodeId());
+
+
+        if (!StringUtil.isEmpty(orderIdNew)){
+            workerOrderItemService.lambdaUpdate()
+                    .eq(WorkerOrderItem::getOrderId,workerOrder.getOrderId())
+                    .set(WorkerOrderItem::getOrderId,orderIdNew)
+                    .update();
+            workerOrderService.removeById(orderId);
+            workerOrder.setOrderId(orderIdNew);
+        }
+
         workerOrder.setConfigId(adminWebsit.getPayWorkerCodeId());
         workerOrder.setConfigId(adminWebsit.getPayWorkerCodeId());
         workerOrder.setPayState(IsYesNoEnum.YES.getKey());
         workerOrder.setPayState(IsYesNoEnum.YES.getKey());
         workerOrder.setPayStateTime(new Date());
         workerOrder.setPayStateTime(new Date());
         workerOrder.setOpenId(currentCompanyWechat.getUser().getMiniOpenId());
         workerOrder.setOpenId(currentCompanyWechat.getUser().getMiniOpenId());
-        workerOrder.updateById();
+        if (!StringUtil.isEmpty(orderIdNew)) {
+            workerOrder.insert();
+        }else {
+            workerOrder.updateById();
+        }
+        return workerOrder;
     }
     }
 }
 }

+ 21 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/user/UserLogic.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.miniapp.bean.common.WechatOpenBean;
 import com.gree.mall.miniapp.bean.common.WechatOpenBean;
 import com.gree.mall.miniapp.bean.settle.OrderShareBean;
 import com.gree.mall.miniapp.bean.settle.OrderShareBean;
 import com.gree.mall.miniapp.bean.user.*;
 import com.gree.mall.miniapp.bean.user.*;
+import com.gree.mall.miniapp.bean.websit.AdminWebsitApplyCount;
 import com.gree.mall.miniapp.bean.websit.WebsitVO;
 import com.gree.mall.miniapp.bean.websit.WebsitVO;
 import com.gree.mall.miniapp.commonmapper.CommonMapper;
 import com.gree.mall.miniapp.commonmapper.CommonMapper;
 import com.gree.mall.miniapp.commonmapper.MyProfitMapper;
 import com.gree.mall.miniapp.commonmapper.MyProfitMapper;
@@ -1577,4 +1578,24 @@ public class UserLogic {
         user.setMobile(phone).updateById();
         user.setMobile(phone).updateById();
 
 
     }
     }
+
+    public AdminWebsitApplyCount websitCount() {
+        CurrentCompanyWechat currentCompanyWechat = commonLogic.getCurrentCompanyWechat();
+
+        Integer yrz = websitUserService.lambdaQuery()
+                .eq(WebsitUser::getUserId, currentCompanyWechat.getUserId())
+                .in(WebsitUser::getExamineStatus, "OK")
+                .count();
+
+        Integer dsh = websitUserService.lambdaQuery()
+                .eq(WebsitUser::getUserId, currentCompanyWechat.getUserId())
+                .notIn(WebsitUser::getExamineStatus, "OK")
+                .count();
+
+        AdminWebsitApplyCount adminWebsitApplyCount = new AdminWebsitApplyCount();
+        adminWebsitApplyCount.setYrz(yrz);
+        adminWebsitApplyCount.setDsh(dsh);
+        return adminWebsitApplyCount;
+
+    }
 }
 }

+ 2 - 2
mall-miniapp-service/src/main/resources/mapper/CommonMapper.xml

@@ -80,7 +80,7 @@
                 and a.is_incre = #{isIncre}
                 and a.is_incre = #{isIncre}
             </if>
             </if>
         <if test="websitName != null and websitName != ''">
         <if test="websitName != null and websitName != ''">
-            AND a.name LIKE  CONCAT('%', #{websitName},'%')
+            AND (a.name LIKE  CONCAT('%', #{websitName},'%') or a.websit_id LIKE  CONCAT('%', #{websitName},'%'))
         </if>
         </if>
             <if test="websitIds != null and websitIds.size > 0">
             <if test="websitIds != null and websitIds.size > 0">
                 AND a.websit_id IN
                 AND a.websit_id IN
@@ -96,7 +96,7 @@
             </if>
             </if>
 
 
             and a.company_wechat_id = #{companyWechatId}
             and a.company_wechat_id = #{companyWechatId}
-        <if test="websitIdsQuchu != null and websitIdsQuchu.size > 0 and lng != '0'.toString() and lat != '0'.toString()">
+        <if test="rice != null and rice != '' and lng != '0'.toString() and lat != '0'.toString()">
             HAVING distance &lt; #{rice}
             HAVING distance &lt; #{rice}
         </if>
         </if>
         ORDER BY distance
         ORDER BY distance

+ 12 - 0
mall-server-api/src/main/java/com/gree/mall/manager/controller/common/WechatController.java

@@ -170,6 +170,18 @@ public class WechatController {
         return ResponseHelper.success(transcationId);
         return ResponseHelper.success(transcationId);
     }
     }
 
 
+
+    @PostMapping("/payment/queryOrder")
+    @ApiOperation(value = "查询订单是否支付过")
+    public ResponseHelper<String> queryOrder(
+            @ApiParam("订单号") @RequestParam String orderId,
+                 @RequestParam String companyWechatConfigId
+    ) throws Exception {
+        String transcationId = wechatLogic.queryOrder(orderId,companyWechatConfigId);
+        return ResponseHelper.success(transcationId);
+    }
+
+
 //    @ApiNotAuth
 //    @ApiNotAuth
 //    @PostMapping("/pub/auth/url")
 //    @PostMapping("/pub/auth/url")
 //    @ApiOperation("公众号授权绑定小程序url")
 //    @ApiOperation("公众号授权绑定小程序url")

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/controller/policy/MailboxController.java

@@ -173,7 +173,7 @@ public class MailboxController {
 
 
     @ApiOperation(value = "测试过期提醒")
     @ApiOperation(value = "测试过期提醒")
     @PostMapping("task8")
     @PostMapping("task8")
-    public ResponseHelper task8() throws IOException, MessagingException, WxPayException {
+    public ResponseHelper task8() throws IOException, MessagingException, WxPayException, InterruptedException {
         settlementOrderLogic.sync();
         settlementOrderLogic.sync();
         return ResponseHelper.success();
         return ResponseHelper.success();
     }
     }

+ 1 - 0
mall-server-api/src/main/java/com/gree/mall/manager/helper/ResponseHelper.java

@@ -12,6 +12,7 @@ public class ResponseHelper<T> {
 
 
     public static int ResponseCode_Success = 200;
     public static int ResponseCode_Success = 200;
     public static int ResponseCode_COMMON = 501;//通用拦截提示
     public static int ResponseCode_COMMON = 501;//通用拦截提示
+    public static int ResponseCode_USER_WAIT = 415;//用户等待
     public static int ResponseCode_AUTH_ERROR = 1001;//非法请求
     public static int ResponseCode_AUTH_ERROR = 1001;//非法请求
     public static final int ResponseCode_VALIDATION_ERROR = 4005;// 校验拦截提示
     public static final int ResponseCode_VALIDATION_ERROR = 4005;// 校验拦截提示
     public static final int ResponseCode_STOP_SERVICE = 4004;// 校验拦截提示
     public static final int ResponseCode_STOP_SERVICE = 4004;// 校验拦截提示

+ 36 - 4
mall-server-api/src/main/java/com/gree/mall/manager/logic/common/SysDictCompanyLogic.java

@@ -17,6 +17,7 @@ import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.utils.RedisUtil;
 import com.gree.mall.manager.utils.RedisUtil;
+import com.gree.mall.manager.utils.StringUtil;
 import com.gree.mall.manager.utils.excel.ExcelUtils;
 import com.gree.mall.manager.utils.excel.ExcelUtils;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.bean.ZfireParamBean;
 import com.gree.mall.manager.zfire.util.FieldUtils;
 import com.gree.mall.manager.zfire.util.FieldUtils;
@@ -232,12 +233,15 @@ public class SysDictCompanyLogic {
                 .eq(SysDictTypeCompany::getOpen, true)
                 .eq(SysDictTypeCompany::getOpen, true)
                 .oneOpt()
                 .oneOpt()
                 .orElseThrow(() -> new RemoteServiceException("暂不开放该字典类型配置"));
                 .orElseThrow(() -> new RemoteServiceException("暂不开放该字典类型配置"));
-        checkRepeatDictCode(param.getDictType(), param.getDictValue(), param.getCompanyWechatId());
         if(adminUser != null) {
         if(adminUser != null) {
             param.setCompanyName(adminUser.getCompanyName());
             param.setCompanyName(adminUser.getCompanyName());
             param.setCompanyWechatId(adminUser.getCompanyWechatId());
             param.setCompanyWechatId(adminUser.getCompanyWechatId());
         }
         }
-        param.setDictCode(IdWorker.getIdStr());
+        if (StringUtil.isEmpty(param.getDictCode())) {
+            param.setDictCode(IdWorker.getIdStr());
+        }
+
+        checkRepeatDictCode(param.getDictType(), param.getDictValue(), param.getCompanyWechatId(),param.getDictCode());
         sysDictCompanyService.save(param);
         sysDictCompanyService.save(param);
     }
     }
 
 
@@ -263,18 +267,46 @@ public class SysDictCompanyLogic {
                 }
                 }
             }
             }
         }
         }
+
+        Integer count = sysDictCompanyService.lambdaQuery()
+                .eq(SysDictCompany::getDictType, dictType)
+                .eq(SysDictCompany::getDictValue, param.getDictValue())
+                .eq(SysDictCompany::getDictCode, param.getDictCode())
+                .eq(SysDictCompany::getCompanyWechatId, sysDictCompany.getCompanyWechatId())
+                .ne(SysDictCompany::getSysDictId,param.getSysDictId())
+                .count();
+        if (count > 0) {
+            throw new RemoteServiceException(param.getDictValue() + "重复存在");
+        }
+
+        if (sysDictCompanyService.lambdaQuery()
+                .eq(SysDictCompany::getDictType, dictType)
+                .eq(SysDictCompany::getDictCode, param.getDictCode())
+                .eq(SysDictCompany::getCompanyWechatId, sysDictCompany.getCompanyWechatId())
+                .ne(SysDictCompany::getSysDictId,param.getSysDictId())
+                .count() > 0) {
+            throw new RemoteServiceException(param.getDictCode() + "重复存在");
+        }
         sysDictCompanyService.updateById(param);
         sysDictCompanyService.updateById(param);
     }
     }
 
 
-    private void checkRepeatDictCode(String dictType, String value, String companyWechatId) {
+    private void checkRepeatDictCode(String dictType, String value, String companyWechatId,String code) {
         Integer count = sysDictCompanyService.lambdaQuery()
         Integer count = sysDictCompanyService.lambdaQuery()
                 .eq(SysDictCompany::getDictType, dictType)
                 .eq(SysDictCompany::getDictType, dictType)
                 .eq(SysDictCompany::getDictValue, value)
                 .eq(SysDictCompany::getDictValue, value)
+                .eq(!StringUtil.isEmpty(code),SysDictCompany::getDictCode, code)
                 .eq(SysDictCompany::getCompanyWechatId, companyWechatId)
                 .eq(SysDictCompany::getCompanyWechatId, companyWechatId)
                 .count();
                 .count();
         if (count > 0) {
         if (count > 0) {
             throw new RemoteServiceException(value + "重复存在");
             throw new RemoteServiceException(value + "重复存在");
         }
         }
+
+        if (sysDictCompanyService.lambdaQuery()
+                .eq(SysDictCompany::getDictType, dictType)
+                .eq(SysDictCompany::getDictCode, code)
+                .eq(SysDictCompany::getCompanyWechatId, companyWechatId).count() > 0) {
+            throw new RemoteServiceException(code + "重复存在");
+        }
     }
     }
 
 
 
 
@@ -336,7 +368,7 @@ public class SysDictCompanyLogic {
             sysDictCompany.setCompanyWechatId(adminUser.getCompanyWechatId());
             sysDictCompany.setCompanyWechatId(adminUser.getCompanyWechatId());
             sysDictCompany.setDictCode(IdWorker.getIdStr());
             sysDictCompany.setDictCode(IdWorker.getIdStr());
 
 
-            checkRepeatDictCode(sysDictCompany.getDictType(), sysDictCompany.getDictValue(), sysDictCompany.getCompanyWechatId());
+            checkRepeatDictCode(sysDictCompany.getDictType(), sysDictCompany.getDictValue(), sysDictCompany.getCompanyWechatId(),sysDictCompany.getDictCode());
 
 
             sysDictCompanyList.add(sysDictCompany
             sysDictCompanyList.add(sysDictCompany
             );
             );

File diff suppressed because it is too large
+ 224 - 195
mall-server-api/src/main/java/com/gree/mall/manager/logic/common/WechatLogic.java


+ 162 - 146
mall-server-api/src/main/java/com/gree/mall/manager/logic/websit/SettlementOrderLogic.java

@@ -24,6 +24,7 @@ import com.gree.mall.manager.bean.websit.WorkerSettlementVO;
 import com.gree.mall.manager.commonmapper.MaterialGoodsStockCMapper;
 import com.gree.mall.manager.commonmapper.MaterialGoodsStockCMapper;
 import com.gree.mall.manager.commonmapper.MaterialMapper;
 import com.gree.mall.manager.commonmapper.MaterialMapper;
 import com.gree.mall.manager.commonmapper.WebsitSalesRetCMapper;
 import com.gree.mall.manager.commonmapper.WebsitSalesRetCMapper;
+import com.gree.mall.manager.constant.Constant;
 import com.gree.mall.manager.enums.*;
 import com.gree.mall.manager.enums.*;
 import com.gree.mall.manager.enums.material.NormTypeEnum;
 import com.gree.mall.manager.enums.material.NormTypeEnum;
 import com.gree.mall.manager.enums.material.PartsAttrEnum;
 import com.gree.mall.manager.enums.material.PartsAttrEnum;
@@ -47,6 +48,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Lock;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 @Service
 @Service
@@ -379,196 +382,211 @@ public class SettlementOrderLogic {
     }
     }
 
 
 
 
-    public void sync() throws WxPayException {
+    public void sync() throws WxPayException, InterruptedException {
 
 
         List<WorkerOrder> workerOrders = workerOrderService.lambdaQuery().eq(WorkerOrder::getPayState, IsYesNoEnum.YES.getKey())
         List<WorkerOrder> workerOrders = workerOrderService.lambdaQuery().eq(WorkerOrder::getPayState, IsYesNoEnum.YES.getKey())
-                .ne(WorkerOrder::getPayStatus,PayStatusEnum.PAID.getKey())
+                .ne(WorkerOrder::getPayStatus, PayStatusEnum.PAID.getKey())
                 .ge(WorkerOrder::getPayStateTime, DateUtil.offsetMinute(new Date(), -3)).list();
                 .ge(WorkerOrder::getPayStateTime, DateUtil.offsetMinute(new Date(), -3)).list();
 
 
         for (WorkerOrder workerOrder : workerOrders) {
         for (WorkerOrder workerOrder : workerOrders) {
-            WxPayService payService = wechatLogic.getPayJaspWebstiService(workerOrder.getConfigId(), "B");
 
 
-            WxPayOrderQueryResult wxPayOrderQueryResult = payService.queryOrder("", workerOrder.getOrderId());
+            Lock obtain = redisLockRegistry.obtain(Constant.RedisPrefix.LOCK_ORDER + workerOrder.getOrderId());
+            try {
+                if (!obtain.tryLock(5, TimeUnit.SECONDS)) {
+                    throw new RemoteServiceException("系统繁忙,请稍后再试");
+                }
+                WxPayService payService = wechatLogic.getPayJaspWebstiService(workerOrder.getConfigId(), "B");
 
 
+                WxPayOrderQueryResult wxPayOrderQueryResult = payService.queryOrder("", workerOrder.getOrderId());
 
 
-            if (!wxPayOrderQueryResult.getResultCode().equals("SUCCESS")) {
-                continue;
-            }
 
 
-            AdminWebsit adminWebsit = adminWebsitService.getById(workerOrder.getWebsitId());
+                if (!wxPayOrderQueryResult.getReturnCode().equals("SUCCESS")) {
+                    continue;
+                }
 
 
 
 
-            List<WorkerOrderItem> workerOrderItems = workerOrderItemService.lambdaQuery().eq(WorkerOrderItem::getOrderId, workerOrder.getOrderId()).list();
+                if (!wxPayOrderQueryResult.getResultCode().equals("SUCCESS")) {
+                    continue;
+                }
 
 
-            // 身份证为空检查user表
-            if (StringUtils.isBlank(workerOrder.getIdentity()) && StringUtils.isNotBlank(workerOrder.getUserId())) {
-                final User user = userService.getById(workerOrder.getUserId());
-                workerOrder.setIdentity(user.getIdCard());
-            }
+                if (!wxPayOrderQueryResult.getTradeState().equals("SUCCESS")) {
+                    continue;
+                }
 
 
-            workerOrder.setTranscationId(wxPayOrderQueryResult.getTransactionId());
-            workerOrder.setPayState(IsYesNoEnum.YES.getKey());
-            workerOrder.setPayStateTime(new Date());
+                AdminWebsit adminWebsit = adminWebsitService.getById(workerOrder.getWebsitId());
 
 
 
 
-            workerOrder.setConfigId(adminWebsit.getPayWorkerCodeId());
-            workerOrder.updateById();
+                List<WorkerOrderItem> workerOrderItems = workerOrderItemService.lambdaQuery().eq(WorkerOrderItem::getOrderId, workerOrder.getOrderId()).list();
 
 
-            workerOrder.setSource("小程序");
+                // 身份证为空检查user表
+                if (StringUtils.isBlank(workerOrder.getIdentity()) && StringUtils.isNotBlank(workerOrder.getUserId())) {
+                    final User user = userService.getById(workerOrder.getUserId());
+                    workerOrder.setIdentity(user.getIdCard());
+                }
 
 
-            workerOrder.setPayTime(new Date());
-            workerOrder.setPayType("WECHAT");
-            workerOrder.setPayStatus(PayStatusEnum.PAID.getKey());
-            workerOrder.updateById();
+                workerOrder.setTranscationId(wxPayOrderQueryResult.getTransactionId());
+                workerOrder.setPayState(IsYesNoEnum.YES.getKey());
+                workerOrder.setPayStateTime(new Date());
 
 
 
 
-            //插入手工结算数据
-            if (workerOrder.getManualAmount() != null && workerOrder.getManualAmount().doubleValue() > 0) {
-                this.addManualSettlementOrder(workerOrder, workerOrderItems);
-                this.addSettlementManaulWorker(workerOrder, workerOrderItems);
-            }
-            //todo 辅材扣除
+                workerOrder.setConfigId(adminWebsit.getPayWorkerCodeId());
+                workerOrder.updateById();
 
 
+                workerOrder.setSource("小程序");
 
 
+                workerOrder.setPayTime(new Date());
+                workerOrder.setPayType("WECHAT");
+                workerOrder.setPayStatus(PayStatusEnum.PAID.getKey());
+                workerOrder.updateById();
 
 
-            //插入使用记录
-            this.addNormRecord(workerOrder, workerOrderItems);
 
 
-            // this.addSettlementWorker(workerOrder,workerOrderItems);
+                //插入手工结算数据
+                if (workerOrder.getManualAmount() != null && workerOrder.getManualAmount().doubleValue() > 0) {
+                    this.addManualSettlementOrder(workerOrder, workerOrderItems);
+                    this.addSettlementManaulWorker(workerOrder, workerOrderItems);
+                }
+                //todo 辅材扣除
 
 
 
 
-            // 定时任务辅材逻辑
-            if (StringUtils.isNotBlank(workerOrder.getIdentity())) {
-                // 配件扣库存
-                try {
-                    if (workerOrder.getGoodsType().equals("P")) {
+                //插入使用记录
+                this.addNormRecord(workerOrder, workerOrderItems);
 
 
-                        List<WorkerOrderItem> inner = workerOrderItems.stream().filter(item -> item.getRepairFlag().equals("INNER")).collect(Collectors.toList());
-                        List<WorkerOrderItem> OUTSIDE = workerOrderItems.stream().filter(item -> item.getRepairFlag().equals("OUTSIDE")).collect(Collectors.toList());
+                // this.addSettlementWorker(workerOrder,workerOrderItems);
 
 
-                        List<SalesCustomerPartsBean> salesCustomerPartsBeans = new ArrayList<>();
 
 
-                        if (!CollectionUtils.isEmpty(inner)) {
-                            SalesCustomerPartsBean salesCustomerPartsBean = new SalesCustomerPartsBean();
-                            salesCustomerPartsBean.setCompanyWechatId(workerOrder.getCompanyWechatId());
-                            salesCustomerPartsBean.setCompanyWechatName(workerOrder.getCompanyWechatName());
-                            salesCustomerPartsBean.setRepairFlag("INNER");
-                            salesCustomerPartsBean.setIdentity(workerOrder.getIdentity());
-                            salesCustomerPartsBean.setWorkerNumber(workerOrder.getWorkerNumber());
-                            salesCustomerPartsBean.setWorkerName(workerOrder.getWorkerName());
-                            salesCustomerPartsBean.setWorkOrderNo(workerOrder.getWorkerOrderId());
-                            salesCustomerPartsBean.setCustomerName(workerOrder.getUserName());
-                            salesCustomerPartsBean.setCustomerTel(workerOrder.getUserMobile());
-                            salesCustomerPartsBean.setReceiveWebsitId(adminWebsit.getWebsitId());
-                            salesCustomerPartsBean.setReceivePartsWebsitId(adminWebsit.getPartsWebsitId());
-                            salesCustomerPartsBean.setRemark(workerOrder.getRemark());
+                // 定时任务辅材逻辑
+                if (StringUtils.isNotBlank(workerOrder.getIdentity())) {
+                    // 配件扣库存
+                    try {
+                        if (workerOrder.getGoodsType().equals("P")) {
 
 
+                            List<WorkerOrderItem> inner = workerOrderItems.stream().filter(item -> item.getRepairFlag().equals("INNER")).collect(Collectors.toList());
+                            List<WorkerOrderItem> OUTSIDE = workerOrderItems.stream().filter(item -> item.getRepairFlag().equals("OUTSIDE")).collect(Collectors.toList());
 
 
-                            List<SalesCustomerPartsItemBean> salesCustomerPartsItemBeans = new ArrayList<>();
+                            List<SalesCustomerPartsBean> salesCustomerPartsBeans = new ArrayList<>();
+
+                            if (!CollectionUtils.isEmpty(inner)) {
+                                SalesCustomerPartsBean salesCustomerPartsBean = new SalesCustomerPartsBean();
+                                salesCustomerPartsBean.setCompanyWechatId(workerOrder.getCompanyWechatId());
+                                salesCustomerPartsBean.setCompanyWechatName(workerOrder.getCompanyWechatName());
+                                salesCustomerPartsBean.setRepairFlag("INNER");
+                                salesCustomerPartsBean.setIdentity(workerOrder.getIdentity());
+                                salesCustomerPartsBean.setWorkerNumber(workerOrder.getWorkerNumber());
+                                salesCustomerPartsBean.setWorkerName(workerOrder.getWorkerName());
+                                salesCustomerPartsBean.setWorkOrderNo(workerOrder.getWorkerOrderId());
+                                salesCustomerPartsBean.setCustomerName(workerOrder.getUserName());
+                                salesCustomerPartsBean.setCustomerTel(workerOrder.getUserMobile());
+                                salesCustomerPartsBean.setReceiveWebsitId(adminWebsit.getWebsitId());
+                                salesCustomerPartsBean.setReceivePartsWebsitId(adminWebsit.getPartsWebsitId());
+                                salesCustomerPartsBean.setRemark(workerOrder.getRemark());
+
+
+                                List<SalesCustomerPartsItemBean> salesCustomerPartsItemBeans = new ArrayList<>();
+
+                                for (WorkerOrderItem workerOrderItem : inner) {
+                                    if (workerOrderItem.getChargeType().equals("SERV")) {
+                                        continue;
+                                    }
+                                    SalesCustomerPartsItemBean salesCustomerPartsItemBean = new SalesCustomerPartsItemBean();
+
+                                    salesCustomerPartsItemBean.setOldPartsName(workerOrderItem.getOldPartsName());
+                                    salesCustomerPartsItemBean.setOldPartsNumber(workerOrderItem.getOldPartsNumber());
+                                    salesCustomerPartsItemBean.setPartsNumber(workerOrderItem.getGoodsCode());
+                                    salesCustomerPartsItemBean.setQty(workerOrderItem.getNum());
+                                    salesCustomerPartsItemBean.setWorkerOrderItemId(workerOrderItem.getId());
+
+                                    salesCustomerPartsItemBeans.add(salesCustomerPartsItemBean);
 
 
-                            for (WorkerOrderItem workerOrderItem : inner) {
-                                if (workerOrderItem.getChargeType().equals("SERV")) {
-                                    continue;
                                 }
                                 }
-                                SalesCustomerPartsItemBean salesCustomerPartsItemBean = new SalesCustomerPartsItemBean();
 
 
-                                salesCustomerPartsItemBean.setOldPartsName(workerOrderItem.getOldPartsName());
-                                salesCustomerPartsItemBean.setOldPartsNumber(workerOrderItem.getOldPartsNumber());
-                                salesCustomerPartsItemBean.setPartsNumber(workerOrderItem.getGoodsCode());
-                                salesCustomerPartsItemBean.setQty(workerOrderItem.getNum());
-                                salesCustomerPartsItemBean.setWorkerOrderItemId(workerOrderItem.getId());
+                                salesCustomerPartsBean.setItems(salesCustomerPartsItemBeans);
 
 
-                                salesCustomerPartsItemBeans.add(salesCustomerPartsItemBean);
+                                salesCustomerPartsBeans.add(salesCustomerPartsBean);
 
 
                             }
                             }
 
 
-                            salesCustomerPartsBean.setItems(salesCustomerPartsItemBeans);
 
 
-                            salesCustomerPartsBeans.add(salesCustomerPartsBean);
+                            if (!CollectionUtils.isEmpty(OUTSIDE)) {
+                                SalesCustomerPartsBean salesCustomerPartsBean = new SalesCustomerPartsBean();
+                                salesCustomerPartsBean.setCompanyWechatId(workerOrder.getCompanyWechatId());
+                                salesCustomerPartsBean.setCompanyWechatName(workerOrder.getCompanyWechatName());
+                                salesCustomerPartsBean.setRepairFlag("OUTSIDE");
+                                salesCustomerPartsBean.setIdentity(workerOrder.getIdentity());
+                                salesCustomerPartsBean.setWorkerNumber(workerOrder.getWorkerNumber());
+                                salesCustomerPartsBean.setWorkerName(workerOrder.getWorkerName());
+                                salesCustomerPartsBean.setWorkOrderNo(workerOrder.getWorkerOrderId());
+                                salesCustomerPartsBean.setCustomerName(workerOrder.getUserName());
+                                salesCustomerPartsBean.setCustomerTel(workerOrder.getUserMobile());
+                                salesCustomerPartsBean.setReceiveWebsitId(adminWebsit.getWebsitId());
+                                salesCustomerPartsBean.setReceivePartsWebsitId(adminWebsit.getPartsWebsitId());
+                                salesCustomerPartsBean.setRemark(workerOrder.getRemark());
 
 
-                        }
 
 
+                                List<SalesCustomerPartsItemBean> salesCustomerPartsItemBeans = new ArrayList<>();
 
 
-                        if (!CollectionUtils.isEmpty(OUTSIDE)) {
-                            SalesCustomerPartsBean salesCustomerPartsBean = new SalesCustomerPartsBean();
-                            salesCustomerPartsBean.setCompanyWechatId(workerOrder.getCompanyWechatId());
-                            salesCustomerPartsBean.setCompanyWechatName(workerOrder.getCompanyWechatName());
-                            salesCustomerPartsBean.setRepairFlag("OUTSIDE");
-                            salesCustomerPartsBean.setIdentity(workerOrder.getIdentity());
-                            salesCustomerPartsBean.setWorkerNumber(workerOrder.getWorkerNumber());
-                            salesCustomerPartsBean.setWorkerName(workerOrder.getWorkerName());
-                            salesCustomerPartsBean.setWorkOrderNo(workerOrder.getWorkerOrderId());
-                            salesCustomerPartsBean.setCustomerName(workerOrder.getUserName());
-                            salesCustomerPartsBean.setCustomerTel(workerOrder.getUserMobile());
-                            salesCustomerPartsBean.setReceiveWebsitId(adminWebsit.getWebsitId());
-                            salesCustomerPartsBean.setReceivePartsWebsitId(adminWebsit.getPartsWebsitId());
-                            salesCustomerPartsBean.setRemark(workerOrder.getRemark());
+                                for (WorkerOrderItem workerOrderItem : OUTSIDE) {
+                                    if (workerOrderItem.getChargeType().equals("SERV")) {
+                                        continue;
+                                    }
+                                    SalesCustomerPartsItemBean salesCustomerPartsItemBean = new SalesCustomerPartsItemBean();
 
 
+                                    salesCustomerPartsItemBean.setOldPartsName(workerOrderItem.getOldPartsName());
+                                    salesCustomerPartsItemBean.setOldPartsNumber(workerOrderItem.getOldPartsNumber());
+                                    salesCustomerPartsItemBean.setPartsNumber(workerOrderItem.getGoodsCode());
+                                    salesCustomerPartsItemBean.setQty(workerOrderItem.getNum());
+                                    salesCustomerPartsItemBean.setWorkerOrderItemId(workerOrderItem.getId());
 
 
-                            List<SalesCustomerPartsItemBean> salesCustomerPartsItemBeans = new ArrayList<>();
+                                    salesCustomerPartsItemBeans.add(salesCustomerPartsItemBean);
 
 
-                            for (WorkerOrderItem workerOrderItem : OUTSIDE) {
-                                if (workerOrderItem.getChargeType().equals("SERV")) {
-                                    continue;
                                 }
                                 }
-                                SalesCustomerPartsItemBean salesCustomerPartsItemBean = new SalesCustomerPartsItemBean();
 
 
-                                salesCustomerPartsItemBean.setOldPartsName(workerOrderItem.getOldPartsName());
-                                salesCustomerPartsItemBean.setOldPartsNumber(workerOrderItem.getOldPartsNumber());
-                                salesCustomerPartsItemBean.setPartsNumber(workerOrderItem.getGoodsCode());
-                                salesCustomerPartsItemBean.setQty(workerOrderItem.getNum());
-                                salesCustomerPartsItemBean.setWorkerOrderItemId(workerOrderItem.getId());
+                                salesCustomerPartsBean.setItems(salesCustomerPartsItemBeans);
 
 
-                                salesCustomerPartsItemBeans.add(salesCustomerPartsItemBean);
+                                salesCustomerPartsBeans.add(salesCustomerPartsBean);
 
 
                             }
                             }
 
 
-                            salesCustomerPartsBean.setItems(salesCustomerPartsItemBeans);
-
-                            salesCustomerPartsBeans.add(salesCustomerPartsBean);
-
-                        }
 
 
+                            if (CollectionUtil.isNotEmpty(salesCustomerPartsBeans)) {
+                                // 开始处理库存
+                                for (SalesCustomerPartsBean salesCustomerPartsBean : salesCustomerPartsBeans) {
+                                    workerStockLogic.oldRefundManageSyncAdd(salesCustomerPartsBean);
+                                }
 
 
-                        if (CollectionUtil.isNotEmpty(salesCustomerPartsBeans)) {
-                            // 开始处理库存
-                            for (SalesCustomerPartsBean salesCustomerPartsBean : salesCustomerPartsBeans) {
-                                workerStockLogic.oldRefundManageSyncAdd(salesCustomerPartsBean);
                             }
                             }
-
                         }
                         }
-                    }
 
 
-                } catch (Exception e) {
-                    log.error(workerOrder.getOrderId() + " 师傅配件扣自有库存失败: ", e);
-                    workerOrder.setExRemark(workerOrder.getOrderId() + " 师傅配件扣自有库存失败: " + e.getMessage());
+                    } catch (Exception e) {
+                        log.error(workerOrder.getOrderId() + " 师傅配件扣自有库存失败: ", e);
+                        workerOrder.setExRemark(workerOrder.getOrderId() + " 师傅配件扣自有库存失败: " + e.getMessage());
 
 
-                }
+                    }
 
 
-                // 辅材扣库存
-                try {
-                    if (workerOrder.getGoodsType().equals(WebsitGoodsTypeEnum.M.toString())) {
-                        List<WorkerStockDTO> workerStockDTOS = new ArrayList<>();
-                        this.makeSubStockData(workerOrder, workerOrderItems, workerStockDTOS);
+                    // 辅材扣库存
+                    try {
+                        if (workerOrder.getGoodsType().equals(WebsitGoodsTypeEnum.M.toString())) {
+                            List<WorkerStockDTO> workerStockDTOS = new ArrayList<>();
+                            this.makeSubStockData(workerOrder, workerOrderItems, workerStockDTOS);
 
 
-                        if (CollectionUtil.isNotEmpty(workerStockDTOS)) {
-                            // 开始处理库存
-                            workerStockLogic.fucaiHandleWorkerStock(workerStockDTOS);
+                            if (CollectionUtil.isNotEmpty(workerStockDTOS)) {
+                                // 开始处理库存
+                                workerStockLogic.fucaiHandleWorkerStock(workerStockDTOS);
+                            }
                         }
                         }
+                    } catch (Exception e) {
+                        log.error(workerOrder.getOrderId() + " 师傅辅材扣库存失败: ", e);
+                        throw new RemoteServiceException("师傅辅材扣库存失败,没有库存");
                     }
                     }
-                } catch (Exception e) {
-                    log.error(workerOrder.getOrderId() + " 师傅辅材扣库存失败: ", e);
-                    throw new RemoteServiceException("师傅辅材扣库存失败,没有库存");
                 }
                 }
-            }
-
 
 
 
 
-            //插入结算数据
-            this.addSettlementOrder(workerOrder, workerOrderItems);
-
+                //插入结算数据
+                this.addSettlementOrder(workerOrder, workerOrderItems);
 
 
 
 
+            } finally {
+                obtain.unlock();
+            }
         }
         }
 
 
     }
     }
@@ -676,9 +694,9 @@ public class SettlementOrderLogic {
         settlementOrder.setTranscationId(workerOrder.getTranscationId());
         settlementOrder.setTranscationId(workerOrder.getTranscationId());
         settlementOrder.setOpenId(workerOrder.getOpenId());
         settlementOrder.setOpenId(workerOrder.getOpenId());
 
 
-        if (!StringUtil.isEmpty(workerOrder.getWorkerOrderId())){
+        if (!StringUtil.isEmpty(workerOrder.getWorkerOrderId())) {
             PgOrderBase pgOrderBase = pgOrderBaseService.getById(workerOrder.getWorkerOrderId());
             PgOrderBase pgOrderBase = pgOrderBaseService.getById(workerOrder.getWorkerOrderId());
-            if (pgOrderBase != null){
+            if (pgOrderBase != null) {
                 settlementOrder.setSaleType(pgOrderBase.getSaleType());
                 settlementOrder.setSaleType(pgOrderBase.getSaleType());
             }
             }
         }
         }
@@ -687,10 +705,10 @@ public class SettlementOrderLogic {
         if (adminCompanyWechat.getDayNum() != null) {
         if (adminCompanyWechat.getDayNum() != null) {
             DateTime dateTime = DateUtil.offsetDay(new Date(), adminCompanyWechat.getDayNum());
             DateTime dateTime = DateUtil.offsetDay(new Date(), adminCompanyWechat.getDayNum());
             String format = DateUtil.format(dateTime, "yyyy-MM-dd");
             String format = DateUtil.format(dateTime, "yyyy-MM-dd");
-            String formatDate = format+" "+adminCompanyWechat.getHourTime();
+            String formatDate = format + " " + adminCompanyWechat.getHourTime();
             DateTime parse = DateUtil.parse(formatDate);
             DateTime parse = DateUtil.parse(formatDate);
             settlementOrder.setChangeTime(parse);
             settlementOrder.setChangeTime(parse);
-        }else {
+        } else {
             DateTime dateTime = DateUtil.offsetDay(new Date(), 1);
             DateTime dateTime = DateUtil.offsetDay(new Date(), 1);
             settlementOrder.setChangeTime(dateTime);
             settlementOrder.setChangeTime(dateTime);
         }
         }
@@ -708,7 +726,6 @@ public class SettlementOrderLogic {
     }
     }
 
 
 
 
-
     private void addSettlementManaulWorker(WorkerOrder workerOrder, List<WorkerOrderItem> workerOrderItems) {
     private void addSettlementManaulWorker(WorkerOrder workerOrder, List<WorkerOrderItem> workerOrderItems) {
         AdminCompanyWechat adminCompanyWechat = adminCompanyWechatService.getById(workerOrder.getCompanyWechatId());
         AdminCompanyWechat adminCompanyWechat = adminCompanyWechatService.getById(workerOrder.getCompanyWechatId());
         WorkerSettlementManual one = workerSettlementManualService.lambdaQuery()
         WorkerSettlementManual one = workerSettlementManualService.lambdaQuery()
@@ -743,7 +760,6 @@ public class SettlementOrderLogic {
     }
     }
 
 
 
 
-
     private void addManualSettlementOrder(WorkerOrder workerOrder, List<WorkerOrderItem> workerOrderItems) {
     private void addManualSettlementOrder(WorkerOrder workerOrder, List<WorkerOrderItem> workerOrderItems) {
         AdminCompanyWechat adminCompanyWechat = adminCompanyWechatService.getById(workerOrder.getCompanyWechatId());
         AdminCompanyWechat adminCompanyWechat = adminCompanyWechatService.getById(workerOrder.getCompanyWechatId());
 
 
@@ -822,11 +838,11 @@ public class SettlementOrderLogic {
 
 
     */
     */
 /**
 /**
-     * 单个师傅库存处理
-     *
-     * @param stockList
-     * @throws Exception
-     *//*
+ * 单个师傅库存处理
+ *
+ * @param stockList
+ * @throws Exception
+ *//*
 
 
     public void handleWorkerStock(List<WorkerStockDTO> stockList) throws Exception {
     public void handleWorkerStock(List<WorkerStockDTO> stockList) throws Exception {
         if (!TransactionSynchronizationManager.isSynchronizationActive()) {
         if (!TransactionSynchronizationManager.isSynchronizationActive()) {
@@ -1091,11 +1107,11 @@ public class SettlementOrderLogic {
     }
     }
     */
     */
 /**
 /**
-     * 单个师傅库存处理
-     *
-     * @param stockList
-     * @throws Exception
-     *//*
+ * 单个师傅库存处理
+ *
+ * @param stockList
+ * @throws Exception
+ *//*
 
 
     public void materialGoodsStockLogichandleWorkerStock(List<WorkerStockDTO> stockList) throws Exception {
     public void materialGoodsStockLogichandleWorkerStock(List<WorkerStockDTO> stockList) throws Exception {
         if (!TransactionSynchronizationManager.isSynchronizationActive()) {
         if (!TransactionSynchronizationManager.isSynchronizationActive()) {
@@ -1313,11 +1329,11 @@ public class SettlementOrderLogic {
 
 
     */
     */
 /**
 /**
-     * 单个师傅库存处理
-     *
-     * @param stockList
-     * @throws Exception
-     *//*
+ * 单个师傅库存处理
+ *
+ * @param stockList
+ * @throws Exception
+ *//*
 
 
     public void uhandleWorkerStock(List<WorkerStockDTO> stockList) throws Exception {
     public void uhandleWorkerStock(List<WorkerStockDTO> stockList) throws Exception {
         if (!TransactionSynchronizationManager.isSynchronizationActive()) {
         if (!TransactionSynchronizationManager.isSynchronizationActive()) {

+ 1 - 1
mall-server-api/src/main/java/com/gree/mall/manager/schedule/OrderBaseSchedule.java

@@ -96,7 +96,7 @@ public class OrderBaseSchedule {
     @Transactional
     @Transactional
     @Scheduled(fixedDelay = 5  * 1000)
     @Scheduled(fixedDelay = 5  * 1000)
     //  @Scheduled(fixedDelay = 60  * 1000)
     //  @Scheduled(fixedDelay = 60  * 1000)
-    public void fucaizhifu() throws WxPayException {
+    public void fucaizhifu() throws WxPayException, InterruptedException {
 
 
         settlementOrderLogic.sync();
         settlementOrderLogic.sync();
     }
     }

+ 1 - 1
mall-server-api/src/main/resources/mapper/workorder/IncreMapper.xml

@@ -53,7 +53,7 @@
                 #{item}
                 #{item}
             </foreach>
             </foreach>
         </if>
         </if>
-        join sys_dict_company e on e.dict_type = 'SALES_TYPE' and e.del = 0
+        join sys_dict_company e on e.dict_type = 'SALES_TYPE' and e.del = 0 and e.dict_code > 100
         <if test="adminCompanyIds != null and adminCompanyIds.size > 0">
         <if test="adminCompanyIds != null and adminCompanyIds.size > 0">
             AND e.company_wechat_id IN
             AND e.company_wechat_id IN
             <foreach item="item" index="index" collection="adminCompanyIds" open="(" separator="," close=")">
             <foreach item="item" index="index" collection="adminCompanyIds" open="(" separator="," close=")">

+ 1 - 1
mall-server-api/src/main/resources/mapper/workorder/OrderBaseCMapper.xml

@@ -130,7 +130,7 @@
 
 
     <select id="countOrderBaseIndex" resultType="com.gree.mall.manager.bean.workorder.OrderBaseCountBean">
     <select id="countOrderBaseIndex" resultType="com.gree.mall.manager.bean.workorder.OrderBaseCountBean">
         select
         select
-            count(if(order_status in ('DSHPG','DWDPG','DSHPG','CJ','YPD','DXSPD','DZBPG','DWDSPGP','DXSSPGP','DTJXSSPGP','DZBSPGP','DFZXPD','DFZXSPGP'),1,null)) as 'dpg',
+            count(if(order_status in ('DSHPG','CJ','YPD','DXSPD','DZBPG','DWDSPGP','DXSSPGP','DTJXSSPGP','DZBSPGP','DFZXPD','DFZXSPGP','DWDPG','DWDPD'),1,null)) as 'dpg',
             count(if((a.is_meet =0 or a.order_status  IN ('DJD')) and a.order_status not in ('YQX','FWQX','FL','FWZT','YCGB'),1,null)) as 'djs',
             count(if((a.is_meet =0 or a.order_status  IN ('DJD')) and a.order_status not in ('YQX','FWQX','FL','FWZT','YCGB'),1,null)) as 'djs',
             count(if(order_status in ('DQD'),1,null)) as 'dqd',
             count(if(order_status in ('DQD'),1,null)) as 'dqd',
             count(if(order_status in ('FWZ','GCSZT','BFWG','DSM','YZP','WDBH','XSBH','TJXSBH','ZBBH','FZXBH'),1,null)) as 'fwz',
             count(if(order_status in ('FWZ','GCSZT','BFWG','DSM','YZP','WDBH','XSBH','TJXSBH','ZBBH','FZXBH'),1,null)) as 'fwz',

+ 24 - 16
mall-server-sync-api/src/main/java/com/gree/mall/manager/logic/SyncOrderInfoLogic.java

@@ -26,6 +26,7 @@ import com.gree.mall.manager.exception.RemoteServiceException;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.entity.*;
 import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.plus.service.*;
 import com.gree.mall.manager.utils.RedisUtil;
 import com.gree.mall.manager.utils.RedisUtil;
+import com.gree.mall.manager.utils.StringUtil;
 import com.gree.mall.manager.utils.http.HttpUtils;
 import com.gree.mall.manager.utils.http.HttpUtils;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
@@ -334,16 +335,10 @@ public class SyncOrderInfoLogic {
 
 
                 WorkOrderSearchReq workOrderSearchReq = new WorkOrderSearchReq();
                 WorkOrderSearchReq workOrderSearchReq = new WorkOrderSearchReq();
 
 
-                List<String> collect = itfGreeSynDownloadRecs.stream().map(ItfGreeSynDownloadRec::getWorkOrderId).collect(Collectors.toList());
+                List<String> collect = itfGreeSynDownloadRecs.stream().map(ItfGreeSynDownloadRec::getWorkOrderId).distinct().collect(Collectors.toList());
                 List<Long> syncIds = itfGreeSynDownloadRecs.stream().map(ItfGreeSynDownloadRec::getSynReqId).collect(Collectors.toList());
                 List<Long> syncIds = itfGreeSynDownloadRecs.stream().map(ItfGreeSynDownloadRec::getSynReqId).collect(Collectors.toList());
 
 
-                itfGreeSynDownloadRecService.lambdaUpdate()
-                        .in(ItfGreeSynDownloadRec::getWorkOrderId, collect)
-                        .notIn(ItfGreeSynDownloadRec::getGreeStatSynStatus,1,9)
-                        .set(ItfGreeSynDownloadRec::getGreeStatSynStatus, 1)
-                        .set(ItfGreeSynDownloadRec::getDownloadBatchNo, batch)
-                        .set(ItfGreeSynDownloadRec::getGreeStatSynTime, new Date())
-                        .update();
+
 
 
                 workOrderSearchReq.setWorkOrderIds(collect);
                 workOrderSearchReq.setWorkOrderIds(collect);
 
 
@@ -360,8 +355,18 @@ public class SyncOrderInfoLogic {
                 Map<String, Object> bodyMap = JSON.parseObject(body);
                 Map<String, Object> bodyMap = JSON.parseObject(body);
                 String s = bodyMap.get("data").toString();
                 String s = bodyMap.get("data").toString();
 
 
+                itfGreeSynDownloadRecService.lambdaUpdate()
+                        .in(ItfGreeSynDownloadRec::getWorkOrderId, collect)
+                        .notIn(ItfGreeSynDownloadRec::getGreeStatSynStatus,1,9)
+                        .set(ItfGreeSynDownloadRec::getGreeStatSynStatus, 1)
+                        .set(ItfGreeSynDownloadRec::getDownloadBatchNo, batch)
+                        .set(ItfGreeSynDownloadRec::getGreeStatSynTime, new Date())
+                        .update();
+
 
 
 
 
+                if (StringUtil.isEmpty(s))
+                    continue;
 
 
 
 
                 JSONArray jsonArray = JSONUtil.parseArray(s);
                 JSONArray jsonArray = JSONUtil.parseArray(s);
@@ -601,7 +606,7 @@ public class SyncOrderInfoLogic {
 
 
                 itfGreeSynDownloadRecService.lambdaUpdate()
                 itfGreeSynDownloadRecService.lambdaUpdate()
                         .in(ItfGreeSynDownloadRec::getSynReqId, syncIds)
                         .in(ItfGreeSynDownloadRec::getSynReqId, syncIds)
-                        .set(ItfGreeSynDownloadRec::getGreeStatSynErrMsg, e.getMessage())
+                        .set(ItfGreeSynDownloadRec::getGreeStatSynErrMsg, e.toString())
                         .set(ItfGreeSynDownloadRec::getGreeStatSynTime, new Date())
                         .set(ItfGreeSynDownloadRec::getGreeStatSynTime, new Date())
                         .set(ItfGreeSynDownloadRec::getGreeStatSynStatus, 99).update();
                         .set(ItfGreeSynDownloadRec::getGreeStatSynStatus, 99).update();
 
 
@@ -652,7 +657,7 @@ public class SyncOrderInfoLogic {
 
 
     }
     }
 
 
-    public void syncDetailFail() {
+    public synchronized void syncDetailFail() {
 
 
         while (true) {
         while (true) {
 
 
@@ -688,14 +693,8 @@ public class SyncOrderInfoLogic {
 
 
                 String json = JSONUtil.toJsonStr(workOrderSearchReq);
                 String json = JSONUtil.toJsonStr(workOrderSearchReq);
 
 
-                ItfGreeSynDownloadRec itfGreeSynDownloadRec = itfGreeSynDownloadRecs.get(0);
-
-                itfGreeSynDownloadRec.setGreeStatSynTime(new Date());
-                itfGreeSynDownloadRec.setGreeStatSynStatus(1);
 
 
 
 
-                itfGreeSynDownloadRec.updateById();
-
 
 
                 String body = HttpRequest.post(greeUrl + Constant.gree.POST_WORKER_ORDER_DETAIL)
                 String body = HttpRequest.post(greeUrl + Constant.gree.POST_WORKER_ORDER_DETAIL)
                         .headerMap(heard, false)
                         .headerMap(heard, false)
@@ -706,8 +705,17 @@ public class SyncOrderInfoLogic {
                 Map<String, Object> bodyMap = JSON.parseObject(body);
                 Map<String, Object> bodyMap = JSON.parseObject(body);
                 String s = bodyMap.get("data").toString();
                 String s = bodyMap.get("data").toString();
 
 
+                ItfGreeSynDownloadRec itfGreeSynDownloadRec = itfGreeSynDownloadRecs.get(0);
+
+                itfGreeSynDownloadRec.setGreeStatSynTime(new Date());
+                itfGreeSynDownloadRec.setGreeStatSynStatus(1);
+
+
+                itfGreeSynDownloadRec.updateById();
 
 
 
 
+                if (StringUtil.isEmpty(s))
+                    continue;
 
 
 
 
                 JSONArray jsonArray = JSONUtil.parseArray(s);
                 JSONArray jsonArray = JSONUtil.parseArray(s);

Some files were not shown because too many files changed in this diff