he2802 2 年之前
父節點
當前提交
f5e646eaa5
共有 31 個文件被更改,包括 1333 次插入220 次删除
  1. 10 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/financial/TopDivideLogController.java
  2. 3 2
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderController.java
  3. 9 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java
  4. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/IScheduleService.java
  5. 495 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/schedule/service/impl/ScheduleServiceImpl.java
  6. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/system/bo/SysTenantBadBillConfigBo.java
  7. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopDivideOrderAddBo.java
  8. 30 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopDivideOrderQueryBo.java
  9. 15 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/domain/TopDivideLog.java
  10. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/domain/TopDivideOrder.java
  11. 17 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/mapper/TopDivideOrderMapper.java
  12. 19 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/ITopDivideOrderService.java
  13. 9 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopDivideLogServiceImpl.java
  14. 43 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/service/impl/TopDivideOrderServiceImpl.java
  15. 35 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopCreateUserVo.java
  16. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopDivideLogVo.java
  17. 28 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopDivideOrderVo.java
  18. 29 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopBadBillTimeBo.java
  19. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderQueryBo.java
  20. 1 1
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopOldOrderService.java
  21. 35 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderCheckLogServiceImpl.java
  22. 234 15
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java
  23. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderVo.java
  24. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderBankPayAddBo.java
  25. 1 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOrderBankPay.java
  26. 29 37
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOrderBankPayServiceImpl.java
  27. 63 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOldOrderCompanyExportVo.java
  28. 23 155
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOldOrderExportVo.java
  29. 1 0
      zhongzheng-system/src/main/resources/mapper/modules/top/TopDivideLogMapper.xml
  30. 165 2
      zhongzheng-system/src/main/resources/mapper/modules/top/TopDivideOrderMapper.xml
  31. 15 3
      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));
+    }
 }

+ 3 - 2
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOldOrderController.java

@@ -8,6 +8,7 @@ import com.zhongzheng.common.utils.ServletUtils;
 import com.zhongzheng.common.utils.poi.ExcelUtil;
 import com.zhongzheng.framework.web.service.TopTokenService;
 import com.zhongzheng.modules.top.financial.bo.OrderRefundPayBo;
+import com.zhongzheng.modules.top.financial.bo.TopDivideLogQueryBo;
 import com.zhongzheng.modules.top.financial.vo.OrderRefundPayDetailVo;
 import com.zhongzheng.modules.top.financial.vo.TopCostTpVo;
 import com.zhongzheng.modules.top.financial.vo.TopOrderLogVo;
@@ -143,7 +144,7 @@ public class TopOldOrderController extends BaseController {
     @ApiOperation("业务员提成列表导出")
     @PreAuthorize("@ss.hasPermi('system:tp:list')")
     @GetMapping("/sellerListExport")
-    public AjaxResult<List<TopOldOrderExportVo>> sellerListExport(TopOldOrderQueryBo bo) {
+    public AjaxResult<List<TopOldOrderExportVo>> sellerListExport(TopDivideLogQueryBo bo) {
         List<TopOldOrderExportVo> list = iTopOldOrderService.tenantListExport(bo);
         ExcelUtil<TopOldOrderExportVo> util = new ExcelUtil<TopOldOrderExportVo>(TopOldOrderExportVo.class);
         return util.exportExcel(list, "机构分成列表");
@@ -161,7 +162,7 @@ public class TopOldOrderController extends BaseController {
     @ApiOperation("机构分成列表导出")
     @PreAuthorize("@ss.hasPermi('system:tp:list')")
     @GetMapping("/tenantListExport")
-    public AjaxResult<List<TopOldOrderExportVo>> tenantListExport(TopOldOrderQueryBo bo) {
+    public AjaxResult<List<TopOldOrderExportVo>> tenantListExport(TopDivideLogQueryBo bo) {
         List<TopOldOrderExportVo> list = iTopOldOrderService.tenantListExport(bo);
         ExcelUtil<TopOldOrderExportVo> util = new ExcelUtil<TopOldOrderExportVo>(TopOldOrderExportVo.class);
         return util.exportExcel(list, "机构分成列表");

+ 9 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/schedule/ScheduleController.java

@@ -41,6 +41,8 @@ public class ScheduleController extends BaseController {
 
     private final ITopOrderRecNoteService iTopOrderRecNoteService;
 
+    private final IScheduleService iScheduleService;
+
     @ApiOperation("发票开票结果更新")
     @GetMapping("/distributionRebate")
     public AjaxResult distributionRebate(UserQueryBo bo){
@@ -61,4 +63,11 @@ public class ScheduleController extends BaseController {
         iTopOrderRecNoteService.timeNoteBatchPush();
         return AjaxResult.success();
     }
+
+    @ApiOperation("应收应付月度账单")
+    @GetMapping("/makeDivideMonthBill")
+    public AjaxResult makeDivideMonthBill(){
+        iScheduleService.makeDivideMonthBill();
+        return AjaxResult.success();
+    }
 }

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

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

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

@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.lang.Validator;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -22,6 +23,7 @@ import com.zhongzheng.modules.course.bo.CourseModuleChapterQueryBo;
 import com.zhongzheng.modules.course.bo.CourseSectionQueryBo;
 import com.zhongzheng.modules.course.domain.CourseSection;
 import com.zhongzheng.modules.course.domain.CourseSubject;
+import com.zhongzheng.modules.course.domain.MajorCategory;
 import com.zhongzheng.modules.course.service.*;
 import com.zhongzheng.modules.course.vo.CourseChapterSectionVo;
 import com.zhongzheng.modules.course.vo.CourseMenuVo;
@@ -96,7 +98,19 @@ import com.zhongzheng.modules.polyv.domain.PolyvVideo;
 import com.zhongzheng.modules.polyv.mapper.PolyvVideoMapper;
 import com.zhongzheng.modules.polyv.service.IPolyvLiveService;
 import com.zhongzheng.modules.schedule.service.IScheduleService;
+import com.zhongzheng.modules.system.bo.SysTenantBadBillConfigBo;
+import com.zhongzheng.modules.system.bo.SysTenantQueryBo;
+import com.zhongzheng.modules.system.service.ISysTenantService;
 import com.zhongzheng.modules.system.service.ISysUserService;
+import com.zhongzheng.modules.system.vo.SysTenantVo;
+import com.zhongzheng.modules.top.financial.bo.TopDivideOrderAddBo;
+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.*;
 import com.zhongzheng.modules.user.domain.*;
 import com.zhongzheng.modules.user.mapper.UserPlanMapper;
@@ -112,6 +126,7 @@ import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
@@ -274,6 +289,9 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
     @Autowired
     private IWisdomService iWisdomService;
 
+    @Autowired
+    private ITopSysConfigService topConfigService;
+
     @Autowired
     private IDistributionRebateService iDistributionRebateService;
 
@@ -283,6 +301,15 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
     @Autowired
     private IDistributionSellerService iDistributionSellerService;
 
+    @Autowired
+    private ITopDivideOrderService iTopDivideOrderService;
+
+    @Autowired
+    private ITopDivideLogService iTopDivideLogService;
+
+    @Autowired
+    private  ISysTenantService iSysTenantService;
+
     @Value("${aliyun.sms.OpenTheGoodsCode}")
     private String OpenTheGoodsCode;
 
@@ -1156,6 +1183,474 @@ public class ScheduleServiceImpl extends ServiceImpl<PolyvVideoMapper, PolyvVide
         }
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void makeDivideMonthBill() {
+        //生成机构分成
+        // 上月起始
+        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(1);
+            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,1)
+                    .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);
+                //坏账
+                String badBillJson = topConfigService.selectConfigByKeyNoCache("bad_bill");
+                if(Validator.isNotEmpty(badBillJson)){
+                    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;
+                    List<SysTenantBadBillConfigBo> configList = JSONArray.parseArray(badBillJson, SysTenantBadBillConfigBo.class);
+                    BigDecimal badPrice = new BigDecimal(0);
+                    for(SysTenantBadBillConfigBo configBo : configList){
+                        if(configBo.getYearType()==1){
+                            TopDivideOrderQueryBo orderQueryBo1 = new TopDivideOrderQueryBo();
+                            orderQueryBo1.setTenantId(tenantVo.getTenantId());
+                            orderQueryBo1.setBuyStartTime(year1);
+                            BigDecimal price1 = iTopDivideOrderService.getMonthBadSum(orderQueryBo1);
+                            BigDecimal value1 = price1.divide(new BigDecimal(100)).multiply(new BigDecimal(configBo.getDetainRate()));
+                            badPrice = badPrice.add(value1);
+                        }
+                        else if(configBo.getYearType()==2){
+                            TopDivideOrderQueryBo orderQueryBo2 = new TopDivideOrderQueryBo();
+                            orderQueryBo2.setTenantId(tenantVo.getTenantId());
+                            orderQueryBo2.setBuyStartTime(year1);
+                            orderQueryBo2.setBuyEndTime(year2);
+                            BigDecimal price2 = iTopDivideOrderService.getMonthBadSum(orderQueryBo2);
+                            BigDecimal value2 = price2.divide(new BigDecimal(100)).multiply(new BigDecimal(configBo.getDetainRate()));
+                            badPrice = badPrice.add(value2);
+                        }
+                        else if(configBo.getYearType()==3){
+                            TopDivideOrderQueryBo orderQueryBo3 = new TopDivideOrderQueryBo();
+                            orderQueryBo3.setTenantId(tenantVo.getTenantId());
+                            orderQueryBo3.setBuyStartTime(year2);
+                            orderQueryBo3.setBuyEndTime(year3);
+                            BigDecimal price3 = iTopDivideOrderService.getMonthBadSum(orderQueryBo3);
+                            BigDecimal value3 = price3.divide(new BigDecimal(100)).multiply(new BigDecimal(configBo.getDetainRate()));
+                            badPrice = badPrice.add(value3);
+                        }
+                        else if(configBo.getYearType()==4){
+                            TopDivideOrderQueryBo orderQueryBo4 = new TopDivideOrderQueryBo();
+                            orderQueryBo4.setTenantId(tenantVo.getTenantId());
+                            orderQueryBo4.setBuyStartTime(year3);
+                            orderQueryBo4.setBuyEndTime(year4);
+                            BigDecimal price4 = iTopDivideOrderService.getMonthBadSum(orderQueryBo4);
+                            BigDecimal value4 = price4.divide(new BigDecimal(100)).multiply(new BigDecimal(configBo.getDetainRate()));
+                            badPrice = badPrice.add(value4);
+                        }
+                        else if(configBo.getYearType()==5){
+                            TopDivideOrderQueryBo orderQueryBo5 = new TopDivideOrderQueryBo();
+                            orderQueryBo5.setTenantId(tenantVo.getTenantId());
+                            orderQueryBo5.setBuyStartTime(year4);
+                            orderQueryBo5.setBuyEndTime(year5);
+                            BigDecimal price5 = iTopDivideOrderService.getMonthBadSum(orderQueryBo5);
+                            BigDecimal value5 = price5.divide(new BigDecimal(100)).multiply(new BigDecimal(configBo.getDetainRate()));
+                            badPrice.add(value5);
+                        }
+                        else if(configBo.getYearType()==6){
+                            TopDivideOrderQueryBo orderQueryBo6 = new TopDivideOrderQueryBo();
+                            orderQueryBo6.setTenantId(tenantVo.getTenantId());
+                            orderQueryBo6.setBuyStartTime(year5);
+                            BigDecimal price6 = iTopDivideOrderService.getMonthBadSum(orderQueryBo6);
+                            BigDecimal value6 = price6.divide(new BigDecimal(100)).multiply(new BigDecimal(configBo.getDetainRate()));
+                            badPrice = badPrice.add(value6);
+                        }
+                    }
+                    divideLog.setBadMoney(badPrice);
+                    BigDecimal lastBadPrice = new BigDecimal(0);
+                    //和上个账单坏账比较
+                    if(Validator.isNotEmpty(divideLogLast)){
+                        lastBadPrice = divideLogLast.getRealBadMoney();
+                    }
+                    if(badPrice.compareTo(lastBadPrice) == 0){
+                        //等于互相抵消
+                        divideLog.setRealBadMoney(badPrice);
+                    }
+                    else if(badPrice.compareTo(lastBadPrice) == -1){
+                        //小于
+                        BigDecimal diffBad = lastBadPrice.multiply(badPrice);
+                        divideLog.setPayMoney(divideLog.getPayMoney().add(diffBad));
+                        divideLog.setRealBadMoney(badPrice);
+                    }
+                    else if(badPrice.compareTo(lastBadPrice) == 1){
+                        //大于
+                        BigDecimal diffBad = badPrice.multiply(lastBadPrice);
+                        if(divideLog.getPayMoney().compareTo(diffBad) == 0){
+                            divideLog.setPayMoney(new BigDecimal(0));
+                            divideLog.setRealBadMoney(badPrice);
+                        }
+                        if(divideLog.getPayMoney().compareTo(diffBad) == -1){
+                            //小于
+                            divideLog.setPayMoney(new BigDecimal(0));
+                            divideLog.setRealBadMoney(lastBadPrice.add(divideLog.getPayMoney()));
+                        }
+                        if(divideLog.getPayMoney().compareTo(diffBad) == 1){
+                            //大于
+                            divideLog.setPayMoney(divideLog.getPayMoney().multiply(diffBad));
+                            divideLog.setRealBadMoney(badPrice);
+                        }
+                    }
+                    iTopDivideLogService.updateById(divideLog);
+                }
+
+            }
+        }
+        /*for(SysTenantVo tenantVo : companyList){
+
+
+            //获取上个账单
+            TopDivideLog divideLog = iTopDivideLogService.getOne(lqw.eq(TopDivideLog::getTenantId,tenantVo.getTenantId()).eq(TopDivideLog::getDivideType,1).orderByDesc(TopDivideLog::getId).last("limit 1"));
+
+        }*/
+
+    }
+
+    @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.setCreateUsername(vo.getCreateUsername());
+                    divideLog.setCreateNo(vo.getCreateNo());
+                }
+                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.setCreateUsername(vo.getCreateUsername());
+                    divideLog.setCreateNo(vo.getCreateNo());
+
+                }
+                //加上上个月流入待扣分成
+                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();

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/bo/SysTenantBadBillConfigBo.java

@@ -16,7 +16,7 @@ import lombok.Data;
 public class SysTenantBadBillConfigBo {
 
     /** 账龄 */
-    @ApiModelProperty("账龄 1(1年以上),2(1-2年),3(2-3年),4(3-4年),5(5年以上)")
+    @ApiModelProperty("账龄 1(1年以上),2(1-2年),3(2-3年),4(3-4年),5(4-5年),6(5年以上)")
     private Integer yearType;
 
     @ApiModelProperty("扣押百分比")

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/bo/TopDivideOrderAddBo.java

@@ -36,4 +36,6 @@ public class TopDivideOrderAddBo {
     /** 更新时间 */
     @ApiModelProperty("更新时间")
     private Long updateTime;
+    @ApiModelProperty("退款号")
+    private String refundSn;
 }

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

@@ -63,4 +63,34 @@ public class TopDivideOrderQueryBo extends BaseEntity {
 	@Excel(name = "审核状态:0待审核,1已通过,-1未通过," , readConverterExp = "2=待支付,3已支付")
 	@ApiModelProperty("审核状态:0待审核,1已通过,-1未通过,(2待支付,3已支付)")
 	private Integer checkStatus;
+
+	@ApiModelProperty("完单开始时间")
+	private Long accomplishStartTime;
+
+	@ApiModelProperty("完单结束时间")
+	private Long accomplishEndTime;
+
+	@ApiModelProperty("分成模式 1机构分成 2业务员分成")
+	private Integer divideModel;
+
+	@ApiModelProperty("企业ID")
+	private Long tenantId;
+
+	@ApiModelProperty("退款开始时间")
+	private Long refundTimeStartTime;
+
+	@ApiModelProperty("退款结束时间")
+	private Long refundTimeEndTime;
+
+	@ApiModelProperty("下单开始时间")
+	private Long buyStartTime;
+
+	@ApiModelProperty("下单结束时间")
+	private Long buyEndTime;
+
+	@ApiModelProperty("业务号")
+	private String createNo;
+
+	@ApiModelProperty("类型 1机构分成 2业务员提成  3佣金结算")
+	private Integer divideType;
 }

+ 15 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/domain/TopDivideLog.java

@@ -33,8 +33,7 @@ private static final long serialVersionUID=1L;
     private Integer month;
     /** 待付分成(元),待审提成(元),待付佣金(元) */
     private BigDecimal payMoney;
-    /** 业务ID */
-    private Long sellerId;
+
     /** 状态 1正常 0关闭 */
     private Integer status;
     /** 创建时间 */
@@ -52,6 +51,10 @@ private static final long serialVersionUID=1L;
     /** 待扣分成(元),待扣提成(元) */
     private BigDecimal deductMoney;
 
+    private BigDecimal totalPayMoney;
+
+    private Long monthTime;
+
     private String tenantId;
     /** 业务员名称 */
     private String createUsername;
@@ -60,4 +63,14 @@ private static final long serialVersionUID=1L;
     /** 业务号 */
     private String createNo;
 
+    private Long payTime;
+
+    private BigDecimal badMoney;
+
+    private BigDecimal realBadMoney;
+
+    private BigDecimal realDeductMoney;
+
+    private BigDecimal unDeductMoney;
+
 }

+ 1 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/domain/TopDivideOrder.java

@@ -40,4 +40,5 @@ private static final long serialVersionUID=1L;
     /** 更新时间 */
     @TableField(fill = FieldFill.INSERT_UPDATE)
     private Long updateTime;
+    private String refundSn;
 }

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

@@ -5,9 +5,12 @@ 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;
 
 /**
@@ -20,4 +23,18 @@ public interface TopDivideOrderMapper extends BaseMapper<TopDivideOrder> {
     List<TopDivideOrderVo> getFinishList(TopDivideOrderQueryBo bo);
 
     List<TopDivideOrderVo> getRefundList(TopDivideOrderQueryBo bo);
+
+    List<TopDivideOrderVo> getMonthFinishList(TopDivideOrderQueryBo bo);
+
+    List<String> getMonthFinishAllTenant(TopDivideOrderQueryBo bo);
+
+    List<TopDivideOrderVo> getMonthRefundList(TopDivideOrderQueryBo bo);
+
+    BigDecimal getMonthBadSum(TopDivideOrderQueryBo bo);
+
+    List<TopCreateUserVo> getMonthFinishAllSeller(TopDivideOrderQueryBo bo);
+
+    TopDivideOrderVo getByOrderSn(TopDivideOrderQueryBo bo);
+
+    Integer updateCheckStatusById(TopOrderBankPay bankPay);
 }

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

@@ -6,9 +6,12 @@ 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;
 import java.util.List;
 
@@ -54,4 +57,20 @@ public interface ITopDivideOrderService extends IService<TopDivideOrder> {
 
 	List<TopDivideOrderVo> getMonthOrderList(TopDivideOrderQueryBo bo);
 
+	List<TopDivideOrderVo> getMonthFinishList(TopDivideOrderQueryBo bo);
+
+	List<String> getMonthFinishAllTenant(TopDivideOrderQueryBo bo);
+
+	List<TopDivideOrderVo> getMonthRefundList(TopDivideOrderQueryBo bo);
+
+	BigDecimal getMonthBadSum(TopDivideOrderQueryBo bo);
+
+	List<TopCreateUserVo> getMonthFinishAllSeller(TopDivideOrderQueryBo bo);
+
+	TopDivideOrderVo getByOrderSn(TopDivideOrderQueryBo bo);
+
+	List<TopDivideOrderVo> getFinishList(TopDivideOrderQueryBo bo);
+
+	Integer updateCheckStatusById(TopOrderBankPay bankPay);
+
 }

+ 9 - 2
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
@@ -55,7 +63,6 @@ public class TopDivideLogServiceImpl extends ServiceImpl<TopDivideLogMapper, Top
         lqw.eq(bo.getYear() != null, TopDivideLog::getYear, bo.getYear());
         lqw.eq(bo.getMonth() != null, TopDivideLog::getMonth, bo.getMonth());
         lqw.eq(bo.getPayMoney() != null, TopDivideLog::getPayMoney, bo.getPayMoney());
-        lqw.eq(bo.getSellerId() != null, TopDivideLog::getSellerId, bo.getSellerId());
         lqw.eq(bo.getStatus() != null, TopDivideLog::getStatus, bo.getStatus());
         lqw.eq(bo.getDivideType() != null, TopDivideLog::getDivideType, bo.getDivideType());
         lqw.eq(bo.getPayStatus() != null, TopDivideLog::getPayStatus, bo.getPayStatus());

+ 43 - 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;
@@ -19,6 +21,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.Page;
 
 
+import java.math.BigDecimal;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
@@ -118,4 +121,44 @@ public class TopDivideOrderServiceImpl extends ServiceImpl<TopDivideOrderMapper,
         fList.addAll(rList);
         return fList;
     }
+
+    @Override
+    public List<TopDivideOrderVo> getMonthFinishList(TopDivideOrderQueryBo bo) {
+        return baseMapper.getMonthFinishList(bo);
+    }
+
+    @Override
+    public List<String> getMonthFinishAllTenant(TopDivideOrderQueryBo bo) {
+        return baseMapper.getMonthFinishAllTenant(bo);
+    }
+
+    @Override
+    public List<TopDivideOrderVo> getMonthRefundList(TopDivideOrderQueryBo bo) {
+        return baseMapper.getMonthRefundList(bo);
+    }
+
+    @Override
+    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;
+
+
+
+}

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/financial/vo/TopDivideLogVo.java

@@ -108,5 +108,7 @@ public class TopDivideLogVo {
 	private Integer billType;
 
 	private Long monthTime;
+	@ApiModelProperty("打款时间")
+	private Long payTime;
 
 }

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

@@ -66,4 +66,32 @@ public class TopDivideOrderVo {
 	@Excel(name = "1已打款 0未打款")
 	@ApiModelProperty("1已打款 0未打款")
 	private Integer payStatus;
+
+	@ApiModelProperty("订单时间(完单时间 退款时间)")
+	private Long orderTime;
+	/** 机构分成钱 */
+	@ApiModelProperty("机构分成钱")
+	private BigDecimal divideCompanyMoney;
+	/** 业务员分成钱 */
+	@ApiModelProperty("业务员分成钱")
+	private BigDecimal divideSellerMoney;
+	@ApiModelProperty("待扣分成钱")
+	private BigDecimal divideMoney;
+	@ApiModelProperty("退款单号")
+	private String refundSn;
+	/** 类型 1机构分成 2业务员提成  3佣金结算 */
+	@ApiModelProperty("类型 1机构分成 2业务员提成  3佣金结算")
+	private Integer divideType;
+	@ApiModelProperty("退款时间")
+	private Long refundTime;
+	/** 业务员名称 */
+	@ApiModelProperty("业务员名称")
+	private String createUsername;
+	/** 业务员名称ID */
+	@ApiModelProperty("业务员名称ID")
+	private Long createSysUserId;
+	/** 业务号 */
+	@ApiModelProperty("业务号")
+	private String createNo;
+
 }

+ 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;
+
+
 }

+ 1 - 1
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopOldOrderService.java

@@ -89,7 +89,7 @@ public interface ITopOldOrderService extends IService<TopOldOrder> {
 	TopOrderStatisticsVo statisticsOrder();
 
 
-	List<TopOldOrderExportVo> tenantListExport(TopOldOrderQueryBo bo);
+	List<TopOldOrderExportVo> tenantListExport(TopDivideLogQueryBo bo);
 
 	List<TopOldOrderExportVo> sellerListExport(TopOldOrderQueryBo bo);
 

+ 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>()

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

@@ -40,6 +40,7 @@ import com.zhongzheng.modules.order.domain.Order;
 import com.zhongzheng.modules.order.domain.OrderGoods;
 import com.zhongzheng.modules.order.service.IOrderGoodsRefundService;
 import com.zhongzheng.modules.order.service.IOrderGoodsService;
+import com.zhongzheng.modules.system.bo.SysTenantBadBillConfigBo;
 import com.zhongzheng.modules.system.domain.SysOldOrg;
 import com.zhongzheng.modules.system.domain.SysTenant;
 import com.zhongzheng.modules.system.service.ISysOldOrgService;
@@ -51,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.*;
@@ -67,6 +65,7 @@ import com.zhongzheng.modules.top.order.domain.TopOrderBankPay;
 import com.zhongzheng.modules.top.order.service.ITopOrderBankPayService;
 import com.zhongzheng.modules.top.user.domain.TopSysRole;
 import com.zhongzheng.modules.top.user.domain.TopSysUserRole;
+import com.zhongzheng.modules.top.user.service.ITopSysConfigService;
 import com.zhongzheng.modules.top.user.service.ITopSysRoleService;
 import com.zhongzheng.modules.top.user.service.ITopSysUserRoleService;
 import com.zhongzheng.modules.top.order.vo.TopOldOrderExportVo;
@@ -182,12 +181,18 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
     @Autowired
     private ITopDivideLogService iTopDivideLogService;
 
+    @Autowired
+    private ITopDivideOrderService iTopDivideOrderService;
+
     @Autowired
     private ITopOrderBankPayService topOrderBankPayService;
 
     @Autowired
     private IOrderGoodsRefundService orderGoodsRefundService;
 
+    @Autowired
+    private ITopSysConfigService topConfigService;
+
     @Value("${oldOrder.studyRecord}")
     private String ORDER_STUDY;
 
@@ -2389,15 +2394,15 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
     }
 
     @Override
-    public List<TopOldOrderExportVo> tenantListExport(TopOldOrderQueryBo bo) {
+    public List<TopOldOrderExportVo> tenantListExport(TopDivideLogQueryBo bo) {
         List<TopOldOrderExportVo> listExport = new ArrayList<>();
-        List<TopOldOrderVo> list = this.baseMapper.queryTenantList(bo);
-        for (TopOldOrderVo vo : list) {
+        List<TopDivideLogVo> list = iTopDivideLogService.getCompanyList(bo);
+       /* for (TopOldOrderVo vo : list) {
             if (vo.getCreditStatus() == 0 && Validator.isNotEmpty(vo.getPredictReceiveTime())) {
                 Integer predictDay = DateUtils.dayBetween(vo.getPredictReceiveTime(), DateUtils.getNowTime());
                 vo.setPredictReceiveDay(predictDay);
             }
-        }
+        }*/
         return listExport;
     }
 
@@ -2641,23 +2646,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;
     }
 
@@ -2728,25 +2742,230 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
 
     @Override
     public List<TopOldOrderVo> queryReceiveList(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<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());
                 vo.setPredictReceiveDay(predictDay);
             }
+            if(Validator.isEmpty(badBillJson)){
+                vo.setBadBill(false);
+            }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){
+                                vo.setBadBill(true);
+                            }
+                        }
+                        if(configBo.getYearType()==2){
+                            if(vo.getBuyTime()<year1&&vo.getBuyTime()>year2){
+                                vo.setBadBill(true);
+                            }
+                        }
+                        if(configBo.getYearType()==3){
+                            if(vo.getBuyTime()<year2&&vo.getBuyTime()>year3){
+                                vo.setBadBill(true);
+                            }
+                        }
+                        if(configBo.getYearType()==4){
+                            if(vo.getBuyTime()<year3&&vo.getBuyTime()>year4){
+                                vo.setBadBill(true);
+                            }
+                        }
+                        if(configBo.getYearType()==5){
+                            if(vo.getBuyTime()<year4&&vo.getBuyTime()>year5){
+                                vo.setBadBill(true);
+                            }
+                        }
+                        if(configBo.getYearType()==6){
+                            if(vo.getBuyTime()<year5){
+                                vo.setBadBill(true);
+                            }
+                        }
+                    }
+
+                }
+            }
         }
         return list;
     }
 
     @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;
     }

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

@@ -246,4 +246,7 @@ public class TopOldOrderVo {
 	private Integer checkType;
 	@ApiModelProperty("分成审核状态:0待审核,1已通过,-1未通过,2待支付,3已支付")
 	private Integer divideCheckStatus;
+
+	@ApiModelProperty("是否坏账")
+	private boolean badBill;
 }

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

@@ -66,4 +66,7 @@ public class TopOrderBankPayAddBo {
     private String loginName;
 
     private Long loginId;
+
+    @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;

+ 63 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOldOrderCompanyExportVo.java

@@ -0,0 +1,63 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+/**
+ * 订单视图对象 mall_package
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Data
+@ApiModel("订单视图对象")
+public class TopOldOrderCompanyExportVo {
+	private static final long serialVersionUID = 1L;
+
+	@Excel(name = "时间")
+	@ApiModelProperty("时间")
+	private String timeStr;
+
+	/** 下单时间 */
+	@Excel(name = "类型")
+	@ApiModelProperty("类型")
+	private String billType;
+
+
+	@Excel(name = "机构名称")
+	@ApiModelProperty("机构名称")
+	private String tenantName;
+
+	@Excel(name = "已付分成(元)")
+	@ApiModelProperty("已付分成(元)")
+	private String createUsername;
+	/** 业务号 */
+	@Excel(name = "业务号")
+	@ApiModelProperty("业务号")
+	private String createNo;
+	/** 订单标准价格 */
+	@Excel(name = "合同金额(元)")
+	@ApiModelProperty("订单标准价格")
+	private BigDecimal orderPrice;
+	/** 实收账款(元) */
+	@Excel(name = "已收账款(元)")
+	@ApiModelProperty("实收账款(元)")
+	private BigDecimal orderReceived;
+	/** 未收账款(元) */
+	@Excel(name = "未收账款(元)")
+	@ApiModelProperty("未收账款(元)")
+	private BigDecimal orderUncollected;
+	/** 预收款时间 */
+	@Excel(name = "预收时间")
+	@ApiModelProperty("预收款时间")
+	private String predictReceiveTime;
+	@ApiModelProperty("剩余天数")
+	private Integer predictReceiveDay;
+
+
+}

+ 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;
 }

+ 1 - 0
zhongzheng-system/src/main/resources/mapper/modules/top/TopDivideLogMapper.xml

@@ -150,4 +150,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
 
+
 </mapper>

+ 165 - 2
zhongzheng-system/src/main/resources/mapper/modules/top/TopDivideOrderMapper.xml

@@ -19,11 +19,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             tdo.*,
             st.tenant_name ,
             cl.check_status,
-            dl.pay_status
+            dl.pay_status,
+            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
                 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_check_log cl ON (dl.divide_type+1) = cl.check_from AND  cl.check_sign = 1  AND  tdo.order_sn = cl.order_sn
         WHERE
@@ -35,13 +41,170 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         SELECT
             tdo.*,
             st.tenant_name,
-            dl.pay_status
+            dl.pay_status,
+            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}
     </select>
+
+    <select id="getMonthFinishAllTenant" parameterType="com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo"  resultType="String">
+        SELECT
+        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>
+        GROUP BY v.tenant_id
+    </select>
+
+    <select id="getMonthFinishList" parameterType="com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo"  resultType="com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo">
+        SELECT
+        v.order_sn,
+        v.divide_company_money,
+        v.divide_seller_money,
+        v.tenant_id,
+        v.create_no,
+        v.create_username
+        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>
+    </select>
+
+    <select id="getMonthRefundList" parameterType="com.zhongzheng.modules.top.financial.bo.TopDivideOrderQueryBo"  resultType="com.zhongzheng.modules.top.financial.vo.TopDivideOrderVo">
+        SELECT
+        tor.order_sn,
+        tor.divide_money,
+        tor.tenant_id,
+        tor.refund_sn,
+        v.create_no,
+        v.create_username
+        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
+        <if test="divideModel != null and divideModel != ''">
+            AND tor.divide_model = #{divideModel}
+        </if>
+        <if test="refundTimeStartTime != null and refundTimeStartTime != ''">
+            AND tor.refund_time BETWEEN #{refundTimeStartTime} and #{refundTimeEndTime}
+        </if>
+        <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">
+        SELECT
+        IFNULL(SUM(too.order_uncollected),0)
+        FROM
+        top_old_order too
+        WHERE
+        too.status=1
+        <if test="buyStartTime != null and buyStartTime != ''">
+            AND too.buy_time <![CDATA[ >= ]]> #{buyStartTime}
+        </if>
+        <if test="buyEndTime != null and buyEndTime != ''">
+            AND too.buy_time <![CDATA[ <= ]]> #{buyEndTime}
+        </if>
+        <if test="tenantId != null and tenantId != ''">
+            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>

+ 15 - 3
zhongzheng-system/src/main/resources/mapper/modules/top/TopOldOrderMapper.xml

@@ -257,12 +257,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             top_old_order too
                 LEFT JOIN sys_tenant st ON too.tenant_id = st.tenant_id
                 LEFT JOIN top_order_rec_note rn ON too.tenant_id = rn.tenant_id and too.order_sn = rn.order_sn
-        where 1=1
+        where too.status=1
         <if test="startTime != null and startTime != ''">
-            AND too.create_time <![CDATA[ >= ]]> #{startTime}
+            AND too.buy_time <![CDATA[ >= ]]> #{startTime}
         </if>
         <if test="endTime != null and endTime != ''">
-            AND too.create_time <![CDATA[ <= ]]> #{endTime}
+            AND too.buy_time <![CDATA[ <= ]]> #{endTime}
         </if>
         <if test="keyNo != null and keyNo != ''">
             AND (too.tenant_id like concat('%', #{keyNo}, '%') or too.create_no like concat('%', #{keyNo}, '%'))
@@ -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>