he2802 2 年之前
父節點
當前提交
f2ede2fff2
共有 17 個文件被更改,包括 238 次插入75 次删除
  1. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java
  2. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderMapper.java
  3. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java
  4. 31 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java
  5. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrder.java
  6. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderMapper.java
  7. 106 73
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java
  8. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderVo.java
  9. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/domian/TopInstSettle.java
  10. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/mapper/TopInstSettleMapper.java
  11. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/service/ITopInstSettleService.java
  12. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/service/impl/ITopInstSettleServiceImpl.java
  13. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/vo/SettleVo.java
  14. 19 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java
  15. 14 0
      zhongzheng-system/src/main/resources/mapper/modules/order/OrderMapper.xml
  16. 22 1
      zhongzheng-system/src/main/resources/mapper/modules/settle/ExamActivityMapper.xml
  17. 11 0
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/goods/service/impl/GoodsServiceImpl.java

@@ -532,6 +532,9 @@ public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements
                 throw new CustomException("请输入正确的商品外链");
             }
         }
+        if (ObjectUtils.isNull(bo.getYear())){
+            throw new CustomException("请选择商品年份");
+        }
         Goods add = BeanUtil.toBean(bo, Goods.class);
         add.setCode(ServletUtils.getEncoded("SP"));
         validEntityBeforeSave(add);

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/mapper/OrderMapper.java

@@ -43,4 +43,6 @@ public interface OrderMapper extends BaseMapper<Order> {
     OrderListVo queryDetailByOrderSn(String orderSn);
 
     List<Long> getUserGoods(@Param("userId") Long userId);
+
+    List<String> queryBusinessFullNameBySn(@Param("orderSn") String orderSn);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/IOrderService.java

@@ -113,4 +113,6 @@ public interface IOrderService extends IService<Order> {
 	boolean arrangeGrade(String goodsName, Long goodsId, Long orderGoodsId, Long gradeId, Long userId, String orderSn, Long businessId);
 
 	Map<String, String> getActivityGoods(OrderAddBo bo);
+
+	List<String> queryBusinessFullNameBySn(String orderSn);
 }

+ 31 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderServiceImpl.java

@@ -78,10 +78,13 @@ import com.zhongzheng.modules.top.financial.service.ITopCostTpItemService;
 import com.zhongzheng.modules.top.financial.service.ITopCostTpService;
 import com.zhongzheng.modules.top.financial.vo.TopCostTpItemVo;
 import com.zhongzheng.modules.top.financial.vo.TopCostTpVo;
+import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrderCheck;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrderCheckLog;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderCheckLogService;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderCheckService;
+import com.zhongzheng.modules.top.settle.domian.TopInstSettle;
+import com.zhongzheng.modules.top.settle.service.ITopInstSettleService;
 import com.zhongzheng.modules.user.domain.User;
 import com.zhongzheng.modules.user.domain.UserExamGoods;
 import com.zhongzheng.modules.user.service.IUserExamGoodsService;
@@ -193,6 +196,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     private ITopOldOrderCheckService topOldOrderCheckService;
     @Autowired
     private ITopOldOrderCheckLogService topOldOrderCheckLogService;
+    @Autowired
+    private ITopInstSettleService topInstSettleService;
 
 
     @Override
@@ -752,6 +757,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         for (OrderGoods orderGoods : freeList) {
             dealFreeGoods(orderGoods, add);
         }
+        instTimeSettleOrder(add,DateUtils.getNowTime());
         Map<String, Object> result = new HashMap<>();
         result.put("orderId", add.getOrderId());
         result.put("orderSn", out_trade_no);
@@ -764,6 +770,25 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         return result;
     }
 
+    private void instTimeSettleOrder(Order order, Long checkTime) {
+        //业务层次
+        List<String> fullName = this.queryBusinessFullNameBySn(order.getOrderSn());
+        Set<TopInstSettle> settleList = new HashSet<>();
+        for (String name : fullName) {
+            List<TopInstSettle> settles = topInstSettleService.getSettleByBusiness(name,checkTime,order.getOperationType());
+            settleList.addAll(settles);
+        }
+        if (CollectionUtils.isNotEmpty(settleList)){
+            settleList.forEach(x -> x.setOrderNum(x.getOrderNum() + 1));
+            topInstSettleService.updateBatchById(settleList);
+        }
+    }
+
+    @Override
+    public List<String> queryBusinessFullNameBySn(String orderSn){
+       return baseMapper.queryBusinessFullNameBySn(orderSn);
+    }
+
 
     private void dealFreeGoods(OrderGoods orderGoods, Order order) {
         //免费商品
@@ -968,6 +993,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         //大于0元,获取微信支付信息
         if (payPrice.compareTo(BigDecimal.ZERO) != 0) {
             payResult = iWxPayService.payment(pay_no, userVo.getOpenId(), body, payPrice);
+        }else {
+            instTimeSettleOrder(add,DateUtils.getNowTime());
         }
 
         payResult.put("orderSn", out_trade_no);
@@ -1352,6 +1379,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 throw new CustomException("请先授权绑定公众号信息");
             }
             payResult = iWxPayService.paymentGzh(pay_no, userVo.getGzhOpenId(), body, payPrice, bo.getUrl());
+        }else {
+            instTimeSettleOrder(add,DateUtils.getNowTime());
         }
 
         payResult.put("orderSn", out_trade_no);
@@ -1506,6 +1535,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
         //大于0元,获取微信支付信息
         if (payPrice.compareTo(BigDecimal.ZERO) != 0) {
             payResult = iWxPayService.paymentPc(pay_no, userVo.getOpenId(), body, payPrice);
+        }else {
+            instTimeSettleOrder(add,DateUtils.getNowTime());
         }
 
         payResult.put("orderSn", out_trade_no);

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/domain/TopOldOrder.java

@@ -155,7 +155,7 @@ private static final long serialVersionUID=1L;
     /** 业务员备注 */
     private String financeRemark;
 
-    /** 供应商成本 */
+    /** 供应商数量结算成本 */
     private BigDecimal instCost;
     /** 运营类型:1代运营 2独立运营 */
     private Integer operationType;

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/mapper/TopOldOrderMapper.java

@@ -27,6 +27,8 @@ public interface TopOldOrderMapper extends BaseMapper<TopOldOrder> {
 
     List<String> queryBusinessBySn(@Param("orderSn") String orderSn);
 
+    List<String> queryBusinessFullNameBySn(@Param("orderSn") String orderSn);
+
     List<TopOldOrderVo> queryReceiveList(TopOldOrderQueryBo bo);
 
     Long queryReceiveUnSum(TopOldOrderQueryBo bo);

+ 106 - 73
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java

@@ -279,7 +279,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                         .eq(TopOldOrderCheckLog::getType, 1)//B端订单审核
                         .eq(TopOldOrderCheckLog::getCheckSign, 1)
                         .last("limit 1"));
-        if (ObjectUtils.isNotNull(checkLog)){
+        if (ObjectUtils.isNotNull(checkLog)) {
             orderVo.setCheckReason(checkLog.getCheckReason());
         }
 
@@ -319,6 +319,10 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                 if (ObjectUtils.isNotNull(item.getOrderReceived()) && ObjectUtils.isNotNull(item.getOrderRefunded())) {
                     item.setOrderPractical(item.getOrderReceived().subtract(item.getOrderRefunded()));
                 }
+                //成本 = 订单成本+供应商数量结算成本+供应商时间结算成本
+                BigDecimal cost = getInstTimeSettleCost(item);
+                BigDecimal add = item.getOrderCost().add(cost).add(item.getInstCost());
+                item.setOrderCost(add);
                 //退款审核角色
                 if (Arrays.asList(0, 2).contains(item.getRefundStatus())) {
                     String refundSn = "";
@@ -365,6 +369,29 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         return orderVoList;
     }
 
+    private BigDecimal getInstTimeSettleCost(TopOldOrderVo orderVo) {
+        List<String> fullName = new ArrayList<>();
+        if (orderVo.getOrderFrom() == 1) {
+            fullName = orderService.queryBusinessFullNameBySn(orderVo.getOrderSn());
+        } else {
+            fullName = baseMapper.queryBusinessFullNameBySn(orderVo.getOrderSn());
+        }
+
+        Set<TopInstSettle> settleList = new HashSet<>();
+        for (String name : fullName) {
+            List<TopInstSettle> settles = topInstSettleService.getSettleByBusiness(name,
+                    ObjectUtils.isNotNull(orderVo.getPayTime()) ? orderVo.getPayTime() : orderVo.getCreateTime(), orderVo.getOperationType());
+            settleList.addAll(settles);
+        }
+        if (CollectionUtils.isNotEmpty(settleList)) {
+            BigDecimal money = settleList.stream().filter(item -> ObjectUtils.isNotNull(item.getSettleMoney()) && item.getSettleMoney().compareTo(BigDecimal.ZERO) > 0)
+                    .map(x -> x.getSettleMoney().divide(new BigDecimal(x.getOrderNum()))).reduce(BigDecimal.ZERO, BigDecimal::add);
+            return money;
+        }
+
+        return BigDecimal.ZERO;
+    }
+
     /**
      * 实体类转化成视图对象
      *
@@ -1055,17 +1082,17 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             //退款发起原因和审核意见
             TopOldOrderRefund orderRefund = topOldOrderRefundService
                     .getOne(new LambdaQueryWrapper<TopOldOrderRefund>()
-                    .eq(TopOldOrderRefund::getOrderGoodsId, item.getOrderGoodsId())
-                    .eq(TopOldOrderRefund::getStatus,1)
-                    .orderByDesc(TopOldOrderRefund::getCreateTime).last("limit 1"));
-            if (ObjectUtils.isNotNull(orderRefund)){
+                            .eq(TopOldOrderRefund::getOrderGoodsId, item.getOrderGoodsId())
+                            .eq(TopOldOrderRefund::getStatus, 1)
+                            .orderByDesc(TopOldOrderRefund::getCreateTime).last("limit 1"));
+            if (ObjectUtils.isNotNull(orderRefund)) {
                 item.setRefundReason(orderRefund.getApplyReason());
 
                 List<TopOldOrderCheckLog> logList = topOldOrderCheckLogService
                         .list(new LambdaQueryWrapper<TopOldOrderCheckLog>()
-                        .eq(TopOldOrderCheckLog::getRefundSn, orderRefund.getRefundSn())
-                        .eq(TopOldOrderCheckLog::getStatus, 1));
-                if (CollectionUtils.isNotEmpty(logList)){
+                                .eq(TopOldOrderCheckLog::getRefundSn, orderRefund.getRefundSn())
+                                .eq(TopOldOrderCheckLog::getStatus, 1));
+                if (CollectionUtils.isNotEmpty(logList)) {
                     String collect = logList.stream().filter(x -> StringUtils.isNotBlank(x.getCheckReason())).map(TopOldOrderCheckLog::getCheckReason).collect(Collectors.joining(","));
                     item.setCheckReason(collect);
                 }
@@ -1101,7 +1128,8 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             throw new CustomException("当前账号没有审核权限");
         }
         oldOrder.setCheckBy(bo.getLoginName());
-        oldOrder.setCheckTime(DateUtils.getNowTime());
+        Long checkTime = DateUtils.getNowTime();
+        oldOrder.setCheckTime(checkTime);
 
         Boolean brokerageFlag = false;
         switch (bo.getCheckStatus()) {
@@ -1152,6 +1180,10 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
 
         updateById(oldOrder);
         topOldOrderCheckLogService.updateById(checkLog);
+        if (bo.getCheckStatus() == 1) {
+            //处理供应商时间结算单
+            instTimeSettleOrder(oldOrder, checkTime);
+        }
 
         if (bo.getCheckStatus() == 1 && oldOrder.getFinishSign() == 0 && oldOrder.getOrderUncollected().compareTo(BigDecimal.ZERO) == 0) {
             //订单审核通过,账款已结清,满足完单条件
@@ -1159,12 +1191,12 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             TopOldOrder order = getById(oldOrder.getOrderId());
 
             List<String> tenantIds = Arrays.asList("1", "867735392558919680");
-            if (tenantIds.contains(order.getTenantId())){
+            if (tenantIds.contains(order.getTenantId())) {
                 //祥粤云订单不算分成
                 order.setFinishStatus(1);//已完单
                 //修改订单分成
                 updateById(order);
-            }else {
+            } else {
                 //获取机构分成方式
                 SysTenant tenant = sysTenantService
                         .getOne(new LambdaQueryWrapper<SysTenant>()
@@ -1180,7 +1212,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                         List<TopCostTpItemVo> divideList = itemList.stream().filter(x -> x.getItemCategory() == 1).collect(Collectors.toList());
                         calculateDivide(divideList, order, divideModel);
                     }
-                }else {
+                } else {
                     order.setFinishStatus(1);//已完单
                     order.setDivideModel(divideModel);
                     order.setAccomplishTime(DateUtils.getNowTime());
@@ -1271,6 +1303,20 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         return true;
     }
 
+    private void instTimeSettleOrder(TopOldOrder oldOrder, Long checkTime) {
+        //业务层次
+        List<String> fullName = baseMapper.queryBusinessFullNameBySn(oldOrder.getOrderSn());
+        List<TopInstSettle> settleList = new ArrayList<>();
+        for (String name : fullName) {
+            List<TopInstSettle> settles = topInstSettleService.getSettleByBusiness(name, checkTime, oldOrder.getOperationType());
+            settleList.addAll(settles);
+        }
+        if (CollectionUtils.isNotEmpty(settleList)) {
+            settleList.forEach(x -> x.setOrderNum(x.getOrderNum() + 1));
+            topInstSettleService.updateBatchById(settleList);
+        }
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean checkOrderStudent(TopOldOrderCheckBo bo) {
@@ -1406,13 +1452,13 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         }
 
         //审核通过消息通知
-        if (bo.getCheckStatus() == 1){
+        if (bo.getCheckStatus() == 1) {
             List<String> userNames = new ArrayList<>();
             topOldOrderGoods.forEach(item -> {
-                if (oldOrder.getOrderBase() == 1){
+                if (oldOrder.getOrderBase() == 1) {
                     User user = userService.getOne(new LambdaQueryWrapper<User>().eq(User::getIdCard, item.getUserCard()));
                     userNames.add(user.getRealname());
-                }else {
+                } else {
                     userNames.add(item.getUserName());
                 }
             });
@@ -1838,11 +1884,11 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             }
         });
 
-        if (CollectionUtils.isNotEmpty(oldOrderSn)){
+        if (CollectionUtils.isNotEmpty(oldOrderSn)) {
             //修改备注
             Map<String, String> params = new HashMap<>();
             Long nowTime = DateUtils.getNowTime();
-            String sign = ToolsUtils.EncoderByMd5( nowTime.toString() + "pubilc2022");
+            String sign = ToolsUtils.EncoderByMd5(nowTime.toString() + "pubilc2022");
             params.put("stamp", nowTime.toString());
             params.put("sign", sign);
             params.put("orderSn", oldOrderSn.stream().collect(Collectors.joining(",")));
@@ -2029,13 +2075,13 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             //新云学堂C端
             User user = userService.getById(orderVo.getUserId());
             vo.setApplyName(String.format("%s(%s)", tenant.getTenantName(), user.getRealname()));
-        }else if (orderVo.getOrderFrom() == 2){
+        } else if (orderVo.getOrderFrom() == 2) {
             vo.setPayType(orderVo.getPayType());
             List<TopOldOrderGoods> list = topOrderGoodsService
                     .list(new LambdaQueryWrapper<TopOldOrderGoods>()
-                    .eq(TopOldOrderGoods::getOrderSn, orderVo.getOrderSn()));
-            vo.setApplyName(String.format("%s(%s)", tenant.getTenantName(),list.get(0).getUserName()));
-        }else {
+                            .eq(TopOldOrderGoods::getOrderSn, orderVo.getOrderSn()));
+            vo.setApplyName(String.format("%s(%s)", tenant.getTenantName(), list.get(0).getUserName()));
+        } else {
             vo.setApplyName(String.format("%s(%s)", tenant.getTenantName(), orderVo.getCreateUsername()));
         }
         vo.setCheckType(1);
@@ -2282,7 +2328,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                 List<OrderGoodsRefund> refundList = orderGoodsRefundService
                         .list(new LambdaQueryWrapper<OrderGoodsRefund>()
                                 .eq(OrderGoodsRefund::getOrderSn, oldOrder.getOrderSn())
-                                .eq(OrderGoodsRefund::getPeriodStatus,0)
+                                .eq(OrderGoodsRefund::getPeriodStatus, 0)
                                 .eq(OrderGoodsRefund::getStatus, 1));
                 List<Long> orderGoodsIds = refundList.stream().map(OrderGoodsRefund::getOrderGoodsId).collect(Collectors.toList());
                 for (OrderGoodsRefund item : refundList) {
@@ -2469,7 +2515,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                                 throw new CustomException(String.format("订单号分成已结清不能取消【%s】", orderSn));
                             }
                             List<String> tenantIds = Arrays.asList("1", "867735392558919680");
-                            if (tenantIds.contains(order.getTenantId())){
+                            if (tenantIds.contains(order.getTenantId())) {
                                 //C端订单 不能撤销
                                 throw new CustomException(String.format("C端订单不能取消完单【%s】", orderSn));
                             }
@@ -2795,14 +2841,14 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                         .list(new LambdaQueryWrapper<TopOldOrderGoods>()
                                 .eq(TopOldOrderGoods::getOrderSn, orderVo.getOrderSn())
                                 .eq(TopOldOrderGoods::getStatus, 1)
-                                .ne(TopOldOrderGoods::getCheckStatus,-1));
+                                .ne(TopOldOrderGoods::getCheckStatus, -1));
                 if (CollectionUtils.isNotEmpty(list)) {
                     list.forEach(x -> userCard.add(x.getUserCard()));
                 }
             } else {
                 //新系统订单
                 User user = userService.getById(orderVo.getUserId());
-                if (ObjectUtils.isNotNull(user)){
+                if (ObjectUtils.isNotNull(user)) {
                     userCard.add(user.getIdCard());
                 }
             }
@@ -3388,26 +3434,26 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             iTopOrderBankPayService.updateById(bankPay);
             iTopDivideLogService.updateById(divideLog);
             return true;
-        }else if (bankPay.getType() == 3){
+        } else if (bankPay.getType() == 3) {
             //供应商结算
             TopInstSettle settle = topInstSettleService.getOne(new LambdaQueryWrapper<TopInstSettle>().eq(TopInstSettle::getSettleSn, bankPay.getOrderSn()));
-            if (ObjectUtils.isNull(settle)){
-                log.error("结算单网银支付回调错误:结算单获取有误,"+settle.getSettleSn());
+            if (ObjectUtils.isNull(settle)) {
+                log.error("结算单网银支付回调错误:结算单获取有误," + settle.getSettleSn());
                 throw new CustomException("结算单获取有误");
             }
-            switch (settle.getSettleType()){
+            switch (settle.getSettleType()) {
                 case 1://数量供应商结算单
                     List<TopInstSettleRelaiton> relaitonList = topInstSettleRelationService
                             .list(new LambdaQueryWrapper<TopInstSettleRelaiton>()
-                            .eq(TopInstSettleRelaiton::getSettleId, settle.getSettleId())
-                            .eq(TopInstSettleRelaiton::getStatus, 1));
-                    if (CollectionUtils.isNotEmpty(relaitonList)){
+                                    .eq(TopInstSettleRelaiton::getSettleId, settle.getSettleId())
+                                    .eq(TopInstSettleRelaiton::getStatus, 1));
+                    if (CollectionUtils.isNotEmpty(relaitonList)) {
                         relaitonList.forEach(item -> {
-                            if (item.getOrderFrom() == 1){
+                            if (item.getOrderFrom() == 1) {
                                 Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderSn, item.getOrderSn()));
                                 order.setInstCost(order.getInstCost().add(item.getSettleMoney()));
                                 orderService.updateById(order);
-                            }else {
+                            } else {
                                 TopOldOrder oldOrder = topOldOrderService.getOne(new LambdaQueryWrapper<TopOldOrder>().eq(TopOldOrder::getOrderSn, item.getOrderSn()));
                                 oldOrder.setInstCost(oldOrder.getInstCost().add(item.getSettleMoney()));
                                 topOldOrderService.updateById(oldOrder);
@@ -3422,18 +3468,18 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                     TopCourseEducationType educationType = topCourseEducationTypeService.getById(settle.getEducationTypeId());
                     TopCourseProjectType projectType = topCourseProjectTypeService.getById(settle.getProjectId());
                     TopCourseBusiness business = topCourseBusinessService.getById(settle.getBusinessId());
-                    String businessName = educationType.getEducationName()+business.getBusinessName()+projectType.getProjectName();
+                    String businessName = educationType.getEducationName() + business.getBusinessName() + projectType.getProjectName();
                     List<Long> orderSns = baseMapper.getOrderSnByBusiness(businessName);
-                    if (CollectionUtils.isNotEmpty(orderSns)){
+                    if (CollectionUtils.isNotEmpty(orderSns)) {
                         List<TopOldOrder> oldOrderList = topOldOrderService
                                 .list(new LambdaQueryWrapper<TopOldOrder>()
-                                .in(TopOldOrder::getOrderSn, orderSns)
-                                .eq(ObjectUtils.isNotNull(settle.getSettleOrderType()) && settle.getSettleOrderType() != 3,
-                                        TopOldOrder::getOperationType, settle.getSettleOrderType())
-                                .eq(TopOldOrder::getStatus, 1)
-                                .eq(TopOldOrder::getCheckStatus, 1)
-                                .ge(TopOldOrder::getCheckTime, settle.getSignStartTime())
-                                .le(TopOldOrder::getCheckTime, settle.getSignEndTime()));
+                                        .in(TopOldOrder::getOrderSn, orderSns)
+                                        .eq(ObjectUtils.isNotNull(settle.getSettleOrderType()) && settle.getSettleOrderType() != 3,
+                                                TopOldOrder::getOperationType, settle.getSettleOrderType())
+                                        .eq(TopOldOrder::getStatus, 1)
+                                        .eq(TopOldOrder::getCheckStatus, 1)
+                                        .ge(TopOldOrder::getCheckTime, settle.getSignStartTime())
+                                        .le(TopOldOrder::getCheckTime, settle.getSignEndTime()));
 
                         List<Order> orderList = orderService
                                 .list(new LambdaQueryWrapper<Order>()
@@ -3445,19 +3491,9 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                                         .ge(Order::getAccomplishTime, settle.getSignStartTime())
                                         .le(Order::getAccomplishTime, settle.getSignEndTime()));
 
-                       Integer num = oldOrderList.size() + orderList.size();
-                       if (num > 0){
-                           //平摊结算金额
-                           BigDecimal money = settle.getSettleMoney().divide(new BigDecimal(num));
-                           if (CollectionUtils.isNotEmpty(oldOrderList)){
-                               oldOrderList.forEach(x -> x.setInstCost(x.getInstCost().add(money)));
-                               topOldOrderService.updateBatchById(oldOrderList);
-                           }
-                           if (CollectionUtils.isNotEmpty(orderList)){
-                               orderList.forEach(x -> x.setInstCost(x.getInstCost().add(money)));
-                               orderService.updateBatchById(orderList);
-                           }
-                       }
+                        Integer num = oldOrderList.size() + orderList.size();
+                        //记录订单数量
+                        settle.setOrderNum(num);
                     }
                     settle.setPayTime(DateUtils.getNowTime());
                     settle.setCheckStatus(6);//已结算
@@ -3520,7 +3556,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                         List<TopCostTpItemVo> divideList = itemList.stream().filter(x -> x.getItemCategory() == 1).collect(Collectors.toList());
                         calculateDivide(divideList, order, divideModel);
                     }
-                }else {
+                } else {
                     order.setFinishStatus(1);//已完单
                     order.setDivideModel(divideModel);
                     order.setAccomplishTime(DateUtils.getNowTime());
@@ -3643,18 +3679,15 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                     badBillList.add(timeBo);
                 }
             }
-            for(TopBadBillTimeBo timeBo : badBillList){
-                if(Validator.isNotEmpty(bo.getBillOverType())&&bo.getBillOverType()==1){
-                    timeBo.setEndTime(timeBo.getEndTime()-7*24*3600);
-                }
-                else if(Validator.isNotEmpty(bo.getBillOverType())&&bo.getBillOverType()==2){
-                    timeBo.setEndTime(timeBo.getEndTime()-30*24*3600);
-                }
-                else if(Validator.isNotEmpty(bo.getBillOverType())&&bo.getBillOverType()==3){
-                    timeBo.setEndTime(timeBo.getEndTime()-182*24*3600);
-                }
-                else if(Validator.isNotEmpty(bo.getBillOverType())&&bo.getBillOverType()==4){
-                    timeBo.setEndTime(timeBo.getEndTime()-365*24*3600);
+            for (TopBadBillTimeBo timeBo : badBillList) {
+                if (Validator.isNotEmpty(bo.getBillOverType()) && bo.getBillOverType() == 1) {
+                    timeBo.setEndTime(timeBo.getEndTime() - 7 * 24 * 3600);
+                } else if (Validator.isNotEmpty(bo.getBillOverType()) && bo.getBillOverType() == 2) {
+                    timeBo.setEndTime(timeBo.getEndTime() - 30 * 24 * 3600);
+                } else if (Validator.isNotEmpty(bo.getBillOverType()) && bo.getBillOverType() == 3) {
+                    timeBo.setEndTime(timeBo.getEndTime() - 182 * 24 * 3600);
+                } else if (Validator.isNotEmpty(bo.getBillOverType()) && bo.getBillOverType() == 4) {
+                    timeBo.setEndTime(timeBo.getEndTime() - 365 * 24 * 3600);
                 }
             }
             bo.setBadBillList(badBillList);
@@ -3944,13 +3977,13 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                 }
                 bo.setBadBillList(badBillList);
             }
-            Long uncollected= baseMapper.queryReceiveUnSum(bo);
+            Long uncollected = baseMapper.queryReceiveUnSum(bo);
             map.put("orderUncollectedTotal", uncollected); //未收账款
 
         }
         if (bo.getTotalType() == 2) {
             //机构分成
-            TopDivideLogQueryBo queryBo1 = BeanUtil.toBean(bo,TopDivideLogQueryBo.class);
+            TopDivideLogQueryBo queryBo1 = BeanUtil.toBean(bo, TopDivideLogQueryBo.class);
             queryBo1.setDivideType(1);
             TopDivideLogVo vo1 = iTopDivideLogService.getSumMoney(queryBo1);
             map.put("unDeductMoneyTotal", Validator.isEmpty(vo1) ? 0 : vo1.getUnDeductMoneyTotal());
@@ -3960,7 +3993,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         }
         if (bo.getTotalType() == 3) {
             //3业务员提成
-            TopDivideLogQueryBo queryBo1 = BeanUtil.toBean(bo,TopDivideLogQueryBo.class);
+            TopDivideLogQueryBo queryBo1 = BeanUtil.toBean(bo, TopDivideLogQueryBo.class);
             queryBo1.setDivideType(2);
             TopDivideLogVo vo1 = iTopDivideLogService.getSumMoney(queryBo1);
             map.put("unDeductMoneyTotal", Validator.isEmpty(vo1) ? 0 : vo1.getUnDeductMoneyTotal());
@@ -3970,7 +4003,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         }
         if (bo.getTotalType() == 4) {
             //4佣金结算
-            TopDivideLogQueryBo queryBo1 = BeanUtil.toBean(bo,TopDivideLogQueryBo.class);
+            TopDivideLogQueryBo queryBo1 = BeanUtil.toBean(bo, TopDivideLogQueryBo.class);
             queryBo1.setDivideType(3);
             TopDivideLogVo vo1 = iTopDivideLogService.getSumMoney(queryBo1);
             map.put("unPayMoneyTotal", Validator.isEmpty(vo1) ? 0 : vo1.getUnPayMoneyTotal());

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderVo.java

@@ -274,4 +274,12 @@ public class TopOldOrderVo {
 
 	@ApiModelProperty("是否需要完单标识:0不需要,1需要")
 	private Integer finishSign;
+
+	@ApiModelProperty("供应商数量结算成本")
+	private BigDecimal instCost;
+
+	/** 运营类型:1代运营 2独立运营 */
+	private Integer operationType;
+
+	private Long createTime;
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/domian/TopInstSettle.java

@@ -66,6 +66,8 @@ public class TopInstSettle implements Serializable {
     private Integer settleOrderType;
     /** 支付时间 */
     private Long payTime;
+    /** 订单数量(用于时间结算) */
+    private Integer orderNum;
 
 
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/mapper/TopInstSettleMapper.java

@@ -22,4 +22,6 @@ public interface TopInstSettleMapper extends BaseMapper<TopInstSettle> {
     List<Long> getOrderGoodsByBusiness(@Param("orderSn") String orderSn,@Param("tpBusinessName") String tpBusinessName);
 
     List<SettleVo> getSettleList(SettleQueryBo bo);
+
+    List<TopInstSettle> getSettleByBusiness(@Param("businessName")String businessName,@Param("signTime")Long signTime,@Param("settleOrderType")Integer settleOrderType);
 }

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/service/ITopInstSettleService.java

@@ -45,4 +45,6 @@ public interface ITopInstSettleService extends IService<TopInstSettle> {
     SettleReceiptsVo getSettleReceipts(Long settleId);
 
     List<NumSettleOrderVo> getSettleReceiptsDetail(Long settleId);
+
+    List<TopInstSettle> getSettleByBusiness(String businessName, Long signTime,Integer settleOrderType);
 }

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/service/impl/ITopInstSettleServiceImpl.java

@@ -511,6 +511,9 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
                         item.setCheckTime(checkLogTwo.getCheckTime());
                     }
                 }
+                if (CollectionUtils.isNotEmpty(bo.getRoleIds()) && bo.getRoleIds().contains(checkLog.getRoleId())){
+                    item.setCheckStatus(7);
+                }
             }
         });
         return settleVos;
@@ -960,6 +963,11 @@ public class ITopInstSettleServiceImpl extends ServiceImpl<TopInstSettleMapper,
         return result;
     }
 
+    @Override
+    public List<TopInstSettle> getSettleByBusiness(String businessName, Long signTime,Integer settleOrderType) {
+        return baseMapper.getSettleByBusiness(businessName,signTime,settleOrderType);
+    }
+
     private TopOldOrderCheckLog getNextCheck(List<TopSysUserRole> settleRoleList, Integer sort,String settleSn) {
         TopOldOrderCheckLog checkLog = topOldOrderCheckLogService
                 .getOne(new LambdaQueryWrapper<TopOldOrderCheckLog>()

+ 3 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/settle/vo/SettleVo.java

@@ -71,4 +71,7 @@ public class SettleVo implements Serializable {
 
     @ApiModelProperty("结算总金额")
     private BigDecimal totalMoney;
+
+    @ApiModelProperty("创建人ID")
+    private Long createUserId;
 }

+ 19 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/wx/service/impl/WxPayServiceImpl.java

@@ -60,6 +60,8 @@ import com.zhongzheng.modules.top.financial.vo.TopCostTpItemVo;
 import com.zhongzheng.modules.top.financial.vo.TopCostTpVo;
 import com.zhongzheng.modules.top.goods.domain.*;
 import com.zhongzheng.modules.top.goods.service.*;
+import com.zhongzheng.modules.top.settle.domian.TopInstSettle;
+import com.zhongzheng.modules.top.settle.service.ITopInstSettleService;
 import com.zhongzheng.modules.user.bo.UserExamGoodsQueryBo;
 import com.zhongzheng.modules.user.bo.UserExamGoodsSupplementAddBo;
 import com.zhongzheng.modules.user.domain.UserExamGoods;
@@ -222,6 +224,8 @@ public class WxPayServiceImpl implements IWxPayService {
     private ITopOldOrderCheckService topOldOrderCheckService;
     @Autowired
     private ITopOldOrderCheckLogService topOldOrderCheckLogService;
+    @Autowired
+    private ITopInstSettleService topInstSettleService;
 
     private String gzh_tokenUrl = "https://api.weixin.qq.com/cgi-bin/token";
 
@@ -516,6 +520,7 @@ public class WxPayServiceImpl implements IWxPayService {
                     }
                 }
                 shareToOldSys(order,goodsList);
+                instTimeSettleOrder(order,DateUtils.getNowTime());
             }
             //判断是否红包活动订单(修改活动订单状态)
             ActivityOrder activityOrder = iActivityOrderService.getOne(new LambdaQueryWrapper<ActivityOrder>()
@@ -529,6 +534,20 @@ public class WxPayServiceImpl implements IWxPayService {
         return true;
     }
 
+    private void instTimeSettleOrder(Order order, Long checkTime) {
+        //业务层次
+        List<String> fullName = iOrderService.queryBusinessFullNameBySn(order.getOrderSn());
+        Set<TopInstSettle> settleList = new HashSet<>();
+        for (String name : fullName) {
+            List<TopInstSettle> settles = topInstSettleService.getSettleByBusiness(name,checkTime,order.getOperationType());
+            settleList.addAll(settles);
+        }
+        if (CollectionUtils.isNotEmpty(settleList)){
+            settleList.forEach(x -> x.setOrderNum(x.getOrderNum() + 1));
+            topInstSettleService.updateBatchById(settleList);
+        }
+    }
+
     private void handleDivide(Order order) {
         //获取机构分成方式
         SysTenant tenant = iSysTenantService

+ 14 - 0
zhongzheng-system/src/main/resources/mapper/modules/order/OrderMapper.xml

@@ -454,4 +454,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
           and og.status = 1
     </select>
 
+    <select id="queryBusinessFullNameBySn" resultType="java.lang.String" parameterType="java.lang.String">
+        SELECT DISTINCT
+            CONCAT( cet.education_name, cb.business_name, cpt.project_name ) AS business_name
+        FROM
+            order_goods og
+                INNER JOIN goods g ON og.goods_id = g.goods_id
+                INNER JOIN course_education_type cet ON g.education_type_id = cet.id
+                INNER JOIN course_project_type cpt ON g.project_id = cpt.id
+                INNER JOIN course_business cb ON g.business_id = cb.id
+                AND og.order_sn = #{orderSn}
+                AND og.`status` = 1
+                AND og.pay_status IN (2,3,4)
+    </select>
+
 </mapper>

+ 22 - 1
zhongzheng-system/src/main/resources/mapper/modules/settle/ExamActivityMapper.xml

@@ -58,9 +58,10 @@
             tis.project_id,
             tis.business_id,
             tis.settle_money,
+            tis.create_user_id,
             tis.inst_id,
             ti.inst_name,
-            ti.bank_name,
+            ti.bank,
             ti.bank_name,
             ti.bank_account,
             tis.check_status,
@@ -110,4 +111,24 @@
             </if>
             ORDER BY tis.create_time DESC
     </select>
+
+    <select id="getSettleByBusiness" parameterType="map" resultType="com.zhongzheng.modules.top.settle.domian.TopInstSettle">
+        SELECT
+        tis.*
+        FROM
+        top_inst_settle tis
+        LEFT JOIN top_course_education_type cet ON tis.education_type_id = cet.id
+        LEFT JOIN top_course_project_type cpt ON tis.project_id = cpt.id
+        LEFT JOIN top_course_business cb ON tis.business_id = cb.id
+        WHERE
+        tis.`status` = 1
+        AND tis.check_status = 6
+        AND settle_type = 2
+        AND tis.sign_start_time &lt;= #{signTime} AND tis.sign_end_time &gt;= #{signTime}
+        AND INSTR(
+        #{businessName},
+        CONCAT( cet.education_name, cb.business_name, cpt.project_name )) > 0
+        AND (tis.settle_order_type == 3 OR tis.settle_order_type == #{settleOrderType})
+    </select>
+
 </mapper>

+ 11 - 0
zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml

@@ -322,6 +322,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         SELECT DISTINCT business_name FROM v_top_order_business WHERE order_sn = #{orderSn}
     </select>
 
+    <select id="queryBusinessFullNameBySn" parameterType="java.lang.String" resultType="java.lang.String">
+        SELECT
+            DISTINCT business_full_name
+        FROM
+            top_old_order_goods
+        WHERE
+            order_sn = #{orderSn}
+          AND `status` = 1
+          AND check_status = 1
+    </select>
+
     <select id="queryByOrderSns" parameterType="java.lang.String" resultType="com.zhongzheng.modules.top.goods.vo.TopOldOrderVo">
         SELECT * FROM v_top_order WHERE 1 =1
         <if test="orderSnList != null and orderSnList.size()!=0 ">