yangdamao 1 year ago
parent
commit
7f47d7d392
28 changed files with 1106 additions and 12 deletions
  1. 150 0
      zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderAcceptanceController.java
  2. 2 2
      zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java
  3. 12 5
      zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java
  4. 7 2
      zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java
  5. 2 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderGoodsAddBo.java
  6. 6 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/ITopOldOrderService.java
  7. 12 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/service/impl/TopOldOrderServiceImpl.java
  8. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopOldOrderVo.java
  9. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopRefundOrderDetailVo.java
  10. 3 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/vo/TopRefundUserVo.java
  11. 39 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopAcceptanceOrderBo.java
  12. 73 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceAddBo.java
  13. 52 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceBo.java
  14. 58 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceExportBo.java
  15. 21 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceRelBo.java
  16. 22 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderGoodsAcceptanceBo.java
  17. 71 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOrderAcceptance.java
  18. 43 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOrderAcceptanceRel.java
  19. 24 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/mapper/TopOrderAcceptanceMapper.java
  20. 15 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/mapper/TopOrderAcceptanceRelMapper.java
  21. 13 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/ITopOrderAcceptanceRelService.java
  22. 36 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/ITopOrderAcceptanceService.java
  23. 22 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOrderAcceptanceRelServiceImpl.java
  24. 222 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOrderAcceptanceServiceImpl.java
  25. 24 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderAcceptanceStatisticsVo.java
  26. 80 0
      zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderAcceptanceVo.java
  27. 5 3
      zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java
  28. 86 0
      zhongzheng-system/src/main/resources/mapper/modules/top/TopOrderAcceptanceMapper.xml

+ 150 - 0
zhongzheng-admin-saas/src/main/java/com/zhongzheng/controller/order/TopOrderAcceptanceController.java

@@ -0,0 +1,150 @@
+package com.zhongzheng.controller.order;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSON;
+import com.zhongzheng.common.annotation.Log;
+import com.zhongzheng.common.core.controller.BaseController;
+import com.zhongzheng.common.core.domain.AjaxResult;
+import com.zhongzheng.common.core.domain.model.LoginUser;
+import com.zhongzheng.common.core.domain.model.TopLoginUser;
+import com.zhongzheng.common.core.page.TableDataInfo;
+import com.zhongzheng.common.utils.ServletUtils;
+import com.zhongzheng.common.utils.poi.EasyPoiUtil;
+import com.zhongzheng.common.utils.poi.ExcelUtil;
+import com.zhongzheng.modules.course.bo.CourseSectionBusinessAddBo;
+import com.zhongzheng.modules.course.vo.CourseChapterSectionImport;
+import com.zhongzheng.modules.distribution.bo.DistributionActivityPosterQueryBo;
+import com.zhongzheng.modules.distribution.vo.DistributionActivityPosterVo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderAddBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderQueryBo;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.bo.*;
+import com.zhongzheng.modules.top.order.service.ITopOrderAcceptanceService;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceStatisticsVo;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceVo;
+import com.zhongzheng.modules.user.bo.UserImportAddBo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * 订单认款Controller
+ *
+ * @author ruoyi
+ * @date 2023-04-20
+ */
+@Api(value = "订单认款", tags = {"订单认款"})
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+@RestController
+@RequestMapping("/system/top/acceptance")
+public class TopOrderAcceptanceController extends BaseController {
+
+    private final ITopOrderAcceptanceService iTopOrderAcceptanceService;
+
+    /**
+     * 查询认款列表
+     */
+    @ApiOperation("查询认款列表")
+    @GetMapping("/list")
+    public TableDataInfo<TopOrderAcceptanceVo> list(TopOrderAcceptanceBo bo) {
+        startPage();
+        List<TopOrderAcceptanceVo> list = iTopOrderAcceptanceService.queryAcceptanceList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 查询认款统计
+     */
+    @ApiOperation("查询认款统计")
+    @GetMapping("/statistics")
+    public AjaxResult<TopOrderAcceptanceStatisticsVo> statistics() {
+        TopOrderAcceptanceStatisticsVo vo = iTopOrderAcceptanceService.statistics();
+        return AjaxResult.success(vo);
+    }
+
+    /**
+     * 认款订单列表
+     */
+    @ApiOperation("认款订单列表")
+    @GetMapping("/order/list")
+    public TableDataInfo<TopOldOrderVo> getAcceptanceOrderList(TopAcceptanceOrderBo bo) {
+        startPage();
+        List<TopOldOrderVo> list = iTopOrderAcceptanceService.getAcceptanceOrderList(bo);
+        return getDataTable(list);
+    }
+
+    /**
+     * 认款关联订单列表
+     */
+    @ApiOperation("认款关联订单列表")
+    @GetMapping("/order/rel/{acceptanceId}")
+    public AjaxResult<List<TopOldOrderVo>> getAcceptanceOrderRelList(@PathVariable("acceptanceId")Long acceptanceId) {
+        List<TopOldOrderVo> list = iTopOrderAcceptanceService.getAcceptanceOrderRelList(acceptanceId);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 订单认款
+     */
+    @ApiOperation("订单认款")
+    @PostMapping("/rel")
+    public AjaxResult<Void> addOrderAcceptanceRel(@RequestBody TopOrderAcceptanceRelBo bo) {
+        return toAjax(iTopOrderAcceptanceService.addOrderAcceptanceRel(bo) ? 1 : 0);
+    }
+
+
+    /**
+     * 新增认款记录
+     */
+    @ApiOperation("新增认款记录")
+    @PostMapping("/save")
+    public AjaxResult<Void> add(@RequestBody TopOrderAcceptanceAddBo bo) {
+        return toAjax(iTopOrderAcceptanceService.insertByAddBo(bo) ? 1 : 0);
+    }
+
+    /**
+     * 删除认款记录
+     */
+    @ApiOperation("删除认款记录")
+    @PostMapping("/delete")
+    public AjaxResult<Void> add(@RequestBody TopOrderAcceptanceBo bo) {
+        return toAjax(iTopOrderAcceptanceService.deleteByAddBo(bo) ? 1 : 0);
+    }
+
+    @ApiOperation("认款记录导入")
+    @PostMapping("/importData")
+    public AjaxResult<Void> importData(MultipartFile file) {
+        ExcelUtil<TopOrderAcceptanceExportBo> util = new ExcelUtil<TopOrderAcceptanceExportBo>(TopOrderAcceptanceExportBo.class);
+        List<TopOrderAcceptanceExportBo> acceptanceExportBos;
+        try {
+            acceptanceExportBos = util.importExcel(file.getInputStream());
+        }catch (Exception e){
+            e.printStackTrace();
+            throw new IllegalArgumentException("模板格式不正确,请重新下载模板");
+        }
+        return toAjax(iTopOrderAcceptanceService.importData(acceptanceExportBos)? 1 : 0);
+    }
+
+    /**
+     * 导出【请填写功能名称】列表
+     */
+    @ApiOperation("认款记录导出")
+    @GetMapping("/export")
+    public AjaxResult<DistributionActivityPosterVo> export(TopOrderAcceptanceBo bo) {
+        List<TopOrderAcceptanceVo> list = iTopOrderAcceptanceService.queryAcceptanceList(bo);
+        List<TopOrderAcceptanceExportBo> collect = list.stream().map(item -> {
+            TopOrderAcceptanceExportBo exportBo = BeanUtil.toBean(item, TopOrderAcceptanceExportBo.class);
+            return exportBo;
+        }).collect(Collectors.toList());
+        ExcelUtil<TopOrderAcceptanceExportBo> util = new ExcelUtil<TopOrderAcceptanceExportBo>(TopOrderAcceptanceExportBo.class);
+        return util.exportExcel(collect, "认款记录表");
+    }
+}

+ 2 - 2
zhongzheng-admin/src/main/java/com/zhongzheng/controller/common/CommonController.java

@@ -327,14 +327,14 @@ public class CommonController extends BaseController {
                 e.printStackTrace();
             }
         });
-        return AjaxResult.success();
+        return AjaxResult.success("操作成功",null);
     }
 
     @ApiOperation("七大员新考证书")
     @PostMapping("common/apply/result/certificate")
     public AjaxResult examApplyResultCertificate(List<MultipartFile> files) {
         String msg = iExamApplyService.examApplyResultCertificate(files);
-        return AjaxResult.success(msg);
+        return AjaxResult.success("操作成功",msg);
     }
 
     @ApiOperation("七大员考试结果回执")

+ 12 - 5
zhongzheng-system/src/main/java/com/zhongzheng/modules/course/service/impl/CourseServiceImpl.java

@@ -561,7 +561,7 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
             }
             goodsUserVo.setSecAllNum(secLong);
             goodsUserVo.setStuAllNum(studyLong);
-            goodsUserVo.setSubscribeSign(2);
+            goodsUserVo.setSubscribeSign(0);
 
 
             //查询对应考试安排
@@ -579,9 +579,14 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
                             .last("limit 1"));
                     if (ObjectUtils.isNull(userSubscribe)){
                         goodsUserVo.setSubscribeSign(1);
-                    }else if (userSubscribe.getSubscribeStatus() == 1 && userSubscribe.getExamStatus() == 0){
+                    }else if (userSubscribe.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(userSubscribe.getExamStatus())
+                            && userSubscribe.getExamStatus() == 1
+                            && ObjectUtils.isNull(userSubscribe.getResult())){
+                        goodsUserVo.setSubscribeSign(2);
+                    }else if (userSubscribe.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(userSubscribe.getExamStatus())
+                            && userSubscribe.getExamStatus() == 0){
                         goodsUserVo.setSubscribeSign(4);
-                    } else if (ObjectUtils.isNotNull(userSubscribe.getResult()) && userSubscribe.getResult() == 0){
+                    }else if (ObjectUtils.isNotNull(userSubscribe.getResult()) && userSubscribe.getResult() == 0){
                         goodsUserVo.setSubscribeSign(3);
                     }
                 }
@@ -798,10 +803,12 @@ public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> impleme
                             .last("limit 1"));
                     if (ObjectUtils.isNull(userSubscribe)){
                         goodsUserVo.setSubscribeSign(1);
-                    }else if (userSubscribe.getSubscribeStatus() == 1 && userSubscribe.getExamStatus() == 1
+                    }else if (userSubscribe.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(userSubscribe.getExamStatus())
+                            && userSubscribe.getExamStatus() == 1
                             && ObjectUtils.isNull(userSubscribe.getResult())){
                         goodsUserVo.setSubscribeSign(2);
-                    }else if (userSubscribe.getSubscribeStatus() == 1 && userSubscribe.getExamStatus() == 0){
+                    }else if (userSubscribe.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(userSubscribe.getExamStatus())
+                            && userSubscribe.getExamStatus() == 0){
                         goodsUserVo.setSubscribeSign(4);
                     }else if (ObjectUtils.isNotNull(userSubscribe.getResult()) && userSubscribe.getResult() == 0){
                         goodsUserVo.setSubscribeSign(3);

+ 7 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/order/service/impl/OrderGoodsServiceImpl.java

@@ -640,7 +640,7 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
                 goodsVo.setInterfaceAccountId(classGradeVo.getInterfaceAccountId());
                 goodsVo.setLearnStatus(classGradeVo.getLearnStatus());
                 goodsVo.setPeriodWaitTime(classGradeVo.getPeriodWaitTime());
-                goodsVo.setSubscribeSign(2);
+                goodsVo.setSubscribeSign(0);
                 LambdaQueryWrapper<UserSubscribe> lq = Wrappers.lambdaQuery();
                 lq.eq(UserSubscribe::getOrderGoodsId, goodsVo.getOrderGoodsId());
                 lq.eq(UserSubscribe::getSubscribeStatus, 1);
@@ -677,7 +677,12 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
                                 .last("limit 1"));
                         if (ObjectUtils.isNull(subscribe)){
                             goodsVo.setSubscribeSign(1);
-                        }else if (userSubscribe.getSubscribeStatus() == 1 && userSubscribe.getExamStatus() == 0){
+                        }else if (subscribe.getSubscribeStatus() == 1  && ObjectUtils.isNotNull(subscribe.getExamStatus())
+                                && subscribe.getExamStatus() == 1
+                                && ObjectUtils.isNull(userSubscribe.getResult())){
+                            goodsVo.setSubscribeSign(2);
+                        }else if (subscribe.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(subscribe.getExamStatus())
+                                && subscribe.getExamStatus() == 0){
                             goodsVo.setSubscribeSign(4);
                         }else if (ObjectUtils.isNotNull(subscribe.getResult()) && subscribe.getResult() == 0){
                             goodsVo.setSubscribeSign(3);

+ 2 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/goods/bo/TopOldOrderGoodsAddBo.java

@@ -100,4 +100,6 @@ public class TopOldOrderGoodsAddBo {
     private BigDecimal divideMoney;
     @ApiModelProperty("补款金额")
     private BigDecimal repairMoney;
+    @ApiModelProperty("补款证明")
+    private String repairProve;
 }

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

@@ -30,6 +30,12 @@ public interface ITopOldOrderService extends IService<TopOldOrder> {
 	 */
 	TopOldOrderVo queryById(String orderSn);
 
+	/**
+	 * 查询单个
+	 * @return
+	 */
+	List<String> queryOrderBusinessName(String orderSn);
+
 	/**
 	 * 查询列表
 	 */

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

@@ -311,6 +311,10 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         return orderVo;
     }
 
+    public List<String> queryOrderBusinessName(String orderSn){
+        return baseMapper.queryBusinessBySn(orderSn);
+    }
+
     @Override
     public List<TopOldOrderVo> queryList(TopOldOrderQueryBo bo) {
         //查询视图 v_top_order
@@ -408,6 +412,8 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         return orderVoList;
     }
 
+
+
     private BigDecimal getInstTimeSettleCost(TopOldOrderVo orderVo) {
         List<String> fullName = new ArrayList<>();
         if (orderVo.getOrderFrom() == 1) {
@@ -2022,6 +2028,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         List<TopOldOrderGoods> orderGoodsList = topOrderGoodsService
                 .list(new LambdaQueryWrapper<TopOldOrderGoods>()
                 .eq(TopOldOrderGoods::getCheckStatus, 0)
+                .eq(TopOldOrderGoods::getOrderSn,orderSn)
                 .eq(TopOldOrderGoods::getStatus, 1));
         if (CollectionUtils.isEmpty(orderGoodsList)){
             return new TopOldOrderUpVo();
@@ -2286,6 +2293,7 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
         vo.setOrderUncollected(orderVo.getOrderUncollected());
         vo.setOrderReceived(orderVo.getOrderReceived());
         vo.setBrokerage(orderVo.getBrokerage());
+        vo.setInvoiceStatus(orderVo.getInvoiceStatus());
         Map<String, List<TopOldOrderRefundVo>> map = refunds.stream().collect(Collectors.groupingBy(TopOldOrderRefundVo::getRefundSn));
         if (map.keySet().size() > 1) {
             //订单多次提交申请
@@ -2313,12 +2321,14 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                             //业务名称
                             String businessName = goodsService.getBusinessName(item.getGoodsId());
                             topRefundUserVo.setBusinessName(businessName);
+                            topRefundUserVo.setGoodsYear(g.getSevenYear());
                         } else {
                             TopOldOrderGoods orderGoods = topOrderGoodsService.getById(item.getOrderGoodsId());
                             topRefundUserVo.setUserName(orderGoods.getUserName());
                             topRefundUserVo.setUserCard(EncryptHandler.decrypt(orderGoods.getUserCard()));
                             topRefundUserVo.setBusinessName(orderGoods.getBusinessFullName());
                             topRefundUserVo.setGoodsName(orderGoods.getGoodsName());
+                            topRefundUserVo.setGoodsYear(orderGoods.getGoodsYear());
                         }
                         topRefundUserVo.setRefundSn(item.getRefundSn());
                         return topRefundUserVo;
@@ -2349,12 +2359,14 @@ public class TopOldOrderServiceImpl extends ServiceImpl<TopOldOrderMapper, TopOl
                     //业务名称
                     String businessName = goodsService.getBusinessName(item.getGoodsId());
                     topRefundUserVo.setBusinessName(businessName);
+                    topRefundUserVo.setGoodsYear(g.getSevenYear());
                 } else {
                     TopOldOrderGoods orderGoods = topOrderGoodsService.getById(item.getOrderGoodsId());
                     topRefundUserVo.setUserName(orderGoods.getUserName());
                     topRefundUserVo.setUserCard(EncryptHandler.decrypt(orderGoods.getUserCard()));
                     topRefundUserVo.setBusinessName(orderGoods.getBusinessFullName());
                     topRefundUserVo.setGoodsName(orderGoods.getGoodsName());
+                    topRefundUserVo.setGoodsYear(orderGoods.getGoodsYear());
                 }
                 topRefundUserVo.setRefundSn(item.getRefundSn());
                 return topRefundUserVo;

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

@@ -292,4 +292,7 @@ public class TopOldOrderVo {
 	/** 超收预期 1:7天,2:30天,3半年, 4:1年   */
 	@ApiModelProperty("超收预期 1:7天,2:30天,3半年, 4:1年")
 	private Long exceedType;
+
+	@ApiModelProperty("认款金额")
+	private BigDecimal acceptanceMoney;
 }

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

@@ -26,6 +26,9 @@ public class TopRefundOrderDetailVo {
     @ApiModelProperty("退款金额")
     private BigDecimal refundFee;
 
+    @ApiModelProperty("发票状态:0未开票,1已开票")
+    private Integer invoiceStatus;
+
     @ApiModelProperty("退款理由")
     private String refundReason;
 

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

@@ -23,6 +23,9 @@ public class TopRefundUserVo {
     @ApiModelProperty("业务类型")
     private String businessName;
 
+    @ApiModelProperty("商品年份")
+    private String goodsYear;
+
     @ApiModelProperty("课程名称")
     private String goodsName;
 

+ 39 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopAcceptanceOrderBo.java

@@ -0,0 +1,39 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月20日 8:58
+ */
+@Data
+public class TopAcceptanceOrderBo implements Serializable {
+
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+
+    @ApiModelProperty("订单号集合")
+    private List<String> orderSnList;
+
+    @ApiModelProperty("业务号")
+    private String createNo;
+
+    @ApiModelProperty("下单客户")
+    private String purchaseOrg;
+
+    @ApiModelProperty("姓名/身份证号")
+    private String userKey;
+
+    @ApiModelProperty("订单列表查询标识:1认款订单列表")
+    private Integer orderSign;
+}

+ 73 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceAddBo.java

@@ -0,0 +1,73 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 订单网银打款对象 top_order_bank_pay
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Data
+@ApiModel("订单认款")
+public class TopOrderAcceptanceAddBo implements Serializable {
+
+    /** 收款账号所属 */
+    @ApiModelProperty("收款账号所属")
+    private String incomeDepartment;
+    /** 收款类型:1对公 */
+    @ApiModelProperty("收款类型:1对公")
+    private Integer incomeType;
+    /** 收款账户名 */
+    @ApiModelProperty("收款账户名")
+    private String incomeName;
+    /** 收款账户行 */
+    @ApiModelProperty("收款账户行")
+    private String incomeBank;
+    /** 收款账户号 */
+    @ApiModelProperty("收款账户号")
+    private String incomeAccount;
+    /** 收款金额 */
+    @ApiModelProperty("收款金额")
+    private BigDecimal incomeMoney;
+    /** 到账时间 */
+    @ApiModelProperty("到账时间")
+    private Long incomeTime;
+    /** 付款账户名 */
+    @ApiModelProperty("付款账户名")
+    private String payName;
+    /** 付款账户行 */
+    @ApiModelProperty("付款账户行")
+    private String payBank;
+    /** 付款账户号 */
+    @ApiModelProperty("付款账户号")
+    private String payAccount;
+    /** 下单客户 */
+    @ApiModelProperty("下单客户")
+    private String orderClient;
+    /** 认款类型:1手动 2自动 */
+    @ApiModelProperty("认款类型:1手动 2自动")
+    private Integer acceptanceType;
+    /** 认款状态:1待认款 2已认款 3已撤销*/
+    @ApiModelProperty("认款状态:1待认款 2已认款 3已撤销")
+    private Integer acceptanceStatus;
+    /** 业务归属 */
+    @ApiModelProperty("业务归属")
+    private String businessAffiliation;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+    /** 1有效 0无效 */
+    @ApiModelProperty("1有效 0无效")
+    private Integer status;
+
+
+}

+ 52 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceBo.java

@@ -0,0 +1,52 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 订单网银打款对象 top_order_bank_pay
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Data
+@ApiModel("订单认款")
+public class TopOrderAcceptanceBo implements Serializable {
+
+    private Long acceptanceId;
+
+    @ApiModelProperty("分页大小")
+    private Integer pageSize;
+    /** 当前页数 */
+    @ApiModelProperty("当前页数")
+    private Integer pageNum;
+
+    @ApiModelProperty("业务归属")
+    private String businessAffiliation;
+
+    @ApiModelProperty("收款账户:1对公 2其他")
+    private Integer incomeType;
+
+    @ApiModelProperty("认款类型:1手动 2自动")
+    private Integer acceptanceType;
+
+    @ApiModelProperty("认款状态:1待认款 2已认款 3已撤销")
+    private Integer acceptanceStatus;
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+
+    @ApiModelProperty("下单企业")
+    private String orderClient;
+
+    @ApiModelProperty("到账开始时间")
+    private Long incomeStartTime;
+
+    @ApiModelProperty("到账结束时间")
+    private Long incomeEndTime;
+
+
+}

+ 58 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceExportBo.java

@@ -0,0 +1,58 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import com.zhongzheng.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 订单网银打款对象 top_order_bank_pay
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Data
+@ApiModel("订单认款")
+public class TopOrderAcceptanceExportBo implements Serializable {
+
+    /** 收款账户名 */
+    @ApiModelProperty("收款账户名")
+    @Excel(name = "*收款账户名")
+    private String incomeName;
+    /** 收款账户行 */
+    @ApiModelProperty("收款账户行")
+    @Excel(name = "*收款账户名")
+    private String incomeBank;
+    /** 收款账户号 */
+    @ApiModelProperty("收款账户号")
+    @Excel(name = "*收款账户号")
+    private String incomeAccount;
+    /** 收款金额 */
+    @ApiModelProperty("收款金额")
+    @Excel(name = "*收款金额")
+    private String incomeMoney;
+    /** 到账时间 */
+    @ApiModelProperty("到账时间")
+    @Excel(name = "*到账时间 yyyy/MM/dd")
+    private String incomeTime;
+    /** 付款账户名 */
+    @ApiModelProperty("付款账户名")
+    @Excel(name = "*到账时间")
+    private String payName;
+    /** 付款账户行 */
+    @ApiModelProperty("付款账户行")
+    @Excel(name = "*付款账户行")
+    private String payBank;
+    /** 付款账户号 */
+    @ApiModelProperty("付款账户号")
+    @Excel(name = "*付款账户号")
+    private String payAccount;
+    /** 下单客户 */
+    @ApiModelProperty("下单客户")
+    @Excel(name = "下单企业")
+    private String orderClient;
+
+}

+ 21 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderAcceptanceRelBo.java

@@ -0,0 +1,21 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月20日 9:24
+ */
+@Data
+public class TopOrderAcceptanceRelBo implements Serializable {
+
+    @ApiModelProperty("认款记录ID")
+    private Long acceptanceId;
+
+    @ApiModelProperty("订单号集合")
+    private List<TopOrderGoodsAcceptanceBo> goodsAcceptanceList;
+}

+ 22 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/bo/TopOrderGoodsAcceptanceBo.java

@@ -0,0 +1,22 @@
+package com.zhongzheng.modules.top.order.bo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月20日 9:24
+ */
+@Data
+public class TopOrderGoodsAcceptanceBo implements Serializable {
+
+    @ApiModelProperty("订单号")
+    private String orderSn;
+
+    @ApiModelProperty("认款金额")
+    private BigDecimal money;
+}

+ 71 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOrderAcceptance.java

@@ -0,0 +1,71 @@
+package com.zhongzheng.modules.top.order.domain;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 订单网银打款对象 top_order_bank_pay
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("top_order_acceptance")
+public class TopOrderAcceptance implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "acceptance_id")
+    private Long acceptanceId;
+    /** 收款账号所属 */
+    private String incomeDepartment;
+    /** 收款类型:1对公 */
+    private Integer incomeType;
+    /** 收款账户名 */
+    private String incomeName;
+    /** 收款账户行 */
+    private String incomeBank;
+    /** 收款账户号 */
+    private String incomeAccount;
+    /** 收款金额 */
+    private BigDecimal incomeMoney;
+    /** 认款金额 */
+    private BigDecimal acceptanceMoney;
+    /** 待认款金额 */
+    private BigDecimal unacceptanceMoney;
+    /** 到账时间 */
+    private Long incomeTime;
+    /** 付款账户名 */
+    private String payName;
+    /** 付款账户行 */
+    private String payBank;
+    /** 付款账户号 */
+    private String payAccount;
+    /** 下单客户 */
+    private String orderClient;
+    /** 认款类型:1手动 2自动 */
+    private Integer acceptanceType;
+    /** 认款状态:1待认款 2已认款 */
+    private Integer acceptanceStatus;
+    /** 业务归属 */
+    private String businessAffiliation;
+    /** 创建时间 */
+    private Long createTime;
+    /** 更新时间 */
+    private Long updateTime;
+    /** 1有效 0无效 */
+    private Integer status;
+
+
+}

+ 43 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/domain/TopOrderAcceptanceRel.java

@@ -0,0 +1,43 @@
+package com.zhongzheng.modules.top.order.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 订单网银打款对象 top_order_bank_pay
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Data
+@NoArgsConstructor
+@Accessors(chain = true)
+@TableName("top_order_acceptance_rel")
+public class TopOrderAcceptanceRel implements Serializable {
+
+private static final long serialVersionUID=1L;
+
+    /** $column.columnComment */
+    @TableId(value = "id")
+    private Long id;
+    /** 认款ID */
+    private Long acceptanceId;
+    /** 订单号 */
+    private String orderSn;
+    /** 认款金额 */
+    private BigDecimal acceptanceMoney;
+    /** 创建时间 */
+    private Long createTime;
+    /** 更新时间 */
+    private Long updateTime;
+    /** 1有效 0无效 */
+    private Integer status;
+
+
+}

+ 24 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/mapper/TopOrderAcceptanceMapper.java

@@ -0,0 +1,24 @@
+package com.zhongzheng.modules.top.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.bo.TopAcceptanceOrderBo;
+import com.zhongzheng.modules.top.order.bo.TopOrderAcceptanceBo;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptance;
+import com.zhongzheng.modules.top.order.domain.TopOrderBankPay;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceVo;
+
+import java.util.List;
+
+/**
+ * 订单网银打款Mapper接口
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+public interface TopOrderAcceptanceMapper extends BaseMapper<TopOrderAcceptance> {
+
+    List<TopOrderAcceptanceVo> queryAcceptanceList(TopOrderAcceptanceBo bo);
+
+    List<TopOldOrderVo> getAcceptanceOrderList(TopAcceptanceOrderBo bo);
+}

+ 15 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/mapper/TopOrderAcceptanceRelMapper.java

@@ -0,0 +1,15 @@
+package com.zhongzheng.modules.top.order.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptance;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptanceRel;
+
+/**
+ * 订单网银打款Mapper接口
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+public interface TopOrderAcceptanceRelMapper extends BaseMapper<TopOrderAcceptanceRel> {
+
+}

+ 13 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/ITopOrderAcceptanceRelService.java

@@ -0,0 +1,13 @@
+package com.zhongzheng.modules.top.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptanceRel;
+
+/**
+ * 订单网银打款Service接口
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+public interface ITopOrderAcceptanceRelService extends IService<TopOrderAcceptanceRel> {
+}

+ 36 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/ITopOrderAcceptanceService.java

@@ -0,0 +1,36 @@
+package com.zhongzheng.modules.top.order.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderAddBo;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.bo.*;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptance;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceStatisticsVo;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceVo;
+
+import java.util.List;
+
+/**
+ * 订单网银打款Service接口
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+public interface ITopOrderAcceptanceService extends IService<TopOrderAcceptance> {
+
+    List<TopOrderAcceptanceVo> queryAcceptanceList(TopOrderAcceptanceBo bo);
+
+    boolean insertByAddBo(TopOrderAcceptanceAddBo bo);
+
+    boolean deleteByAddBo(TopOrderAcceptanceBo bo);
+
+    TopOrderAcceptanceStatisticsVo statistics();
+
+    boolean importData(List<TopOrderAcceptanceExportBo> acceptanceExportBos);
+
+    List<TopOldOrderVo> getAcceptanceOrderList(TopAcceptanceOrderBo bo);
+
+    boolean addOrderAcceptanceRel(TopOrderAcceptanceRelBo bo);
+
+    List<TopOldOrderVo> getAcceptanceOrderRelList(Long acceptanceId);
+}

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

@@ -0,0 +1,22 @@
+package com.zhongzheng.modules.top.order.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptance;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptanceRel;
+import com.zhongzheng.modules.top.order.mapper.TopOrderAcceptanceMapper;
+import com.zhongzheng.modules.top.order.mapper.TopOrderAcceptanceRelMapper;
+import com.zhongzheng.modules.top.order.service.ITopOrderAcceptanceRelService;
+import com.zhongzheng.modules.top.order.service.ITopOrderAcceptanceService;
+import org.springframework.stereotype.Service;
+
+/**
+ * 订单网银打款Service业务层处理
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Service
+public class TopOrderAcceptanceRelServiceImpl extends ServiceImpl<TopOrderAcceptanceRelMapper, TopOrderAcceptanceRel> implements ITopOrderAcceptanceRelService {
+
+
+}

+ 222 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/service/impl/TopOrderAcceptanceServiceImpl.java

@@ -0,0 +1,222 @@
+package com.zhongzheng.modules.top.order.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhongzheng.common.exception.CustomException;
+import com.zhongzheng.common.utils.DateUtils;
+import com.zhongzheng.modules.top.financial.bo.TopOrderProceedsBo;
+import com.zhongzheng.modules.top.goods.bo.TopOldOrderAddBo;
+import com.zhongzheng.modules.top.goods.domain.TopOldOrder;
+import com.zhongzheng.modules.top.goods.service.ITopOldOrderService;
+import com.zhongzheng.modules.top.goods.vo.TopOldOrderVo;
+import com.zhongzheng.modules.top.order.bo.*;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptance;
+import com.zhongzheng.modules.top.order.domain.TopOrderAcceptanceRel;
+import com.zhongzheng.modules.top.order.mapper.TopOrderAcceptanceMapper;
+import com.zhongzheng.modules.top.order.service.ITopOrderAcceptanceRelService;
+import com.zhongzheng.modules.top.order.service.ITopOrderAcceptanceService;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceStatisticsVo;
+import com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 订单网银打款Service业务层处理
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Service
+public class TopOrderAcceptanceServiceImpl extends ServiceImpl<TopOrderAcceptanceMapper, TopOrderAcceptance> implements ITopOrderAcceptanceService {
+
+    @Autowired
+    private ITopOrderAcceptanceRelService iTopOrderAcceptanceRelService;
+    @Autowired
+    private ITopOldOrderService iTopOldOrderService;
+
+    @Override
+    public List<TopOrderAcceptanceVo> queryAcceptanceList(TopOrderAcceptanceBo bo) {
+        return baseMapper.queryAcceptanceList(bo);
+    }
+
+    @Override
+    public boolean insertByAddBo(TopOrderAcceptanceAddBo bo) {
+        bo.setAcceptanceType(1);
+        bo.setIncomeType(1);
+        bo.setIncomeDepartment("祥粤学校");
+        bo.setBusinessAffiliation("学校");
+        bo.setAcceptanceStatus(1);
+        bo.setCreateTime(DateUtils.getNowTime());
+        bo.setUpdateTime(DateUtils.getNowTime());
+        TopOrderAcceptance acceptance = BeanUtil.toBean(bo, TopOrderAcceptance.class);
+        //待认款金额
+        acceptance.setUnacceptanceMoney(bo.getIncomeMoney());
+        return save(acceptance);
+    }
+
+    @Override
+    public boolean deleteByAddBo(TopOrderAcceptanceBo bo) {
+        TopOrderAcceptance acceptance = getById(bo.getAcceptanceId());
+        if (ObjectUtils.isNull(acceptance)){
+            throw new CustomException("信息获取有误");
+        }
+        if (acceptance.getAcceptanceStatus() == 2){
+            throw new CustomException("已认款记录不能删除");
+        }
+        int count = iTopOrderAcceptanceRelService.count(new LambdaQueryWrapper<TopOrderAcceptanceRel>()
+                .eq(TopOrderAcceptanceRel::getAcceptanceId, bo.getAcceptanceId())
+                .eq(TopOrderAcceptanceRel::getStatus, 1));
+        if (count > 0){
+            throw new CustomException("已有认款记录不能删除");
+        }
+        acceptance.setStatus(-1);
+        return updateById(acceptance);
+    }
+
+    @Override
+    public TopOrderAcceptanceStatisticsVo statistics() {
+        List<TopOrderAcceptance> list = list(new LambdaQueryWrapper<TopOrderAcceptance>().eq(TopOrderAcceptance::getStatus, 1));
+        if (CollectionUtils.isEmpty(list)){
+            return new TopOrderAcceptanceStatisticsVo();
+        }
+        BigDecimal reduce = list.stream().map(TopOrderAcceptance::getIncomeMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal reduce2 = list.stream().map(TopOrderAcceptance::getAcceptanceMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal reduce3 = list.stream().map(TopOrderAcceptance::getUnacceptanceMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+        TopOrderAcceptanceStatisticsVo vo = new TopOrderAcceptanceStatisticsVo();
+        vo.setIncomeMoney(reduce);
+        vo.setAcceptanceMoney(reduce2);
+        vo.setUnacceptanceMoney(reduce3);
+        return vo;
+    }
+
+    @Override
+    public boolean importData(List<TopOrderAcceptanceExportBo> acceptanceExportBos) {
+        if (CollectionUtils.isEmpty(acceptanceExportBos)){
+            throw new CustomException("请勿导入空表");
+        }
+        List<TopOrderAcceptance> collect = acceptanceExportBos.stream().map(item -> {
+            TopOrderAcceptance bo = BeanUtil.toBean(item, TopOrderAcceptance.class);
+            bo.setIncomeMoney(new BigDecimal(item.getIncomeMoney()));
+            bo.setIncomeTime(DateUtils.dateTimeSec(item.getIncomeTime(),"yyyy/MM/dd"));
+            bo.setAcceptanceType(1);
+            bo.setIncomeType(1);
+            bo.setIncomeDepartment("祥粤学校");
+            bo.setBusinessAffiliation("学校");
+            bo.setAcceptanceStatus(1);
+            bo.setCreateTime(DateUtils.getNowTime());
+            bo.setUpdateTime(DateUtils.getNowTime());
+            return bo;
+        }).collect(Collectors.toList());
+
+        return updateBatchById(collect);
+    }
+
+    @Override
+    public List<TopOldOrderVo> getAcceptanceOrderList(TopAcceptanceOrderBo bo) {
+        bo.setOrderSign(1);
+        List<TopOldOrderVo> acceptanceOrderList = baseMapper.getAcceptanceOrderList(bo);
+        if (CollectionUtils.isEmpty(acceptanceOrderList)){
+            return new ArrayList<>();
+        }
+        acceptanceOrderList.forEach(item -> {
+            List<String> businessNames = iTopOldOrderService.queryOrderBusinessName(item.getOrderSn());
+            item.setBusinessNames(businessNames);
+            if (ObjectUtils.isNotNull(item.getOrderReceived()) && ObjectUtils.isNotNull(item.getOrderRefunded())) {
+                item.setOrderPractical(item.getOrderReceived().subtract(item.getOrderRefunded()));
+            }
+        });
+        return acceptanceOrderList;
+    }
+
+    @Override
+    public boolean addOrderAcceptanceRel(TopOrderAcceptanceRelBo bo) {
+        TopOrderAcceptance acceptance = getById(bo.getAcceptanceId());
+        if (ObjectUtils.isNull(acceptance)){
+            throw new CustomException("认款记录数据错误!");
+        }
+        if (acceptance.getIncomeMoney().compareTo(BigDecimal.ZERO) <= 0){
+            throw new CustomException("认款记录没有到账金额!");
+        }
+        BigDecimal reduce = bo.getGoodsAcceptanceList().stream().map(TopOrderGoodsAcceptanceBo::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
+        if (acceptance.getIncomeMoney().compareTo(reduce) < 0){
+            throw new CustomException("认款到账金额小于本次认款订单金额,不能认款,请重新选择!");
+        }
+        //到账金额
+        BigDecimal incomeMoney = acceptance.getIncomeMoney();
+        //认款金额
+        BigDecimal acceptanceMoney = BigDecimal.ZERO;
+        List<TopOrderAcceptanceRel> acceptanceRels = new ArrayList<>();
+        for (TopOrderGoodsAcceptanceBo acceptanceBo : bo.getGoodsAcceptanceList()) {
+            TopOldOrder item = iTopOldOrderService
+                    .getOne(new LambdaQueryWrapper<TopOldOrder>().eq(TopOldOrder::getOrderSn, acceptanceBo.getOrderSn()));
+            //本次认款金额
+            BigDecimal money = acceptanceBo.getMoney();
+            //认款
+            if (money.compareTo(BigDecimal.ZERO) > 0){
+                TopOrderProceedsBo proceedsBo = new TopOrderProceedsBo();
+                proceedsBo.setOrderSn(item.getOrderSn());
+                proceedsBo.setOrderReceived(money);
+                iTopOldOrderService.orderProceeds(proceedsBo);
+                acceptanceMoney = acceptanceMoney.add(money);
+                incomeMoney = incomeMoney.subtract(money);
+            }
+
+            TopOrderAcceptanceRel acceptanceRel = new TopOrderAcceptanceRel();
+            acceptanceRel.setOrderSn(item.getOrderSn());
+            acceptanceRel.setAcceptanceId(bo.getAcceptanceId());
+            acceptanceRel.setAcceptanceMoney(money);
+            acceptanceRel.setCreateTime(DateUtils.getNowTime());
+            acceptanceRel.setUpdateTime(DateUtils.getNowTime());
+            acceptanceRels.add(acceptanceRel);
+        }
+
+        //已认款金额
+        acceptance.setAcceptanceMoney(acceptance.getAcceptanceMoney().add(acceptanceMoney));
+        acceptance.setUnacceptanceMoney(acceptance.getIncomeMoney().subtract(acceptance.getAcceptanceMoney()));
+        if (acceptance.getUnacceptanceMoney().compareTo(BigDecimal.ZERO) <= 0){
+            acceptance.setAcceptanceStatus(1);//已认款
+        }
+        //保存关联关系
+        iTopOrderAcceptanceRelService.saveBatch(acceptanceRels);
+        return updateById(acceptance);
+    }
+
+    @Override
+    public List<TopOldOrderVo> getAcceptanceOrderRelList(Long acceptanceId) {
+        TopOrderAcceptance acceptance = getById(acceptanceId);
+        if (ObjectUtils.isNull(acceptance)){
+            throw new CustomException("认款记录数据错误!");
+        }
+        List<TopOrderAcceptanceRel> list = iTopOrderAcceptanceRelService
+                .list(new LambdaQueryWrapper<TopOrderAcceptanceRel>()
+                .eq(TopOrderAcceptanceRel::getAcceptanceId, acceptanceId)
+                .eq(TopOrderAcceptanceRel::getStatus, 1));
+        if (CollectionUtils.isEmpty(list)){
+            return new ArrayList<>();
+        }
+        TopAcceptanceOrderBo orderBo = new TopAcceptanceOrderBo();
+        orderBo.setOrderSnList(list.stream().map(TopOrderAcceptanceRel::getOrderSn).collect(Collectors.toList()));
+        List<TopOldOrderVo> acceptanceOrderList = baseMapper.getAcceptanceOrderList(orderBo);
+        acceptanceOrderList.forEach(item -> {
+            List<String> businessNames = iTopOldOrderService.queryOrderBusinessName(item.getOrderSn());
+            item.setBusinessNames(businessNames);
+            if (ObjectUtils.isNotNull(item.getOrderReceived()) && ObjectUtils.isNotNull(item.getOrderRefunded())) {
+                item.setOrderPractical(item.getOrderReceived().subtract(item.getOrderRefunded()));
+            }
+            for (TopOrderAcceptanceRel acceptanceRel : list) {
+                if (item.getOrderSn().equals(acceptanceRel.getOrderSn())){
+                    item.setAcceptanceMoney(acceptanceRel.getAcceptanceMoney());
+                }
+            }
+        });
+        return acceptanceOrderList;
+    }
+}

+ 24 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderAcceptanceStatisticsVo.java

@@ -0,0 +1,24 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * @author yangdamao
+ * @date 2023年10月19日 16:09
+ */
+@Data
+public class TopOrderAcceptanceStatisticsVo implements Serializable {
+
+    @ApiModelProperty("到账金额")
+    private BigDecimal incomeMoney;
+
+    @ApiModelProperty("认款金额")
+    private BigDecimal acceptanceMoney;
+
+    @ApiModelProperty("待认款金额")
+    private BigDecimal unacceptanceMoney;
+}

+ 80 - 0
zhongzheng-system/src/main/java/com/zhongzheng/modules/top/order/vo/TopOrderAcceptanceVo.java

@@ -0,0 +1,80 @@
+package com.zhongzheng.modules.top.order.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 订单网银打款对象 top_order_bank_pay
+ *
+ * @author hjl
+ * @date 2023-05-08
+ */
+@Data
+@ApiModel("订单认款")
+public class TopOrderAcceptanceVo implements Serializable {
+
+    private Long acceptanceId;
+    /** 收款账号所属 */
+    @ApiModelProperty("收款账号所属")
+    private String incomeDepartment;
+    /** 收款类型:1对公 */
+    @ApiModelProperty("收款类型:1对公")
+    private Integer incomeType;
+    /** 收款账户名 */
+    @ApiModelProperty("收款账户名")
+    private String incomeName;
+    /** 收款账户行 */
+    @ApiModelProperty("收款账户行")
+    private String incomeBank;
+    /** 收款账户号 */
+    @ApiModelProperty("收款账户号")
+    private String incomeAccount;
+    /** 收款金额 */
+    @ApiModelProperty("收款金额")
+    private BigDecimal incomeMoney;
+    /** 认款金额 */
+    @ApiModelProperty("认款金额")
+    private BigDecimal acceptanceMoney;
+    /** 待认款金额 */
+    @ApiModelProperty("待认款金额")
+    private BigDecimal unacceptanceMoney;
+    /** 到账时间 */
+    @ApiModelProperty("到账时间")
+    private Long incomeTime;
+    /** 付款账户名 */
+    @ApiModelProperty("付款账户名")
+    private String payName;
+    /** 付款账户行 */
+    @ApiModelProperty("付款账户行")
+    private String payBank;
+    /** 付款账户号 */
+    @ApiModelProperty("付款账户号")
+    private String payAccount;
+    /** 下单客户 */
+    @ApiModelProperty("下单客户")
+    private String orderClient;
+    /** 认款类型:1手动 2自动 */
+    @ApiModelProperty("认款类型:1手动 2自动")
+    private Integer acceptanceType;
+    /** 认款状态:1待认款 2已认款 3已撤销*/
+    @ApiModelProperty("认款状态:1待认款 2已认款 3已撤销")
+    private Integer acceptanceStatus;
+    /** 业务归属 */
+    @ApiModelProperty("业务归属")
+    private String businessAffiliation;
+    /** 创建时间 */
+    @ApiModelProperty("创建时间")
+    private Long createTime;
+    /** 更新时间 */
+    @ApiModelProperty("更新时间")
+    private Long updateTime;
+    /** 1有效 0无效 */
+    @ApiModelProperty("1有效 0无效")
+    private Integer status;
+
+
+}

+ 5 - 3
zhongzheng-system/src/main/java/com/zhongzheng/modules/user/service/impl/UserSubscribeServiceImpl.java

@@ -2712,11 +2712,13 @@ public class UserSubscribeServiceImpl extends ServiceImpl<UserSubscribeMapper, U
                 item.setQuestionStatus(2);
             }
             //考试状态
-            if (item.getSubscribeStatus() == 1 && item.getExamStatus() == 0){
+            if (item.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(item.getExamStatus()) && item.getExamStatus() == 0){
                 item.setApplyStatus(1);
-            }else if (item.getSubscribeStatus() == 1 && item.getExamStatus() == 1 && item.getResult() == 1){
+            }else if (item.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(item.getExamStatus())
+                    && item.getExamStatus() == 1 && ObjectUtils.isNotNull(item.getResult()) && item.getResult() == 1){
                 item.setApplyStatus(2);
-            }else if (item.getSubscribeStatus() == 1 && item.getExamStatus() == 1 && item.getResult() == 0){
+            }else if (item.getSubscribeStatus() == 1 && ObjectUtils.isNotNull(item.getExamStatus()) && item.getExamStatus() == 1
+                    && ObjectUtils.isNotNull(item.getResult()) && item.getResult() == 0){
                 item.setApplyStatus(3);
             }else {
                 item.setApplyStatus(item.getExamStatus());

+ 86 - 0
zhongzheng-system/src/main/resources/mapper/modules/top/TopOrderAcceptanceMapper.xml

@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhongzheng.modules.top.order.mapper.TopOrderAcceptanceMapper">
+
+  <select id="queryAcceptanceList" parameterType="com.zhongzheng.modules.top.order.bo.TopOrderAcceptanceBo"
+          resultType="com.zhongzheng.modules.top.order.vo.TopOrderAcceptanceVo">
+      SELECT
+          *
+      FROM
+          top_order_acceptance
+      WHERE
+          `status` = 1
+            <if test="businessAffiliation != null and businessAffiliation != ''">
+                AND business_affiliation = #{invoiceStatus}
+            </if>
+            <if test="incomeType != null and incomeType != ''">
+                AND income_type = #{incomeType}
+            </if>
+            <if test="acceptanceType != null and acceptanceType != ''">
+                AND acceptance_type = #{acceptanceType}
+            </if>
+            <if test="acceptanceStatus != null and acceptanceStatus != ''">
+                AND acceptance_status = #{acceptanceStatus}
+            </if>
+            <if test="orderSn != null and orderSn != ''">
+                AND acceptance_id IN (SELECT acceptance_id FROM top_order_acceptance_rel WHERE `status` = 1 AND order_sn = #{orderSn})
+            </if>
+            <if test="orderClient != null and orderClient != ''">
+                AND order_client = #{orderClient}
+            </if>
+            <if test="incomeStartTime != null and incomeStartTime != ''">
+                AND income_time <![CDATA[ >= ]]> #{incomeStartTime}
+            </if>
+            <if test="incomeEndTime != null and incomeEndTime != ''">
+                AND income_time <![CDATA[ <= ]]> #{incomeEndTime}
+            </if>
+       ORDER BY create_time DESC
+  </select>
+
+
+    <select id="getAcceptanceOrderList" parameterType="com.zhongzheng.modules.top.order.bo.TopAcceptanceOrderBo"
+            resultType="com.zhongzheng.modules.top.goods.vo.TopOldOrderVo">
+        SELECT
+            * ,
+            (SELECT st.tenant_name FROM sys_tenant st WHERE st.tenant_id = t.tenant_id) AS tenant_name
+        FROM
+            top_old_order t
+        WHERE
+            t.`status` = 1
+            AND t.check_status = 1
+            <if test="orderSign != null and orderSign != '' and orderSign == 1">
+                AND t.order_uncollected > 0
+            </if>
+            <if test="orderSn != null and orderSn != ''">
+                AND t.order_sn = #{orderSn}
+            </if>
+            <if test="orderSnList != null and orderSnList.size()!=0 ">
+                AND t.order_sn in
+                <foreach collection="orderSnList" item="item" index="index" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="createNo != null and createNo != ''">
+                AND t.create_no = #{createNo}
+            </if>
+            <if test="purchaseOrg != null and purchaseOrg != ''">
+                AND t.purchase_org = #{purchaseOrg}
+            </if>
+            <if test="userKey != null and userKey != ''">
+                AND (
+                SELECT
+                COUNT( DISTINCT tog.order_goods_id )
+                FROM
+                top_old_order_goods tog
+                WHERE
+                tog.order_sn = t.order_sn
+                AND tog.`status` = 1
+                AND tog.check_status = 1
+                AND ( tog.user_name = #{userKey} OR tog.user_card = #{userKey,typeHandler=com.zhongzheng.common.type.EncryptHandler} )) > 0
+            </if>
+            ORDER BY t.create_time DESC
+    </select>
+
+</mapper>