he2802 2 лет назад
Родитель
Сommit
cfa92592dc
20 измененных файлов с 742 добавлено и 222 удалено
  1. 10 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopDivideLogController.java
  2. 4 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java
  3. 233 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java
  4. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopDivideOrderQueryBo.java
  5. 8 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/mapper/TopDivideOrderMapper.java
  6. 10 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/ITopDivideOrderService.java
  7. 9 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopDivideLogServiceImpl.java
  8. 22 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopDivideOrderServiceImpl.java
  9. 35 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopCreateUserVo.java
  10. 5 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopDivideOrderVo.java
  11. 29 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopBadBillTimeBo.java
  12. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderQueryBo.java
  13. 35 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderCheckLogServiceImpl.java
  14. 185 23
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java
  15. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderBankPayAddBo.java
  16. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOrderBankPay.java
  17. 29 37
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOrderBankPayServiceImpl.java
  18. 23 155
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOldOrderExportVo.java
  19. 79 5
      zhongzheng-system/src/main/resources/mapper/modules/top/TopDivideOrderMapper.xml
  20. 12 0
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml

+ 10 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopDivideLogController.java

@@ -114,4 +114,14 @@ public class TopDivideLogController extends BaseController {
         List<TopDivideOrderVo> list = iTopDivideOrderService.getMonthOrderList(bo);
         return AjaxResult.success(list);
     }
+
+    /**
+     * 获取分成记录详细信息
+     */
+    @ApiOperation("获取分成记录详细信息")
+    @PreAuthorize("@ss.hasPermi('system:log:query')")
+    @GetMapping("/{id}")
+    public AjaxResult<TopDivideLogVo> getInfo(@PathVariable("id" ) Long id) {
+        return AjaxResult.success(iTopDivideLogService.queryById(id));
+    }
 }

+ 4 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java

@@ -105,4 +105,8 @@ public interface IScheduleService extends IService<PolyvVideo> {
     void distributionRebate();
 
     void makeDivideMonthBill();
+
+    void makeDivideSellerMonthBill();
+
+    void makeDivideBrokerageMonthBill();
 }

+ 233 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java

@@ -108,6 +108,7 @@ import com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo;
 import com.zhongzheng.modules.top.financial.domain.TopDivideLog;
 import com.zhongzheng.modules.top.financial.service.ITopDivideLogService;
 import com.zhongzheng.modules.top.financial.service.ITopDivideOrderService;
+import com.zhongzheng.modules.top.financial.vo.TopCreateUserVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo;
 import com.zhongzheng.modules.top.user.service.ITopSysConfigService;
 import com.zhongzheng.modules.user.bo.*;
@@ -1411,6 +1412,238 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
 
     }
 
+    @Override
+    public void makeDivideSellerMonthBill() {
+        //生成业务员提成
+        // 上月起始
+        Calendar cal1 = new GregorianCalendar();
+        cal1.add(Calendar.MONTH, -1);
+        cal1.set(Calendar.DAY_OF_MONTH, 1);
+        cal1.set(Calendar.HOUR_OF_DAY, 0);
+        cal1.set(Calendar.MINUTE, 0);
+        cal1.set(Calendar.SECOND, 0);
+
+        // 上月末尾
+        Calendar cal2 = Calendar.getInstance();
+        cal2.add(Calendar.MONTH, -1);
+        cal2.set(
+                Calendar.DAY_OF_MONTH, cal2.getActualMaximum(Calendar.DAY_OF_MONTH));
+        cal2.set(Calendar.HOUR_OF_DAY, 23);
+        cal2.set(Calendar.MINUTE, 59);
+        cal2.set(Calendar.SECOND, 59);
+        //所有机构列表
+        TopDivideOrderQueryBo queryBo = new TopDivideOrderQueryBo();
+        queryBo.setRefundTimeStartTime(cal1.getTimeInMillis()/1000);
+        queryBo.setRefundTimeEndTime(cal2.getTimeInMillis()/1000);
+        queryBo.setStatus(1);
+        queryBo.setDivideModel(2);
+        List<TopCreateUserVo> createList = iTopDivideOrderService.getMonthFinishAllSeller(queryBo);
+        //生成月度记录
+        for(TopCreateUserVo createNo : createList){
+            TopDivideLog divideLog = new TopDivideLog();
+            divideLog.setCreateNo(createNo.getCreateNo());
+            divideLog.setCreateUsername(createNo.getCreateUsername());
+            divideLog.setDivideType(2);
+            divideLog.setPayStatus(2);
+            divideLog.setMonthTime(cal1.getTimeInMillis()/1000);
+            int year = cal1.get(Calendar.YEAR);
+            int month = cal1.get(Calendar.MONTH) + 1;
+            divideLog.setYear(year);
+            divideLog.setMonth(month);
+            divideLog.setCreateTime(DateUtils.getNowTime());
+            divideLog.setUpdateTime(DateUtils.getNowTime());
+            //判断账单是否生成
+            TopDivideLog nowMonth = iTopDivideLogService.getOne(new LambdaQueryWrapper<TopDivideLog>()
+                    .eq(TopDivideLog::getCreateNo,createNo.getCreateNo())
+                    .eq(TopDivideLog::getDivideType,2)
+                    .eq(TopDivideLog::getYear,year)
+                    .eq(TopDivideLog::getMonth,month)
+                    .last("limit 1"));
+            if(Validator.isNotEmpty(nowMonth)){
+                continue;
+            }
+            //获取上个账单
+            LambdaQueryWrapper<TopDivideLog> lqw = Wrappers.lambdaQuery();
+            TopDivideLog divideLogLast = iTopDivideLogService.getOne(lqw.eq(TopDivideLog::getCreateNo,createNo.getCreateNo()).eq(TopDivideLog::getDivideType,2).orderByDesc(TopDivideLog::getId).last("limit 1"));
+            divideLog.setDeductMoney(new BigDecimal(0));
+            if(Validator.isNotEmpty(divideLogLast)){
+                //上个月流入未扣金额
+                divideLog.setDeductMoney(divideLogLast.getUnDeductMoney());
+            }
+            //创建账单
+            if(iTopDivideLogService.save(divideLog)){
+                TopDivideOrderQueryBo queryBo1 = new TopDivideOrderQueryBo();
+                queryBo1.setAccomplishStartTime(cal1.getTimeInMillis()/1000);
+                queryBo1.setAccomplishEndTime(cal2.getTimeInMillis()/1000);
+                queryBo1.setDivideModel(2);
+                queryBo1.setTenantId(createNo.getTenantId());
+                queryBo1.setCreateNo(createNo.getCreateNo());
+                //订单总待付分成
+                BigDecimal totalPayMoney = new BigDecimal(0);
+                List<TopDivideOrderVo> list1 = iTopDivideOrderService.getMonthFinishList(queryBo1);
+                for(TopDivideOrderVo vo : list1){
+                    totalPayMoney = totalPayMoney.add(vo.getDivideCompanyMoney());
+                    TopDivideOrderAddBo addBo = new TopDivideOrderAddBo();
+                    addBo.setDivideLogId(divideLog.getId());
+                    addBo.setOrderSn(vo.getOrderSn());
+                    addBo.setOrderType(1);
+                    iTopDivideOrderService.insertByAddBo(addBo);
+                }
+                divideLog.setTotalPayMoney(totalPayMoney);
+                //退款待扣分成
+                queryBo1.setRefundTimeStartTime(cal1.getTimeInMillis()/1000);
+                queryBo1.setRefundTimeEndTime(cal2.getTimeInMillis()/1000);
+                List<TopDivideOrderVo> reList = iTopDivideOrderService.getMonthRefundList(queryBo1);
+                //退款待扣分成
+                BigDecimal deductMoney = new BigDecimal(0);
+                for(TopDivideOrderVo vo : reList){
+                    deductMoney = deductMoney.add(vo.getDivideMoney());
+                    TopDivideOrderAddBo addBo = new TopDivideOrderAddBo();
+                    addBo.setDivideLogId(divideLog.getId());
+                    addBo.setOrderSn(vo.getOrderSn());
+                    addBo.setRefundSn(vo.getRefundSn());
+                    addBo.setOrderType(2);
+                    iTopDivideOrderService.insertByAddBo(addBo);
+                }
+                //加上上个月流入待扣分成
+                divideLog.setDeductMoney(divideLog.getDeductMoney().add(deductMoney));
+
+                if(divideLog.getTotalPayMoney().compareTo(divideLog.getDeductMoney()) == 0){
+                    divideLog.setRealDeductMoney(divideLog.getDeductMoney());
+                    divideLog.setUnDeductMoney(new BigDecimal(0));
+                    divideLog.setPayMoney(new BigDecimal(0));
+                }
+                else if(divideLog.getTotalPayMoney().compareTo(divideLog.getDeductMoney()) == -1){
+                    //小于
+                    divideLog.setRealDeductMoney(divideLog.getTotalPayMoney());
+                    divideLog.setUnDeductMoney(divideLog.getDeductMoney().subtract(divideLog.getTotalPayMoney()));
+                    divideLog.setPayMoney(new BigDecimal(0));
+                }
+                else if(divideLog.getTotalPayMoney().compareTo(divideLog.getDeductMoney()) == 1){
+                    //大于
+                    divideLog.setRealDeductMoney(divideLog.getDeductMoney());
+                    divideLog.setUnDeductMoney(new BigDecimal(0));
+                    divideLog.setPayMoney(divideLog.getTotalPayMoney().subtract(divideLog.getDeductMoney()));
+                }
+                iTopDivideLogService.updateById(divideLog);
+            }
+        }
+    }
+
+    @Override
+    public void makeDivideBrokerageMonthBill() {
+        //生成机构佣金
+        // 上月起始
+        Calendar cal1 = new GregorianCalendar();
+        cal1.add(Calendar.MONTH, -1);
+        cal1.set(Calendar.DAY_OF_MONTH, 1);
+        cal1.set(Calendar.HOUR_OF_DAY, 0);
+        cal1.set(Calendar.MINUTE, 0);
+        cal1.set(Calendar.SECOND, 0);
+
+        // 上月末尾
+        Calendar cal2 = Calendar.getInstance();
+        cal2.add(Calendar.MONTH, -1);
+        cal2.set(
+                Calendar.DAY_OF_MONTH, cal2.getActualMaximum(Calendar.DAY_OF_MONTH));
+        cal2.set(Calendar.HOUR_OF_DAY, 23);
+        cal2.set(Calendar.MINUTE, 59);
+        cal2.set(Calendar.SECOND, 59);
+        //所有机构列表
+        SysTenantQueryBo tenantQueryBo = new SysTenantQueryBo();
+        tenantQueryBo.setStatus(1);
+        List< SysTenantVo > companyList = iSysTenantService.queryList(tenantQueryBo);
+        //生成月度记录
+        for(SysTenantVo tenantVo : companyList){
+            TopDivideLog divideLog = new TopDivideLog();
+            divideLog.setTenantId(tenantVo.getTenantId().toString());
+            divideLog.setDivideType(3);
+            divideLog.setPayStatus(2);
+            divideLog.setMonthTime(cal1.getTimeInMillis()/1000);
+            int year = cal1.get(Calendar.YEAR);
+            int month = cal1.get(Calendar.MONTH) + 1;
+            divideLog.setYear(year);
+            divideLog.setMonth(month);
+            divideLog.setCreateTime(DateUtils.getNowTime());
+            divideLog.setUpdateTime(DateUtils.getNowTime());
+            //判断账单是否生成
+            TopDivideLog nowMonth = iTopDivideLogService.getOne(new LambdaQueryWrapper<TopDivideLog>()
+                    .eq(TopDivideLog::getTenantId,tenantVo.getTenantId())
+                    .eq(TopDivideLog::getDivideType,3)
+                    .eq(TopDivideLog::getYear,year)
+                    .eq(TopDivideLog::getMonth,month)
+                    .last("limit 1"));
+            if(Validator.isNotEmpty(nowMonth)){
+                continue;
+            }
+            //获取上个账单
+            LambdaQueryWrapper<TopDivideLog> lqw = Wrappers.lambdaQuery();
+            TopDivideLog divideLogLast = iTopDivideLogService.getOne(lqw.eq(TopDivideLog::getTenantId,tenantVo.getTenantId()).eq(TopDivideLog::getDivideType,1).orderByDesc(TopDivideLog::getId).last("limit 1"));
+            divideLog.setDeductMoney(new BigDecimal(0));
+            if(Validator.isNotEmpty(divideLogLast)){
+                //上个月流入未扣金额
+                divideLog.setDeductMoney(divideLogLast.getUnDeductMoney());
+            }
+            //创建账单
+            if(iTopDivideLogService.save(divideLog)){
+                TopDivideOrderQueryBo queryBo1 = new TopDivideOrderQueryBo();
+                queryBo1.setAccomplishStartTime(cal1.getTimeInMillis()/1000);
+                queryBo1.setAccomplishEndTime(cal2.getTimeInMillis()/1000);
+                queryBo1.setDivideModel(1);
+                queryBo1.setTenantId(tenantVo.getTenantId());
+                //订单总待付分成
+                BigDecimal totalPayMoney = new BigDecimal(0);
+                List<TopDivideOrderVo> list1 = iTopDivideOrderService.getMonthFinishList(queryBo1);
+                for(TopDivideOrderVo vo : list1){
+                    totalPayMoney = totalPayMoney.add(vo.getDivideCompanyMoney());
+                    TopDivideOrderAddBo addBo = new TopDivideOrderAddBo();
+                    addBo.setDivideLogId(divideLog.getId());
+                    addBo.setOrderSn(vo.getOrderSn());
+                    addBo.setOrderType(1);
+                    iTopDivideOrderService.insertByAddBo(addBo);
+                }
+                divideLog.setTotalPayMoney(totalPayMoney);
+                //退款待扣分成
+                queryBo1.setRefundTimeStartTime(cal1.getTimeInMillis()/1000);
+                queryBo1.setRefundTimeEndTime(cal2.getTimeInMillis()/1000);
+                List<TopDivideOrderVo> reList = iTopDivideOrderService.getMonthRefundList(queryBo1);
+                //退款待扣分成
+                BigDecimal deductMoney = new BigDecimal(0);
+                for(TopDivideOrderVo vo : reList){
+                    deductMoney = deductMoney.add(vo.getDivideMoney());
+                    TopDivideOrderAddBo addBo = new TopDivideOrderAddBo();
+                    addBo.setDivideLogId(divideLog.getId());
+                    addBo.setOrderSn(vo.getOrderSn());
+                    addBo.setRefundSn(vo.getRefundSn());
+                    addBo.setOrderType(2);
+                    iTopDivideOrderService.insertByAddBo(addBo);
+                }
+                //加上上个月流入待扣分成
+                divideLog.setDeductMoney(divideLog.getDeductMoney().add(deductMoney));
+
+                if(divideLog.getTotalPayMoney().compareTo(divideLog.getDeductMoney()) == 0){
+                    divideLog.setRealDeductMoney(divideLog.getDeductMoney());
+                    divideLog.setUnDeductMoney(new BigDecimal(0));
+                    divideLog.setPayMoney(new BigDecimal(0));
+                }
+                else if(divideLog.getTotalPayMoney().compareTo(divideLog.getDeductMoney()) == -1){
+                    //小于
+                    divideLog.setRealDeductMoney(divideLog.getTotalPayMoney());
+                    divideLog.setUnDeductMoney(divideLog.getDeductMoney().subtract(divideLog.getTotalPayMoney()));
+                    divideLog.setPayMoney(new BigDecimal(0));
+                }
+                else if(divideLog.getTotalPayMoney().compareTo(divideLog.getDeductMoney()) == 1){
+                    //大于
+                    divideLog.setRealDeductMoney(divideLog.getDeductMoney());
+                    divideLog.setUnDeductMoney(new BigDecimal(0));
+                    divideLog.setPayMoney(divideLog.getTotalPayMoney().subtract(divideLog.getDeductMoney()));
+                }
+                iTopDivideLogService.updateById(divideLog);
+
+            }
+        }
+    }
+
     @Override
     public void closeTimeOutOrder() {
         OrderQueryBo bo = new OrderQueryBo();

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopDivideOrderQueryBo.java

@@ -87,4 +87,10 @@ public class TopDivideOrderQueryBo extends BaseEntity {
 
 	@ApiModelProperty("下单结束时间")
 	private Long buyEndTime;
+
+	@ApiModelProperty("业务号")
+	private String createNo;
+
+	@ApiModelProperty("类型 1机构分成 2业务员提成  3佣金结算")
+	private Integer divideType;
 }

+ 8 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/mapper/TopDivideOrderMapper.java

@@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.zhongzheng.modules.top.financial.bo.TopDivideLogQueryBo;
 import com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo;
 import com.zhongzheng.modules.top.financial.domain.TopDivideOrder;
+import com.zhongzheng.modules.top.financial.vo.TopCreateUserVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideLogVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo;
+import com.zhongzheng.modules.top.order.domain.TopOrderBankPay;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -29,4 +31,10 @@ public interface TopDivideOrderMapper extends BaseMapper<TopDivideOrder> {
     List<TopDivideOrderVo> getMonthRefundList(TopDivideOrderQueryBo bo);
 
     BigDecimal getMonthBadSum(TopDivideOrderQueryBo bo);
+
+    List<TopCreateUserVo> getMonthFinishAllSeller(TopDivideOrderQueryBo bo);
+
+    TopDivideOrderVo getByOrderSn(TopDivideOrderQueryBo bo);
+
+    Integer updateCheckStatusById(TopOrderBankPay bankPay);
 }

+ 10 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/ITopDivideOrderService.java

@@ -6,8 +6,10 @@ import com.zhongzheng.modules.top.financial.bo.TopDivideOrderAddBo;
 import com.zhongzheng.modules.top.financial.bo.TopDivideOrderEditBo;
 import com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo;
 import com.zhongzheng.modules.top.financial.domain.TopDivideOrder;
+import com.zhongzheng.modules.top.financial.vo.TopCreateUserVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideLogVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo;
+import com.zhongzheng.modules.top.order.domain.TopOrderBankPay;
 
 import java.math.BigDecimal;
 import java.util.Collection;
@@ -63,4 +65,12 @@ public interface ITopDivideOrderService extends IService<TopDivideOrder> {
 
 	BigDecimal getMonthBadSum(TopDivideOrderQueryBo bo);
 
+	List<TopCreateUserVo> getMonthFinishAllSeller(TopDivideOrderQueryBo bo);
+
+	TopDivideOrderVo getByOrderSn(TopDivideOrderQueryBo bo);
+
+	List<TopDivideOrderVo> getFinishList(TopDivideOrderQueryBo bo);
+
+	Integer updateCheckStatusById(TopOrderBankPay bankPay);
+
 }

+ 9 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopDivideLogServiceImpl.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.modules.system.bo.SysTenantBadBillConfigBo;
+import com.zhongzheng.modules.system.service.ISysTenantService;
+import com.zhongzheng.modules.system.vo.SysTenantVo;
 import com.zhongzheng.modules.top.financial.bo.TopDivideLogAddBo;
 import com.zhongzheng.modules.top.financial.bo.TopDivideLogEditBo;
 import com.zhongzheng.modules.top.financial.bo.TopDivideLogQueryBo;
@@ -43,10 +45,16 @@ public class TopDivideLogServiceImpl extends ServiceImpl<TopDivideLogMapper, Top
     @Autowired
     private ITopSysConfigService topConfigService;
 
+    @Autowired
+    private ISysTenantService iSysTenantService;
+
     @Override
     public TopDivideLogVo queryById(Long id){
         TopDivideLog db = this.baseMapper.selectById(id);
-        return BeanUtil.toBean(db, TopDivideLogVo.class);
+        SysTenantVo tenantVo = iSysTenantService.queryById(Long.parseLong(db.getTenantId()));
+        TopDivideLogVo divideLogVo = BeanUtil.toBean(db, TopDivideLogVo.class);
+        divideLogVo.setTenantName(tenantVo.getTenantName());
+        return divideLogVo;
     }
 
     @Override

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopDivideOrderServiceImpl.java

@@ -10,8 +10,10 @@ import com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo;
 import com.zhongzheng.modules.top.financial.domain.TopDivideOrder;
 import com.zhongzheng.modules.top.financial.mapper.TopDivideOrderMapper;
 import com.zhongzheng.modules.top.financial.service.ITopDivideOrderService;
+import com.zhongzheng.modules.top.financial.vo.TopCreateUserVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideLogVo;
 import com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo;
+import com.zhongzheng.modules.top.order.domain.TopOrderBankPay;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -139,4 +141,24 @@ public class TopDivideOrderServiceImpl extends ServiceImpl<TopDivideOrderMapper,
     public BigDecimal getMonthBadSum(TopDivideOrderQueryBo bo) {
         return baseMapper.getMonthBadSum(bo);
     }
+
+    @Override
+    public List<TopCreateUserVo> getMonthFinishAllSeller(TopDivideOrderQueryBo bo) {
+        return baseMapper.getMonthFinishAllSeller(bo);
+    }
+
+    @Override
+    public TopDivideOrderVo getByOrderSn(TopDivideOrderQueryBo bo) {
+        return baseMapper.getByOrderSn(bo);
+    }
+
+    @Override
+    public List<TopDivideOrderVo> getFinishList(TopDivideOrderQueryBo bo) {
+        return baseMapper.getFinishList(bo);
+    }
+
+    @Override
+    public Integer updateCheckStatusById(TopOrderBankPay bankPay) {
+        return baseMapper.updateCheckStatusById(bankPay);
+    }
 }

+ 35 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopCreateUserVo.java

@@ -0,0 +1,35 @@
+package com.zhongzheng.modules.top.financial.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+
+/**
+ * 分成记录视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2023-05-09
+ */
+@Data
+@ApiModel("分成记录视图对象")
+public class TopCreateUserVo {
+	private static final long serialVersionUID = 1L;
+
+
+	/** 业务号 */
+	@Excel(name = "业务号")
+	@ApiModelProperty("业务号")
+	private String createNo;
+	@ApiModelProperty("业务员名称")
+	private String createUsername;
+	@ApiModelProperty("企业ID")
+	private Long tenantId;
+
+
+
+}

+ 5 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopDivideOrderVo.java

@@ -79,5 +79,10 @@ public class TopDivideOrderVo {
 	private BigDecimal divideMoney;
 	@ApiModelProperty("退款单号")
 	private String refundSn;
+	/** 类型 1机构分成 2业务员提成  3佣金结算 */
+	@ApiModelProperty("类型 1机构分成 2业务员提成  3佣金结算")
+	private Integer divideType;
+	@ApiModelProperty("退款时间")
+	private Long refundTime;
 
 }

+ 29 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopBadBillTimeBo.java

@@ -0,0 +1,29 @@
+package com.zhongzheng.modules.top.goods.bo;
+
+import com.zhongzheng.common.annotation.Excel;
+import com.zhongzheng.common.core.domain.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * 订单分页查询对象 top_order
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("订单分页查询对象")
+public class TopBadBillTimeBo extends BaseEntity {
+
+
+	private Long startTime;
+
+	private Long endTime;
+
+}

+ 6 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderQueryBo.java

@@ -95,4 +95,10 @@ public class TopOldOrderQueryBo extends BaseEntity {
 	private Long roleId;
 	@ApiModelProperty("统计类型 1应收账款 2机构分成 3业务员提成 4佣金结算")
 	private Integer totalType;
+	@ApiModelProperty("是否查询坏账 1坏账 2非坏账")
+	private Integer badBill;
+
+	private List<TopBadBillTimeBo> badBillList;
+
+
 }

+ 35 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderCheckLogServiceImpl.java

@@ -8,6 +8,12 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhongzheng.common.exception.CustomException;
 import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo;
+import com.zhongzheng.modules.top.financial.domain.TopDivideLog;
+import com.zhongzheng.modules.top.financial.domain.TopDivideOrder;
+import com.zhongzheng.modules.top.financial.service.ITopDivideLogService;
+import com.zhongzheng.modules.top.financial.service.ITopDivideOrderService;
+import com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo;
 import com.zhongzheng.modules.top.goods.bo.TopOldOrderCheckLogAddBo;
 import com.zhongzheng.modules.top.goods.bo.TopOldOrderCheckLogEditBo;
 import com.zhongzheng.modules.top.goods.bo.TopOldOrderCheckLogQueryBo;
@@ -48,6 +54,12 @@ public class TopOldOrderCheckLogServiceImpl extends ServiceImpl<TopOldOrderCheck
     @Autowired
     private ITopOldOrderService iTopOldOrderService;
 
+    @Autowired
+    private ITopDivideOrderService iTopDivideOrderService;
+
+    @Autowired
+    private ITopDivideLogService iTopDivideLogService;
+
     @Override
     public TopOldOrderCheckLogVo queryById(Long id){
         TopOldOrderCheckLog db = this.baseMapper.selectById(id);
@@ -181,6 +193,29 @@ public class TopOldOrderCheckLogServiceImpl extends ServiceImpl<TopOldOrderCheck
             if (ObjectUtils.isNotNull(check)) {
                 check.setCheckSign(1);//开启当前流程
                 updateById(check);
+                TopDivideOrderQueryBo orderQueryBo = new TopDivideOrderQueryBo();
+                orderQueryBo.setOrderSn(checkLog.getOrderSn());
+                orderQueryBo.setDivideType(checkLog.getCheckFrom()-1);
+                TopDivideOrderVo orderVo = iTopDivideOrderService.getByOrderSn(orderQueryBo);
+                if(Validator.isEmpty(orderVo)){
+                    throw new CustomException("月份账单数据缺失");
+                }
+                TopDivideOrderQueryBo queryBo = new TopDivideOrderQueryBo();
+                queryBo.setDivideLogId(orderVo.getDivideLogId());
+                List<TopDivideOrderVo> listOrder = iTopDivideOrderService.getFinishList(queryBo);
+                boolean allWaitPay = true;
+                for(TopDivideOrderVo divideOrderVo : listOrder){
+                    if(divideOrderVo.getCheckStatus()!=2){
+                        allWaitPay = false;
+                    }
+                }
+                if(allWaitPay){
+                    TopDivideLog divideLog = new TopDivideLog();
+                    divideLog.setId(orderVo.getDivideLogId());
+                    divideLog.setPayStatus(0);
+                    divideLog.setUpdateTime(DateUtils.getNowTime());
+                    iTopDivideLogService.updateById(divideLog);
+                }
             }
         }
         iTopOldOrderService.update(new LambdaUpdateWrapper<TopOldOrder>()

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

@@ -52,10 +52,7 @@ import com.zhongzheng.modules.top.financial.bo.*;
 import com.zhongzheng.modules.top.financial.domain.*;
 import com.zhongzheng.modules.order.service.IOrderService;
 import com.zhongzheng.modules.top.financial.domain.TopCostTp;
-import com.zhongzheng.modules.top.financial.service.ITopCostTpItemService;
-import com.zhongzheng.modules.top.financial.service.ITopCostTpService;
-import com.zhongzheng.modules.top.financial.service.ITopDivideLogService;
-import com.zhongzheng.modules.top.financial.service.ITopOldSellerDiscountService;
+import com.zhongzheng.modules.top.financial.service.*;
 import com.zhongzheng.modules.top.financial.vo.*;
 import com.zhongzheng.modules.top.goods.bo.*;
 import com.zhongzheng.modules.top.goods.domain.*;
@@ -184,6 +181,9 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
     @Autowired
     private ITopDivideLogService iTopDivideLogService;
 
+    @Autowired
+    private ITopDivideOrderService iTopDivideOrderService;
+
     @Autowired
     private ITopOrderBankPayService topOrderBankPayService;
 
@@ -2576,23 +2576,32 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         if(Validator.isEmpty(bankPay)){
             throw new CustomException("支付单号错误");
         }
-        TopOldOrder order = getOne(new LambdaQueryWrapper<TopOldOrder>()
+        if(Validator.isEmpty(bankPay.getDivideLogId())){
+            throw new CustomException("参数错误");
+        }
+        TopDivideLog divideLog = iTopDivideLogService.getOne(new LambdaQueryWrapper<TopDivideLog>()
+                .eq(TopDivideLog::getId, bankPay.getDivideLogId()));
+     /*   TopOldOrder order = getOne(new LambdaQueryWrapper<TopOldOrder>()
                 .eq(TopOldOrder::getOrderSn, bankPay.getOrderSn()).last("limit 1"));
         if(Validator.isEmpty(order)||order.getDivideStatus()!=6){
            throw new CustomException("订单非法操作");
-        }
+        }*/
         if(bo.getStatus()==1){
+            //支付成功
             bankPay.setResultStatus(1);
-            order.setDivideStatus(7);
+            divideLog.setPayStatus(1);
+            divideLog.setPayTime(DateUtils.getNowTime());
+            iTopDivideOrderService.updateCheckStatusById(bankPay);
+
         }
         if(bo.getStatus()==0){
             bankPay.setResultStatus(-1);
-            order.setDivideStatus(8);
+            divideLog.setPayStatus(4);
+            divideLog.setPayTime(DateUtils.getNowTime());
         }
         bankPay.setUpdateTime(DateUtils.getNowTime());
         iTopOrderBankPayService.updateById(bankPay);
-        order.setUpdateTime(DateUtils.getNowTime());
-        updateById(order);
+        iTopDivideLogService.updateById(divideLog);
         return true;
     }
 
@@ -2663,8 +2672,68 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
 
     @Override
     public List<TopOldOrderVo> queryReceiveList(TopOldOrderQueryBo bo) {
-        List<TopOldOrderVo> list = this.baseMapper.queryReceiveList(bo);
         String badBillJson = topConfigService.selectConfigByKeyNoCache("bad_bill");
+        Calendar c = Calendar.getInstance();
+        c.add(Calendar.YEAR, -1);
+        Long year1 = c.getTimeInMillis()/1000;
+        c.add(Calendar.YEAR, -1);
+        Long year2 = c.getTimeInMillis()/1000;
+        c.add(Calendar.YEAR, -1);
+        Long year3 = c.getTimeInMillis()/1000;
+        c.add(Calendar.YEAR, -1);
+        Long year4 = c.getTimeInMillis()/1000;
+        c.add(Calendar.YEAR, -1);
+        Long year5 = c.getTimeInMillis()/1000;
+        c.add(Calendar.YEAR, -50);
+        Long year50 = c.getTimeInMillis()/1000;
+        if(Validator.isEmpty(badBillJson)){
+            bo.setBadBill(null);
+        }else{
+            List<TopBadBillTimeBo> badBillList = new ArrayList<>();
+            List<SysTenantBadBillConfigBo> configList = JSONArray.parseArray(badBillJson, SysTenantBadBillConfigBo.class);
+            for(SysTenantBadBillConfigBo configBo : configList){
+                if(configBo.getYearType()==1){
+                    TopBadBillTimeBo timeBo = new TopBadBillTimeBo();
+                    timeBo.setStartTime(year50);
+                    timeBo.setEndTime(year1);
+                    badBillList.add(timeBo);
+                }
+                if(configBo.getYearType()==2){
+                    TopBadBillTimeBo timeBo = new TopBadBillTimeBo();
+                    timeBo.setStartTime(year2);
+                    timeBo.setEndTime(year1);
+                    badBillList.add(timeBo);
+                }
+                if(configBo.getYearType()==3){
+                    TopBadBillTimeBo timeBo = new TopBadBillTimeBo();
+                    timeBo.setStartTime(year3);
+                    timeBo.setEndTime(year2);
+                    badBillList.add(timeBo);
+                }
+                if(configBo.getYearType()==4){
+                    TopBadBillTimeBo timeBo = new TopBadBillTimeBo();
+                    timeBo.setStartTime(year4);
+                    timeBo.setEndTime(year3);
+                    badBillList.add(timeBo);
+                }
+                if(configBo.getYearType()==5){
+                    TopBadBillTimeBo timeBo = new TopBadBillTimeBo();
+                    timeBo.setStartTime(year5);
+                    timeBo.setEndTime(year4);
+                    badBillList.add(timeBo);
+                }
+                if(configBo.getYearType()==6){
+                    TopBadBillTimeBo timeBo = new TopBadBillTimeBo();
+                    timeBo.setStartTime(year50);
+                    timeBo.setEndTime(year5);
+                    badBillList.add(timeBo);
+                }
+            }
+            bo.setBadBillList(badBillList);
+        }
+
+        List<TopOldOrderVo> list = this.baseMapper.queryReceiveList(bo);
+
         for (TopOldOrderVo vo : list) {
             if (vo.getCreditStatus() == 0 && Validator.isNotEmpty(vo.getPredictReceiveTime())) {
                 Integer predictDay = DateUtils.dayBetween(vo.getPredictReceiveTime(), DateUtils.getNowTime());
@@ -2675,17 +2744,6 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
             }else{
                 List<SysTenantBadBillConfigBo> configList = JSONArray.parseArray(badBillJson, SysTenantBadBillConfigBo.class);
                 for(SysTenantBadBillConfigBo configBo : configList){
-                    Calendar c = Calendar.getInstance();
-                    c.add(Calendar.YEAR, -1);
-                    Long year1 = c.getTimeInMillis()/1000;
-                    c.add(Calendar.YEAR, -1);
-                    Long year2 = c.getTimeInMillis()/1000;
-                    c.add(Calendar.YEAR, -1);
-                    Long year3 = c.getTimeInMillis()/1000;
-                    c.add(Calendar.YEAR, -1);
-                    Long year4 = c.getTimeInMillis()/1000;
-                    c.add(Calendar.YEAR, -1);
-                    Long year5 = c.getTimeInMillis()/1000;
                     if(Validator.isNotEmpty(vo.getBuyTime())){
                         if(configBo.getYearType()==1){
                             if(vo.getBuyTime()<year1){
@@ -2727,13 +2785,117 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
 
     @Override
     public List<TopOldOrderExportVo> queryReceiveListExport(TopOldOrderQueryBo bo) {
+        String badBillJson = topConfigService.selectConfigByKeyNoCache("bad_bill");
+        Calendar c = Calendar.getInstance();
+        c.add(Calendar.YEAR, -1);
+        Long year1 = c.getTimeInMillis()/1000;
+        c.add(Calendar.YEAR, -1);
+        Long year2 = c.getTimeInMillis()/1000;
+        c.add(Calendar.YEAR, -1);
+        Long year3 = c.getTimeInMillis()/1000;
+        c.add(Calendar.YEAR, -1);
+        Long year4 = c.getTimeInMillis()/1000;
+        c.add(Calendar.YEAR, -1);
+        Long year5 = c.getTimeInMillis()/1000;
+        c.add(Calendar.YEAR, -50);
+        Long year50 = c.getTimeInMillis()/1000;
+        if(Validator.isEmpty(badBillJson)){
+            bo.setBadBill(null);
+        }else{
+            List<TopBadBillTimeBo> badBillList = new ArrayList<>();
+            List<SysTenantBadBillConfigBo> configList = JSONArray.parseArray(badBillJson, SysTenantBadBillConfigBo.class);
+            for(SysTenantBadBillConfigBo configBo : configList){
+                if(configBo.getYearType()==1){
+                    TopBadBillTimeBo timeBo = new TopBadBillTimeBo();
+                    timeBo.setStartTime(year50);
+                    timeBo.setEndTime(year1);
+                    badBillList.add(timeBo);
+                }
+                if(configBo.getYearType()==2){
+                    TopBadBillTimeBo timeBo = new TopBadBillTimeBo();
+                    timeBo.setStartTime(year2);
+                    timeBo.setEndTime(year1);
+                    badBillList.add(timeBo);
+                }
+                if(configBo.getYearType()==3){
+                    TopBadBillTimeBo timeBo = new TopBadBillTimeBo();
+                    timeBo.setStartTime(year3);
+                    timeBo.setEndTime(year2);
+                    badBillList.add(timeBo);
+                }
+                if(configBo.getYearType()==4){
+                    TopBadBillTimeBo timeBo = new TopBadBillTimeBo();
+                    timeBo.setStartTime(year4);
+                    timeBo.setEndTime(year3);
+                    badBillList.add(timeBo);
+                }
+                if(configBo.getYearType()==5){
+                    TopBadBillTimeBo timeBo = new TopBadBillTimeBo();
+                    timeBo.setStartTime(year5);
+                    timeBo.setEndTime(year4);
+                    badBillList.add(timeBo);
+                }
+                if(configBo.getYearType()==6){
+                    TopBadBillTimeBo timeBo = new TopBadBillTimeBo();
+                    timeBo.setStartTime(year50);
+                    timeBo.setEndTime(year5);
+                    badBillList.add(timeBo);
+                }
+            }
+            bo.setBadBillList(badBillList);
+        }
+
         List<TopOldOrderExportVo> listExport = new ArrayList<>();
         List<TopOldOrderVo> list = this.baseMapper.queryReceiveList(bo);
         for (TopOldOrderVo vo : list) {
+            TopOldOrderExportVo exportVo = BeanUtil.toBean(vo, TopOldOrderExportVo.class);
+            exportVo.setBuyTime(DateUtils.timestampToDate(vo.getBuyTime()));
+            exportVo.setPredictReceiveTime(DateUtils.timestampToDate(vo.getPredictReceiveTime()));
             if (vo.getCreditStatus() == 0 && Validator.isNotEmpty(vo.getPredictReceiveTime())) {
                 Integer predictDay = DateUtils.dayBetween(vo.getPredictReceiveTime(), DateUtils.getNowTime());
-                vo.setPredictReceiveDay(predictDay);
+                exportVo.setPredictReceiveDay(predictDay);
+            }
+            if(Validator.isEmpty(badBillJson)){
+                exportVo.setBadBill("否");
+            }else{
+                List<SysTenantBadBillConfigBo> configList = JSONArray.parseArray(badBillJson, SysTenantBadBillConfigBo.class);
+                for(SysTenantBadBillConfigBo configBo : configList){
+                    if(Validator.isNotEmpty(vo.getBuyTime())){
+                        if(configBo.getYearType()==1){
+                            if(vo.getBuyTime()<year1){
+                                exportVo.setBadBill("是");
+                            }
+                        }
+                        if(configBo.getYearType()==2){
+                            if(vo.getBuyTime()<year1&&vo.getBuyTime()>year2){
+                                exportVo.setBadBill("是");
+                            }
+                        }
+                        if(configBo.getYearType()==3){
+                            if(vo.getBuyTime()<year2&&vo.getBuyTime()>year3){
+                                exportVo.setBadBill("是");
+                            }
+                        }
+                        if(configBo.getYearType()==4){
+                            if(vo.getBuyTime()<year3&&vo.getBuyTime()>year4){
+                                exportVo.setBadBill("是");
+                            }
+                        }
+                        if(configBo.getYearType()==5){
+                            if(vo.getBuyTime()<year4&&vo.getBuyTime()>year5){
+                                exportVo.setBadBill("是");
+                            }
+                        }
+                        if(configBo.getYearType()==6){
+                            if(vo.getBuyTime()<year5){
+                                exportVo.setBadBill("是");
+                            }
+                        }
+                    }
+
+                }
             }
+            listExport.add(exportVo);
         }
         return listExport;
     }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderBankPayAddBo.java

@@ -67,6 +67,6 @@ public class TopOrderBankPayAddBo {
 
     private Long loginId;
 
-    @ApiModelProperty("分成记录ID")
+    @ApiModelProperty("分成月份记录ID")
     private Long divideLogId;
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOrderBankPay.java

@@ -56,4 +56,5 @@ private static final long serialVersionUID=1L;
     private Integer resultStatus;
     private String tenantId;
     private String payUsername;
+    private Long divideLogId;
 }

+ 29 - 37
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOrderBankPayServiceImpl.java

@@ -10,6 +10,8 @@ import com.zhongzheng.common.utils.DateUtils;
 import com.zhongzheng.common.utils.ToolsUtils;
 import com.zhongzheng.common.utils.http.HttpUtils;
 import com.zhongzheng.modules.order.domain.OrderGoods;
+import com.zhongzheng.modules.top.financial.domain.TopDivideLog;
+import com.zhongzheng.modules.top.financial.service.ITopDivideLogService;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
 import com.zhongzheng.modules.top.goods.domain.TopOldOrderCheckLog;
 import com.zhongzheng.modules.top.goods.service.ITopOldOrderCheckLogService;
@@ -58,6 +60,9 @@ public class TopOrderBankPayServiceImpl extends ServiceImpl<TopOrderBankPayMappe
     @Autowired
     private ITopSysUserRoleService topSysUserRoleService;
 
+    @Autowired
+    private ITopDivideLogService iTopDivideLogService;
+
     @Value("${oldSys.host}")
     private String OLD_SYS_HOST;
 
@@ -142,7 +147,7 @@ public class TopOrderBankPayServiceImpl extends ServiceImpl<TopOrderBankPayMappe
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean payToCompany(TopOrderBankPayAddBo bo) {
-        if(Validator.isEmpty(bo.getOrderSn())||Validator.isEmpty(bo.getTenantId())||Validator.isEmpty(bo.getDivideModel())){
+        if(Validator.isEmpty(bo.getDivideLogId())||Validator.isEmpty(bo.getTenantId())){
             throw new CustomException("参数错误");
         }
         if(Validator.isEmpty(bo.getToBankAcount())||Validator.isEmpty(bo.getToBankName())||Validator.isEmpty(bo.getToBankTypeName())){
@@ -153,39 +158,32 @@ public class TopOrderBankPayServiceImpl extends ServiceImpl<TopOrderBankPayMappe
         if (CollectionUtils.isEmpty(userRoleList) && !bo.getLoginName().equals("admin")) {
             throw new CustomException("当前账号没有审核权限");
         }
-        Integer checkFrom = bo.getDivideModel()+1;
         List<Long> roleIds = userRoleList.stream().map(TopSysUserRole::getRoleId).collect(Collectors.toList());
-        TopOldOrderCheckLog checkLog = iTopOldOrderCheckLogService.getOne(new LambdaQueryWrapper<TopOldOrderCheckLog>()
-                .eq(TopOldOrderCheckLog::getOrderSn, bo.getOrderSn()).eq(TopOldOrderCheckLog::getStatus, 1)
-                .eq(TopOldOrderCheckLog::getCheckSign, 1)
-                .eq(TopOldOrderCheckLog::getCheckFrom, checkFrom).last("limit 1"));
-        if(Validator.isEmpty(checkLog)){
+        TopDivideLog divideLog = iTopDivideLogService.getOne(new LambdaQueryWrapper<TopDivideLog>()
+                .eq(TopDivideLog::getId, bo.getDivideLogId()));
+
+        if(Validator.isEmpty(divideLog)){
             throw new CustomException("审核数据错误");
         }
-        if (!roleIds.contains(checkLog.getRoleId()) && !bo.getLoginName().equals("admin") ) {
-            throw new CustomException("当前账号没有审核权限");
+        if(divideLog.getPayStatus()!=0){
+            throw new CustomException("非待支付状态");
         }
-
-        TopOldOrder order = iTopOldOrderService.getOne(new LambdaQueryWrapper<TopOldOrder>()
-                .eq(TopOldOrder::getOrderSn, bo.getOrderSn())
-                .eq(TopOldOrder::getTenantId, bo.getTenantId()).last("limit 1"));
-        if(Validator.isEmpty(order)||order.getDivideStatus()!=5){
-            throw new CustomException("订单数据错误无法支付");
+        if (!bo.getLoginName().equals("admin") ) {
+            throw new CustomException("当前账号没有审核权限");
         }
-
-        TopOldOrderCheckLog check = iTopOldOrderCheckLogService.getOne(new LambdaQueryWrapper<TopOldOrderCheckLog>()
-                .eq(TopOldOrderCheckLog::getOrderSn, bo.getOrderSn())
-                .eq(TopOldOrderCheckLog::getType, 6)//分成支付
-                .eq(TopOldOrderCheckLog::getStatus, 1)
-                .eq(TopOldOrderCheckLog::getCheckFrom, checkFrom)
-                .eq(TopOldOrderCheckLog::getCheckSign, 1)
-                .eq(TopOldOrderCheckLog::getCheckStatus, 2)
-                .last("limit 1"));
-        if(Validator.isEmpty(check)){
-            throw new CustomException("当前订单未审核通过");
+        /*if (!roleIds.contains(checkLog.getRoleId()) && !bo.getLoginName().equals("admin") ) {
+            throw new CustomException("当前账号没有审核权限");
+        }*/
+        if(divideLog.getPayMoney().compareTo(BigDecimal.ZERO)==0){
+            //免费
+            divideLog.setPayStatus(1);
+            divideLog.setPayTime(DateUtils.getNowTime());
+            divideLog.setUpdateTime(DateUtils.getNowTime());
+            iTopDivideLogService.updateById(divideLog);
+            return true;
         }
 
-        bo.setTrainOrgId(order.getTenantId().toString());//旧机构ID
+        bo.setTrainOrgId(divideLog.getTenantId().toString());//旧机构ID
         String paySn = DateUtils.getTagOrderSn("CP");
         TopOrderBankPay add = BeanUtil.toBean(bo, TopOrderBankPay.class);
         add.setPaySn(paySn);
@@ -195,13 +193,9 @@ public class TopOrderBankPayServiceImpl extends ServiceImpl<TopOrderBankPayMappe
         add.setResultStatus(0);
         add.setPayUsername(bo.getLoginName());
         add.setType(1);//分成
+        add.setDivideLogId(bo.getDivideLogId());
         BigDecimal money = null;
-        if(bo.getDivideModel()==1){
-            money =order.getDivideCompanyMoney();
-        }
-        if(bo.getDivideModel()==2){
-            money =order.getDivideSellerMoney();
-        }
+        money =divideLog.getPayMoney();
         add.setMoney(money);
         Map<String, String> params = new HashMap<>();
         Long nowTime = DateUtils.getNowTime();
@@ -235,10 +229,8 @@ public class TopOrderBankPayServiceImpl extends ServiceImpl<TopOrderBankPayMappe
             throw new CustomException("同步请求错误"+e.getMessage());
         }
         if(this.save(add)){
-            order.setDivideStatus(6);//支付中
-            iTopOldOrderService.updateById(order);
-            check.setCheckStatus(3);
-            iTopOldOrderCheckLogService.updateById(check);
+            divideLog.setPayStatus(3);//支付中
+            iTopDivideLogService.updateById(divideLog);
             return  true;
         }
         return false;

+ 23 - 155
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOldOrderExportVo.java

@@ -21,181 +21,49 @@ import java.util.List;
 public class TopOldOrderExportVo {
 	private static final long serialVersionUID = 1L;
 
+	@Excel(name = "坏账")
+	@ApiModelProperty("是否坏账")
+	private String badBill;
 
+	/** 下单时间 */
+	@Excel(name = "下单时间")
+	@ApiModelProperty("下单时间")
+	private String buyTime;
 
 	/** 订单编号 */
 	@Excel(name = "订单编号")
 	@ApiModelProperty("订单编号")
 	private String orderSn;
 
-	/** 订单标准价格 */
-	@Excel(name = "订单标准价格")
-	@ApiModelProperty("订单标准价格")
-	private BigDecimal orderPrice;
-	/** 支付订单号 */
-	@Excel(name = "支付订单号")
-	@ApiModelProperty("支付订单号")
-	private String orderGeneral;
-	/** 订单状态 -2 超时关闭,-1手动关闭,0待支付,1已支付 3部分已退款 4完全退款 */
-	@Excel(name = "订单状态 -2 超时关闭,-1手动关闭,0待支付,1已支付 3部分已退款 4完全退款")
-	@ApiModelProperty("订单状态 -2 超时关闭,-1手动关闭,0待支付,1已支付 3部分已退款 4完全退款")
-	private Integer orderStatus;
-	/** 支付时间 */
-	@Excel(name = "支付时间")
-	@ApiModelProperty("支付时间")
-	private Long payTime;
-	/** 支付平台  */
-	@Excel(name = "支付平台 ")
-	@ApiModelProperty("支付平台 ")
-	private Integer payType;
-	/** 微信流水号 */
-	@Excel(name = "微信流水号")
-	@ApiModelProperty("微信流水号")
-	private String transid;
-	/** 关闭时间 */
-	@Excel(name = "关闭时间")
-	@ApiModelProperty("关闭时间")
-	private Long cancelTime;
-	/** 订单完成时间 */
-	@Excel(name = "订单完成时间")
-	@ApiModelProperty("订单完成时间")
-	private Long finishTime;
-	/** 订单类型   1线上,2线下 */
-	@Excel(name = "订单类型   1线上,2线下")
-	@ApiModelProperty("订单类型   1线上,2线下")
-	private Integer orderType;
-	/** 支付价格(成交价) */
-	@Excel(name = "支付价格(成交价)")
-	@ApiModelProperty("支付价格(成交价)")
-	private BigDecimal payPrice;
-	/** 订单来源 1新系统C端订单,2旧系统C端订单,3旧系统B端订单  */
-	@Excel(name = "订单来源 1新系统C端订单,2旧系统C端订单,3旧系统B端订单 ")
-	@ApiModelProperty("订单来源 1新系统C端订单,2旧系统C端订单,3旧系统B端订单 ")
-	private Integer orderFrom;
+	@Excel(name = "机构名称")
+	@ApiModelProperty("机构名称")
+	private String tenantName;
 	/** 业务员名称 */
-	@Excel(name = "业务员名称")
+	@Excel(name = "业务员")
 	@ApiModelProperty("业务员名称")
 	private String createUsername;
-	/** 1有效 0无效 */
-	@Excel(name = "1有效 0无效")
-	@ApiModelProperty("1有效 0无效")
-	private Integer status;
-	/** 业务员名称ID */
-	@Excel(name = "业务员名称ID")
-	@ApiModelProperty("业务员名称ID")
-	private Long createSysUserId;
 	/** 业务号 */
 	@Excel(name = "业务号")
 	@ApiModelProperty("业务号")
 	private String createNo;
-	/** 录单订单编号 */
-	@Excel(name = "录单订单编号")
-	@ApiModelProperty("录单订单编号")
-	private String inputOrderSn;
-	/** 支付状态 0未收费,1部分付款  2完全付款 3免费 */
-	@Excel(name = "支付状态 0未收费,1部分付款  2完全付款 3免费")
-	@ApiModelProperty("支付状态 0未收费,1部分付款  2完全付款 3免费")
-	private Integer payStatus;
-	/** 审核状态:0待审核,1已通过,2未通过,3已撤销 */
-	@Excel(name = "审核状态:0待审核,1已通过,2未通过,3已撤销")
-	@ApiModelProperty("审核状态:0待审核,1已通过,2未通过,3已撤销")
-	private Integer checkStatus;
-	/** 审核意见 */
-	@ApiModelProperty("审核意见")
-	private String checkReason;
-	/** 退款状态:0待审核,1未通过,2未退款,3已完成 */
-	@Excel(name = "退款状态:0待审核,1未通过,2未退款,3已完成")
-	@ApiModelProperty("退款状态:0待审核,1未通过,2未退款,3已完成")
-	private Integer refundStatus;
-	/** 账款状态:0未结清,1已结清 */
-	@Excel(name = "账款状态:0未结清,1已结清")
-	@ApiModelProperty("账款状态:0未结清,1已结清")
-	private Integer creditStatus;
-	/** 发票状态:0未开票,1已开票 */
-	@Excel(name = "发票状态:0未开票,1已开票")
-	@ApiModelProperty("发票状态:0未开票,1已开票")
-	private Integer invoiceStatus;
-	/** 盈亏(元) */
-	@Excel(name = "盈亏" , readConverterExp = "元=")
-	@ApiModelProperty("盈亏(元)")
-	private BigDecimal orderProfit;
-	/** 成本(元) */
-	@Excel(name = "成本" , readConverterExp = "元=")
-	@ApiModelProperty("成本(元)")
-	private BigDecimal orderCost;
-	/** 退款(元) */
-	@Excel(name = "退款" , readConverterExp = "元=")
-	@ApiModelProperty("退款(元)")
-	private BigDecimal orderRefund;
-	/** 已退(元) */
-	@Excel(name = "已退" , readConverterExp = "元=")
-	@ApiModelProperty("已退(元)")
-	private BigDecimal orderRefunded;
-	/** 未收账款(元) */
-	@Excel(name = "未收账款" , readConverterExp = "元=")
-	@ApiModelProperty("未收账款(元)")
-	private BigDecimal orderUncollected;
+	/** 订单标准价格 */
+	@Excel(name = "合同金额(元)")
+	@ApiModelProperty("订单标准价格")
+	private BigDecimal orderPrice;
 	/** 实收账款(元) */
-	@Excel(name = "实收账款" , readConverterExp = "元=")
+	@Excel(name = "已收账款(元)")
 	@ApiModelProperty("实收账款(元)")
 	private BigDecimal orderReceived;
-	/** 备注 */
-	@Excel(name = "备注")
-	@ApiModelProperty("备注")
-	private String remark;
-	/** 业务分类 */
-	@Excel(name = "业务分类")
-	@ApiModelProperty("业务分类")
-	private String orderBusiness;
-	/** 成本设置 */
-	@Excel(name = "成本设置")
-	@ApiModelProperty("成本设置")
-	private String costJson;
-	/** 订单来源系统名称 */
-	@ApiModelProperty("订单来源系统名称")
-	private String orderOrg;
-	/** 业务员机构 */
-	@ApiModelProperty("业务员机构")
-	private Integer createOrg;
+	/** 未收账款(元) */
+	@Excel(name = "未收账款(元)")
+	@ApiModelProperty("未收账款(元)")
+	private BigDecimal orderUncollected;
 	/** 预收款时间 */
+	@Excel(name = "预收时间")
 	@ApiModelProperty("预收款时间")
-	private Long predictReceiveTime;
-	/** 预付款时间 */
-	@ApiModelProperty("预付款时间")
-	private Long predictPayTime;
-	@ApiModelProperty("订单附件集合")
-	private List<TopOldOrderAttachmentVo> attachmentList;
-	@ApiModelProperty("订单业务类型")
-	private List<String> businessNames;
-	@ApiModelProperty("企业名称")
-	private String tenantName;
-	@ApiModelProperty("预收款剩余天数")
+	private String predictReceiveTime;
+	@ApiModelProperty("剩余天数")
 	private Integer predictReceiveDay;
-	/** $column.columnComment */
-	@ApiModelProperty("提醒通知ID")
-	private Long noteId;
-
-	/** 1立刻 2每天 3每周 4每月 */
-	@ApiModelProperty("1立刻 2每天 3每周 4每月")
-	private Long noteType;
 
-	/** 每天时间 */
-	@ApiModelProperty("每天时间")
-	private String dayTime;
 
-	/** 周几 1-7 */
-	@ApiModelProperty("周几 1-7")
-	private Integer weekTime;
-
-	/** 月天数 1-31 */
-	@ApiModelProperty("月天数 1-31")
-	private Integer monthTime;
-
-	/** 最后一次推送时间 */
-	@ApiModelProperty("最后一次推送时间")
-	private Long lastTime;
-	/** 下单时间 */
-	@Excel(name = "下单时间")
-	@ApiModelProperty("下单时间")
-	private Long buyTime;
 }

+ 79 - 5
zhongzheng-system/src/main/resources/mapper/modules/top/TopDivideOrderMapper.xml

@@ -20,8 +20,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             st.tenant_name ,
             cl.check_status,
             dl.pay_status,
-            (SELECT accomplish_time from v_top_order where  order_sn = tdo.order_sn) orderTime,
-            oo.remark
+            dl.divide_type,
+            oo.buy_time as order_time,
+            oo.remark,
+            oo.divide_company_money,
+            oo.divide_seller_money
         FROM
             top_divide_order tdo
                 LEFT JOIN top_divide_log dl ON tdo.divide_log_id = dl.id
@@ -39,12 +42,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             tdo.*,
             st.tenant_name,
             dl.pay_status,
-               oo.remark
+            dl.divide_type,
+               oo.remark,
+            tor.divide_money,
+            tor.refund_time as order_time
         FROM
             top_divide_order tdo
                 LEFT JOIN top_divide_log dl ON tdo.divide_log_id = dl.id
                 LEFT JOIN sys_tenant st ON dl.tenant_id = st.tenant_id
                 LEFT JOIN top_old_order oo ON tdo.order_sn =  oo.order_sn
+                LEFT JOIN top_old_order_refund tor ON tdo.order_sn =  tor.order_sn
         WHERE
             tdo.order_type = 2
           AND tdo.divide_log_id = #{divideLogId}
@@ -75,7 +82,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         v.order_sn,
         v.divide_company_money,
         v.divide_seller_money,
-        v.tenant_id
+        v.tenant_id,
+        v.create_no
         FROM
         v_top_order v
         WHERE
@@ -90,6 +98,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="tenantId != null and tenantId != ''">
             AND v.tenant_id = #{tenantId}
         </if>
+        <if test="createNo != null and createNo != ''">
+            AND v.create_no = #{createNo}
+        </if>
     </select>
 
     <select id="getMonthRefundList" parameterType="com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo"  resultType="com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo">
@@ -97,9 +108,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         tor.order_sn,
         tor.divide_money,
         tor.tenant_id,
-        tor.refund_sn
+        tor.refund_sn,
+        v.create_no
         FROM
         top_old_order_refund tor
+        LEFT JOIN v_top_order v on tor.order_sn = v.order_sn
         WHERE
         1 = 1
         AND tor.period_status = 3
@@ -112,6 +125,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="tenantId != null and tenantId != ''">
             AND tor.tenant_id = #{tenantId}
         </if>
+        <if test="createNo != null and createNo != ''">
+            AND v.create_no = #{createNo}
+        </if>
     </select>
 
     <select id="getMonthBadSum" parameterType="com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo"  resultType="BigDecimal">
@@ -131,4 +147,62 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             AND too.tenant_id = #{tenantId}
         </if>
     </select>
+
+    <select id="getMonthFinishAllSeller" parameterType="com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo"  resultType="com.zhongzheng.modules.top.financial.vo.TopCreateUserVo">
+        SELECT
+        v.create_no,
+        v.create_username,
+        v.tenant_id
+        FROM
+        v_top_order v
+        WHERE
+        1 = 1
+        AND v.finish_status = 1
+        <if test="divideModel != null and divideModel != ''">
+            AND v.divide_model = #{divideModel}
+        </if>
+        <if test="accomplishStartTime != null and accomplishStartTime != ''">
+            AND v.accomplish_time BETWEEN #{accomplishStartTime} and #{accomplishEndTime}
+        </if>
+        <if test="tenantId != null and tenantId != ''">
+            AND v.tenant_id = #{tenantId}
+        </if>
+        <if test="createNo != null and createNo != ''">
+            AND v.create_no = #{createNo}
+        </if>
+        GROUP BY v.create_no,v.create_username,v.tenant_id
+    </select>
+
+    <select id="getByOrderSn" parameterType="com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo"  resultType="com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo">
+        SELECT
+        tdo.*
+        FROM
+        top_divide_order tdo
+        LEFT JOIN top_divide_log dl on tdo.divide_log_id = dl.id
+        WHERE
+        1 = 1
+        AND tdo.order_type = 1
+        <if test="divideType != null and divideType != ''">
+            AND dl.divide_type = #{divideType}
+        </if>
+        <if test="orderSn != null and orderSn != ''">
+            AND tdo.order_sn = #{orderSn}
+        </if>
+        LIMIT 1
+    </select>
+
+    <update id="updateCheckStatusById" parameterType="com.zhongzheng.modules.top.order.domain.TopOrderBankPay" >
+        UPDATE top_divide_order tdo
+        LEFT JOIN top_divide_log dl ON tdo.divide_log_id = dl.id
+        LEFT JOIN top_old_order_check_log cl ON ( dl.divide_type + 1 ) = cl.check_from
+        AND cl.check_sign = 1
+        AND tdo.order_sn = cl.order_sn
+        <set>
+            cl.check_status = 3
+        </set>
+        where
+        tdo.order_type = 1
+        AND tdo.divide_log_id = #{divideLogId}
+        AND cl.check_status = 2
+    </update>
 </mapper>

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

@@ -270,6 +270,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <if test="creditStatus != null and creditStatus != ''">
             AND too.credit_status = #{creditStatus}
         </if>
+        <if test="badBill != null and badBill == 1 and badBillList != null and badBillList.size()!=0 ">
+            AND
+            <foreach collection="badBillList" item="item" index="index" open="(" close=")" separator="or">
+               (too.buy_time BETWEEN #{item.startTime} and #{item.endTime})
+            </foreach>
+        </if>
+        <if test="badBill != null and badBill == 2 and badBillList != null and badBillList.size()!=0 ">
+            AND
+            <foreach collection="badBillList" item="item" index="index" open="(" close=")" separator="or">
+                (too.buy_time NOT BETWEEN #{item.startTime} and #{item.endTime})
+            </foreach>
+        </if>
         ORDER BY too.order_id DESC
     </select>