diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java index f3af558aa..1987227c2 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java @@ -145,13 +145,6 @@ public class WxFinanceController extends BaseController { @ApiOperation("预收科目新增修改") @PostMapping("saveAdvanceFees") public ResultData saveAdvanceType(@RequestBody WxEnergyFees record) { - record.updateTenantInfo(getTenantInfo()); - if (StringUtils.isBlank(record.getRate())) { - return new ResultData(Result.ERROR,"请填写抵扣比例"); - } - if (new BigDecimal(record.getRate()).compareTo(new BigDecimal(100)) > 0 ) { - return new ResultData(Result.ERROR,"冲抵比例不能超过100"); - } record.setBillType(EnumBillAllType.ADVANCE.getCode()); record.setFixedPrice(EnumYesOrNo.YES.getCode()); wxEnergyService.saveOrUpdateFees(record); @@ -162,7 +155,7 @@ public class WxFinanceController extends BaseController { @PostMapping("saveAdvance") public ResultData saveAdvance(@RequestBody WxFinanceReceive record) { record.updateTenantInfo(getTenantInfo()); - if (StringUtils.isBlank(record.getTotalMoney())) { + if (StringUtils.isBlank(record.getReceiveMoney())) { return new ResultData(Result.ERROR,"请填写金额"); } if (null == record.getFeesId()) { @@ -187,20 +180,18 @@ public class WxFinanceController extends BaseController { @PostMapping("setoffList") public ResultData setoffList(@ModelAttribute FinanceSetOffDTO dto) { dto.updateTenantInfo(getTenantInfo()); - return new ResultData(wxFinanceService.getSetOffList(dto)); + return new ResultData(wxFinanceService.getSetOffList(dto,true)); } @ApiOperation("计算冲抵") @PostMapping("calcueteSetoff") public ResultData calcueteSetoff(@RequestBody FinanceSetOffDTO dto) { dto.updateTenantInfo(getTenantInfo()); - WxBillBaseEntity bill = wxFinanceService.calcuetSetOff(dto,this.getUser()); + List bill = wxFinanceService.calcuetSetOff(dto,this.getUser()); if (null == bill) { return new ResultData(Result.ERROR,"未冲抵"); } - List list = new ArrayList(); - list.add(bill); - return new ResultData(wxFinanceService.getBills(dto, list)); + return new ResultData(bill); } @ApiOperation("新增收款单") @@ -211,7 +202,7 @@ public class WxFinanceController extends BaseController { return new ResultData(Result.ERROR,"请选择账单和支付方式"); } List list = wxFinanceService.createReceive(record,this.getUser()); - return new ResultData(wxFinanceService.getBills(record, list)); + return new ResultData(); } @GetMapping("receiveStatus") diff --git a/mallinkAdmin/src/main/resources/db/migration/V202407018.sql b/mallinkAdmin/src/main/resources/db/migration/V202407018.sql index e810aca39..8bd1eb8ab 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202407018.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202407018.sql @@ -2857,7 +2857,7 @@ CREATE TABLE `wx_finance_receive` ( UNIQUE KEY `id_UNIQUE` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='能耗表'; -CREATE TABLE `wx_finance_receive_bill` ( +CREATE TABLE `wx_finance_setoff_bill` ( `id` bigint(20) NOT NULL COMMENT '主键ID', `tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', `parent_tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父租户ID', diff --git a/mallinkAdmin/src/main/resources/db/migration/V202407019.sql b/mallinkAdmin/src/main/resources/db/migration/V202407019.sql index 87cb60e83..df6ecf03f 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202407019.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202407019.sql @@ -806,106 +806,7 @@ alter table wx_bill_other_deposit_97 add column set_off varchar(30) COMMENT alter table wx_bill_other_deposit_98 add column set_off varchar(30) COMMENT '抵扣金额'; alter table wx_bill_other_deposit_99 add column set_off varchar(30) COMMENT '抵扣金额'; -alter table wx_energy_fees_0 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_1 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_2 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_3 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_4 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_5 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_6 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_7 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_8 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_9 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_10 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_11 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_12 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_13 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_14 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_15 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_16 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_17 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_18 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_19 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_20 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_21 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_22 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_23 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_24 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_25 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_26 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_27 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_28 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_29 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_30 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_31 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_32 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_33 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_34 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_35 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_36 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_37 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_38 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_39 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_40 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_41 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_42 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_43 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_44 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_45 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_46 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_47 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_48 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_49 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_50 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_51 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_52 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_53 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_54 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_55 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_56 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_57 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_58 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_59 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_60 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_61 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_62 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_63 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_64 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_65 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_66 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_67 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_68 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_69 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_70 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_71 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_72 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_73 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_74 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_75 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_76 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_77 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_78 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_79 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_80 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_81 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_82 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_83 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_84 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_85 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_86 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_87 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_88 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_89 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_90 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_91 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_92 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_93 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_94 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_95 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_96 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_97 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_98 add column rate varchar(30) comment '抵扣比例';; -alter table wx_energy_fees_99 add column rate varchar(30) comment '抵扣比例';; + diff --git a/mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java b/mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java index 8047f1d3e..bd858c7e8 100644 --- a/mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java +++ b/mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java @@ -14,8 +14,9 @@ import lombok.Data; public class WxBillPayDTO extends TenantEntity{ private Long id; private Integer billTypeValue;// EnumBillAllType + private Long advanceId;//收款单单号 private String addpay;//支付金额 - private boolean isSetOff = false;//是否冲抵 + private String setOff;//冲抵金额 private WxBillPayWay payWayObject;//支付方式 private Long payWay;//传值 private String remark; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java index 5bee58a42..ba4513a04 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxEnergyFees.java @@ -179,9 +179,6 @@ public class WxEnergyFees extends TenantEntity { } } - @io.swagger.annotations.ApiModelProperty(value="冲抵比例",name="rate") - private String rate; - @TableField(exist = false) private List feesIds;//冲抵科目 @TableField(exist = false) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceive.java b/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceive.java index 4c708a999..1f7c1f4f0 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceive.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceive.java @@ -13,6 +13,7 @@ import lombok.EqualsAndHashCode; import lombok.ToString; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Date; import java.util.List; /** @@ -45,17 +46,21 @@ public class WxFinanceReceive extends TenantEntity { @TableField(exist = false) private String feesName; - @io.swagger.annotations.ApiModelProperty(value = "收款总金额", name = "totalMoney") - private String totalMoney; + @io.swagger.annotations.ApiModelProperty(value = "实收金额", name = "receiveMoney") + private String receiveMoney; - @io.swagger.annotations.ApiModelProperty(value = "已使用金额(预充值用)", name = "useMoney") + //跟useMoney的区别是,这个字段是记录此次收款冲抵了多少费用。useMoney是使用了自身多少的实收金额,预充用的到 + @io.swagger.annotations.ApiModelProperty(value = "冲抵金额", name = "setOffMoney") + private String setOffMoney; + + @io.swagger.annotations.ApiModelProperty(value = "已使用金额,冲抵里面使用", name = "useMoney") private String useMoney; public String getRemain() { if (StringUtils.isBlank(useMoney)) { useMoney = "0"; } - return new BigDecimal(totalMoney).subtract(new BigDecimal(useMoney)).toPlainString(); + return new BigDecimal(receiveMoney).subtract(new BigDecimal(useMoney)).toPlainString(); } @io.swagger.annotations.ApiModelProperty(value = "状态EnumFinanceReceiveStatus", name = "status") @@ -110,7 +115,4 @@ public class WxFinanceReceive extends TenantEntity { private Long floor; @TableField(exist = false) private String shopIds; - @TableField(exist = false) - private String rate; - } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceiveBill.java b/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceSetoffBill.java similarity index 85% rename from mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceiveBill.java rename to mallinkService/src/main/java/com/iformall/domain/po/WxFinanceSetoffBill.java index 62129ce32..be919e9b7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceReceiveBill.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceSetoffBill.java @@ -8,11 +8,11 @@ import lombok.ToString; import java.util.Date; /** */ -@TableName(value = "wx_finance_receive_bill") +@TableName(value = "wx_finance_setoff_bill") @Data @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) -public class WxFinanceReceiveBill extends TenantEntity { +public class WxFinanceSetoffBill extends TenantEntity { private static final long serialVersionUID = 7009117540201976664L; @@ -34,6 +34,9 @@ public class WxFinanceReceiveBill extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "账单类型EnumBillAllType", name = "billType") private Integer billType; + @io.swagger.annotations.ApiModelProperty(value="归属收款单ID",name="advanceId") + private Long advanceId; + @io.swagger.annotations.ApiModelProperty(value="科目编号",name="feesId") private Long feesId; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java index 49e6c9828..e9d40f273 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.common.SortColumn; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.FinanceSetOffDetailVo; import com.iformall.enums.EnumBillAction; import lombok.Data; @@ -207,4 +208,13 @@ public class WxBillBaseEntity extends TenantEntity { @TableField(exist = false) private Date needPayStartDay; + @TableField(exist = false) + private List setOffDetailList; + + @TableField(exist = false) + public String currentSetOff = "0"; + + @TableField(exist = false) + public String currentReceive = "0"; + } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/FinanceSetOffDetailVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/FinanceSetOffDetailVo.java new file mode 100644 index 000000000..d3bfa41d5 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/FinanceSetOffDetailVo.java @@ -0,0 +1,13 @@ +package com.iformall.domain.vo; + +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; + +/** + */ +@Data +public class FinanceSetOffDetailVo extends TenantEntity{ + private static final long serialVersionUID = -2767490210273313034L; + private Long advanceId; + private String setoff; +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumFinanceReceiveType.java b/mallinkService/src/main/java/com/iformall/enums/EnumFinanceReceiveType.java index 488af95ef..4c0ebbdf4 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumFinanceReceiveType.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumFinanceReceiveType.java @@ -6,8 +6,8 @@ package com.iformall.enums; public enum EnumFinanceReceiveType { - RECEIVE(1,"缴费"), - ADVANCE(2,"预充") + RECEIVE(1,"缴费收单"), + ADVANCE(2,"预充收单") ; public static EnumFinanceReceiveType getEnum(Integer code) { diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxFinanceReceiveBillMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxFinanceReceiveBillMapper.java deleted file mode 100644 index c47ebff91..000000000 --- a/mallinkService/src/main/java/com/iformall/mapper/WxFinanceReceiveBillMapper.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.iformall.mapper; - -import com.iformall.common.CommonMapper; -import com.iformall.domain.po.WxFinanceReceiveBill; -import org.apache.ibatis.annotations.Param; -import java.util.List; - -/** - */ -public interface WxFinanceReceiveBillMapper extends CommonMapper { - - List findList(WxFinanceReceiveBill wxBillRent); - - WxFinanceReceiveBill selectById(@Param("id")Long id,@Param("tenantId")String tenantId); - -} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxFinanceSetoffBillMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxFinanceSetoffBillMapper.java new file mode 100644 index 000000000..a6889af78 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxFinanceSetoffBillMapper.java @@ -0,0 +1,16 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxFinanceSetoffBill; +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + */ +public interface WxFinanceSetoffBillMapper extends CommonMapper { + + List findList(WxFinanceSetoffBill wxBillRent); + + WxFinanceSetoffBill selectById(@Param("id")Long id,@Param("tenantId")String tenantId); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxFinanceService.java b/mallinkService/src/main/java/com/iformall/service/WxFinanceService.java index cc34c1f00..c0f477bd8 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxFinanceService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxFinanceService.java @@ -7,7 +7,7 @@ import com.iformall.domain.dto.FinanceSetOffDTO; import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.WxBillPayWay; import com.iformall.domain.po.WxFinanceReceive; -import com.iformall.domain.po.WxFinanceReceiveBill; +import com.iformall.domain.po.WxFinanceSetoffBill; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.WxBillBaseEntity; import com.iformall.domain.vo.FinanceBillSetoffSum; @@ -27,13 +27,12 @@ public interface WxFinanceService { PageInfo receiveListAsPage(WxFinanceReceive record, Integer pageIndex, Integer pageSize); List createReceive(WxFinanceReceive record,MallUserInfo user); void saveOrUpdateReceive(WxFinanceReceive record,MallUserInfo user); - void saveOrUpdateReceiveBill(WxFinanceReceiveBill record); + void saveOrUpdateReceiveBill(WxFinanceSetoffBill record); WxFinanceReceive getReceiveById(TenantEntity tenantEntity,Long id); void invalidReceive(WxFinanceReceive record,MallUserInfo user); - List getBills(TenantEntity tenantEntity,List bills); //预收款 - WxBillBaseEntity calcuetSetOff(FinanceSetOffDTO dto,MallUserInfo user); + List calcuetSetOff(FinanceSetOffDTO dto,MallUserInfo user); FinanceBillSetoffSum getBillSetoffSum(WxFinanceReceive record); - List getSetOffList(FinanceSetOffDTO dto); + List getSetOffList(FinanceSetOffDTO dto,boolean isMerge); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java index 6287a035b..a8d535595 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java @@ -16,12 +16,14 @@ import com.iformall.domain.po.WxBillPayWay; import com.iformall.domain.po.WxEnergyFees; import com.iformall.domain.po.WxEnergyFeesSetoff; import com.iformall.domain.po.WxFinanceReceive; -import com.iformall.domain.po.WxFinanceReceiveBill; +import com.iformall.domain.po.WxFinanceSetoffBill; import com.iformall.domain.po.WxMerchant; import com.iformall.domain.po.WxShop; +import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.WxBillBaseEntity; import com.iformall.domain.vo.FinanceBillSetoffSum; +import com.iformall.domain.vo.FinanceSetOffDetailVo; import com.iformall.enums.EnumBillAllType; import com.iformall.enums.EnumBillStatus; import com.iformall.enums.EnumFinanceReceiveStatus; @@ -30,7 +32,7 @@ import com.iformall.enums.EnumYesOrNo; import com.iformall.exception.MallinkException; import com.iformall.mapper.WxBillPayWayMapper; import com.iformall.mapper.WxEnergyFeesSetoffMapper; -import com.iformall.mapper.WxFinanceReceiveBillMapper; +import com.iformall.mapper.WxFinanceSetoffBillMapper; import com.iformall.mapper.WxFinanceReceiveMapper; import com.iformall.service.WxBillAdvanceService; import com.iformall.service.WxEnergyService; @@ -69,7 +71,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { @Autowired WxFinanceReceiveMapper wxFinanceReceiveMapper; @Autowired - WxFinanceReceiveBillMapper wxFinanceReceiveBillMapper; + WxFinanceSetoffBillMapper wxFinanceReceiveBillMapper; @Lazy @Autowired @@ -191,7 +193,6 @@ public class WxFinanceServiceImpl implements WxFinanceService { WxEnergyFees wfat = advanceTypMap.get(at.getFeesId()); if (null != wfat) { at.setFeesName(wfat.getName()); - at.setRate(wfat.getRate()); } total.add(new BigDecimal(at.getRemain())); } @@ -202,23 +203,8 @@ public class WxFinanceServiceImpl implements WxFinanceService { return retMap; } - private FinanceBillSetoffSum getAdvanceListByFeesId(TenantEntity tenantEntity,Long feesId) { - WxEnergyFeesSetoff tf = new WxEnergyFeesSetoff(); - tf.updateTenantInfo(tenantEntity); - tf.setFeesId(feesId); - List feesIdList = wxEnergyFeesSetoffMapper.findadvanceFeesIdList(tf); - if (null != feesIdList && feesIdList.size() > 0 ) { - WxFinanceReceive faq = new WxFinanceReceive(); - faq.updateTenantInfo(tenantEntity); - faq.setFeesIdList(feesIdList); - return getBillSetoffSum(faq); - }else { - return null; - } - } - @Override - public List getSetOffList(FinanceSetOffDTO dto) { + public List getSetOffList(FinanceSetOffDTO dto,boolean isMerge) { if (null == dto.getBills() || dto.getBills().size() <= 0 ) { throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"请选择账单"); } @@ -233,82 +219,111 @@ public class WxFinanceServiceImpl implements WxFinanceService { } } //通过账单科目去查询可以抵扣的预充费用 - FinanceBillSetoffSum sum = getAdvanceListByFeesId(dto, billFeesId); - if (null == sum) { + WxEnergyFeesSetoff tf = new WxEnergyFeesSetoff(); + tf.updateTenantInfo(dto); + tf.setFeesId(billFeesId); + List feesIdList = wxEnergyFeesSetoffMapper.findadvanceFeesIdList(tf); + if (null != feesIdList && feesIdList.size() > 0 ) { + WxFinanceReceive faq = new WxFinanceReceive(); + faq.updateTenantInfo(dto); + faq.setFeesIdList(feesIdList); + if (isMerge) { + FinanceBillSetoffSum sum = getBillSetoffSum(faq); + if (null == sum) { + return null; + } + return sum.getAdvanceList(); + }else { + faq.setSortColumns(SortField.CreateTime_ASC); + return wxFinanceReceiveMapper.findList(faq); + } + + }else { return null; } - return sum.getAdvanceList(); } - - private String calcuteSetOffMoney(String rate,String money) { - if (new BigDecimal(money).compareTo(new BigDecimal(0)) <= 0) { - return "0"; + private void setSetOff(WxBillBaseEntity bill,List advanceList,Integer currentIndex) { + BigDecimal owe = new BigDecimal(bill.getOwe()); + BigDecimal b0 = new BigDecimal(0); + if (owe.compareTo(b0) <= 0) { + return; + }else { + List setoffList = bill.getSetOffDetailList(); + for (int j = currentIndex ; j < advanceList.size() ; j++) { + WxFinanceReceive advance = advanceList.get(j); + BigDecimal remain = new BigDecimal(advance.getRemain()); + if (remain.compareTo(b0) > 0) { + if (null == setoffList) { + setoffList = new ArrayList(); + } + FinanceSetOffDetailVo dv = new FinanceSetOffDetailVo(); + dv.setAdvanceId(advance.getId()); + BigDecimal billSetOff = null;//账单历史抵扣 + if (StringUtils.isBlank(bill.getSetOff())) { + billSetOff = new BigDecimal(bill.getSetOff()); + }else { + billSetOff = b0; + } + BigDecimal billCurrentSetOff = new BigDecimal(bill.getCurrentSetOff()); + //如果前面的不够,则后面的继续补 + if (remain.compareTo(owe) <= 0 ) { + //设置账单历史抵扣 + bill.setSetOff(billSetOff.add(remain).toPlainString()); + //设置账单本次抵扣 + bill.setCurrentSetOff(billCurrentSetOff.add(remain).toPlainString()); + //设置预充已使用金额 + advance.setUseMoney(advance.getReceiveMoney()); + dv.setSetoff(remain.toPlainString()); + setoffList.add(dv); + setSetOff(bill,advanceList,currentIndex); + }else { + bill.setSetOff(billSetOff.add(owe).toPlainString()); + bill.setCurrentSetOff(billCurrentSetOff.add(owe).toPlainString()); + advance.setUseMoney(new BigDecimal(advance.getUseMoney()).add(owe).toPlainString()); + dv.setSetoff(owe.toPlainString()); + setoffList.add(dv); + } + }else { + currentIndex = currentIndex+1; + } + } } - return new BigDecimal(money).multiply(new BigDecimal(rate)).divide(new BigDecimal(100)).toPlainString(); } @Override - public WxBillBaseEntity calcuetSetOff(FinanceSetOffDTO dto,MallUserInfo user) { + public List calcuetSetOff(FinanceSetOffDTO dto,MallUserInfo user) { //多个账单类型和科目必须一致 //优先冲抵时间早的账单,优先用时间早的预充费用来冲抵 if (null == dto.getBills() || dto.getBills().size() <= 0 || null == dto.getFeesIdList() || dto.getFeesIdList().size() <= 0 ) { throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"请选择账单和抵扣科目"); } //查询出账单可以抵扣的科目预收项 - List advanceList = getSetOffList(dto); - WxBillBaseEntity bill = wxBillAllHelper.getBillDetail(EnumBillAllType.getEnum(be.getBillType()), merchant, be.getId()); - if (new BigDecimal(bill.getOwe()).compareTo(b0) <= 0 ) { - }else { - billList.add(bill); - } - - //根据预充规则计算冲抵费用 - - WxBillBaseEntity bill = wxBillAllHelper.getBillDetail(EnumBillAllType.getEnum(dto.getBillType()), merchant, dto.getBillId()); - if (new BigDecimal(bill.getOwe()).compareTo(new BigDecimal(0)) <= 0) { + List advanceList = getSetOffList(dto,false); + if (null == advanceList || advanceList.size() <= 0 ) { return null; } - WxFinanceReceive advance = this.getReceiveById(dto, dto.getFinanceAdvanceId()); - WxEnergyFees ef = new WxEnergyFees(); - ef.updateTenantInfo(dto); - ef.setId(advance.getFeesId()); - WxEnergyFees advanceFees= wxEnergyService.getFeesById(ef); - //设置账单冲抵金额 - String money = calcuteSetOffMoney(advanceFees.getRate(),bill.getOwe()); - - - //应该是不创建收款记录。因为一个收款记录会包括收款和冲抵的账单详情 - - - //新增收款记录,冲抵,关联冲抵账单 - WxFinanceReceive addreceive = new WxFinanceReceive(); - addreceive.updateTenantInfo(dto); - addreceive.setTotalMoney(money); - addreceive.setMoneyDetail(JSON.toJSONString(advance)); - addreceive.setMerchantId(bill.getMerchantId()); -// addreceive.setRemark(advanceType.getName()+"冲抵"); -// addreceive.setType(EnumFinanceReceiveType.SETOFF.getCode()); - this.saveOrUpdateReceive(addreceive,user); - //更新账单 - WxBillPayDTO payDto = new WxBillPayDTO(); - payDto.updateTenantInfo(dto); - payDto.setId(bill.getId()); - payDto.setBillTypeValue(bill.getBillType()); - payDto.setAddpay(money); - payDto.setSetOff(true); - payDto.setRemark("冲抵单["+addreceive.getId()+"]"); - wxBillAllHelper.updatePay(payDto, user); - - //插入关联账单信息 - WxFinanceReceiveBill rb = new WxFinanceReceiveBill(); - rb.updateTenantInfo(dto); - rb.setReceiveId(addreceive.getId()); - rb.setBillId(bill.getId()); - rb.setBillType(bill.getBillType()); - rb.setFeesId(bill.getEnergyFeesId()); - saveOrUpdateReceiveBill(rb); - return bill; + //账单排序 + List bills = dto.getBills(); + sortBills(bills); + //每个账单去计算抵扣 + WxMerchant merchant = new WxMerchant(); + merchant.updateTenantInfo(dto); + Integer currentIndex = 0; + List retList = new ArrayList(); + for (int i = 0 ; i < bills.size() ; i ++) { + WxBillBaseEntity be = bills.get(i); + WxBillBaseEntity bill = wxBillAllHelper.getBillDetail(EnumBillAllType.getEnum(be.getBillType()), merchant, be.getId()); + be.setReceivePay(bill.getReceivePay()); + be.setPay(bill.getPay()); + be.setSetOff(bill.getSetOff()); + setSetOff(be, advanceList,currentIndex); + WxBillBaseEntity retb = new WxBillBaseEntity(); + retb.setId(be.getId()); + retb.setSetOffDetailList(be.getSetOffDetailList()); + retList.add(retb); + } + return retList; } private void initQueryParam(WxFinanceReceive record) { @@ -416,19 +431,19 @@ public class WxFinanceServiceImpl implements WxFinanceService { logger.error("保存失败,e:" + e.getMessage()); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } - //增加预收账单 - WxBillAdvance billAdvance = new WxBillAdvance(); - billAdvance.updateTenantInfo(user); - billAdvance.setMerchantId(record.getMerchantId()); - WxMerchant merchant = wxMerchantService.selectById(record.getMerchantId()); - billAdvance.setRentShopType(merchant.getRentShopType()); - billAdvance.setReceivePay(record.getTotalMoney()); - billAdvance.setPay("0"); - billAdvance.setStarttime(new Date()); - billAdvance.setEndtime(new Date()); - billAdvance.setStatus(EnumBillStatus.SET_OFF.getCode()); - billAdvance.setEnergyFeesId(record.getFeesId()); - wxBillAdvanceService.saveOrUpdate(billAdvance, user); +// //增加预收账单 +// WxBillAdvance billAdvance = new WxBillAdvance(); +// billAdvance.updateTenantInfo(user); +// billAdvance.setMerchantId(record.getMerchantId()); +// WxMerchant merchant = wxMerchantService.selectById(record.getMerchantId()); +// billAdvance.setRentShopType(merchant.getRentShopType()); +// billAdvance.setReceivePay(record.getTotalMoney()); +// billAdvance.setPay("0"); +// billAdvance.setStarttime(new Date()); +// billAdvance.setEndtime(new Date()); +// billAdvance.setStatus(EnumBillStatus.SET_OFF.getCode()); +// billAdvance.setEnergyFeesId(record.getFeesId()); +// wxBillAdvanceService.saveOrUpdate(billAdvance, user); } else { record.setUpdateBy(user.getId()); record.setUpdateByName(user.getName()); @@ -438,7 +453,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { } @Override - public void saveOrUpdateReceiveBill(WxFinanceReceiveBill record) { + public void saveOrUpdateReceiveBill(WxFinanceSetoffBill record) { Date date = new Date(); if (record.getId() == null) { final IdWorker idWorker = IdWorker.get(); @@ -482,95 +497,96 @@ public class WxFinanceServiceImpl implements WxFinanceService { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) @Override public List createReceive(WxFinanceReceive record,MallUserInfo user) { - //所选的账单按照时间先后排序,优先结清时间靠前的 - List billList = new ArrayList(); - WxMerchant merchant = new WxMerchant(); - merchant.updateTenantInfo(record); + //冲抵信息根据页面返回的账单抵扣信息直接保存入库 + //费用计算自动优先匹配时间最早的那个 + BigDecimal b0 = new BigDecimal(0); - for (int i = 0 ; i < record.getBills().size(); i ++) { - WxBillBaseEntity be = record.getBills().get(i); - WxBillBaseEntity bill = wxBillAllHelper.getBillDetail(EnumBillAllType.getEnum(be.getBillType()), merchant, be.getId()); - if (new BigDecimal(bill.getOwe()).compareTo(b0) <= 0 ) { - }else { - billList.add(bill); + //单保存冲抵的时候,实收金额为0 + BigDecimal receiveTotal = b0; + WxBillPayWay payWay0 = null; + if (null != record.getPayWays()) { + for (int i = 0 ; i < record.getPayWays().size() ; i ++) { + WxBillPayWay payWay = record.getPayWays().get(i); + if (StringUtils.isNotBlank(payWay.getMoney())) { + receiveTotal = receiveTotal.add(new BigDecimal(payWay.getMoney())); + if (null == payWay0) { + payWay0 = payWay; + } + } } } - if (billList.size() <= 0 ) { - return null; - } - sortBills(billList); - //增加一条收款记录。关联账单,账单更新收款信息 - BigDecimal total = new BigDecimal(0); - for (int i = 0 ; i < record.getPayWays().size() ; i ++) { - WxBillPayWay payWay = record.getPayWays().get(i); - total = total.add(new BigDecimal(payWay.getMoney())); - } + //冲抵总金额 + BigDecimal setOffTotal = b0; + List bills = record.getBills(); + sortBills(bills); + + //创建一个收款单,关联账单 WxFinanceReceive addreceive = new WxFinanceReceive(); addreceive.updateTenantInfo(record); - addreceive.setTotalMoney(total.toPlainString()); - addreceive.setMoneyDetail(JSON.toJSONString(record.getPayWays())); - addreceive.setMerchantId(record.getMerchantId()); - addreceive.setRemark(record.getRemark()); + addreceive.setStatus(EnumFinanceReceiveStatus.NORMAL.getCode()); addreceive.setType(EnumFinanceReceiveType.RECEIVE.getCode()); - this.saveOrUpdateReceive(record,user); - - WxBillPayWay payWay = record.getPayWays().get(0); - List updateList = new ArrayList(); - for (int i = 0 ; i < billList.size(); i ++) { - WxBillBaseEntity bill = billList.get(i); - if (total.compareTo(b0) > 0 ) { + addreceive.setReceiveMoney(receiveTotal.toPlainString()); + if (receiveTotal.compareTo(b0) > 0) { + addreceive.setMoneyDetail(JSON.toJSONString(record.getPayWays())); + } + WxMerchant merchant = new WxMerchant(); + merchant.updateTenantInfo(record); + for (int i = 0 ; i < record.getBills().size(); i++) { + WxBillBaseEntity be = record.getBills().get(i); + //计算账单收款费用,更新账单收款 + if (receiveTotal.compareTo(b0) > 0) { + WxBillBaseEntity bill = wxBillAllHelper.getBillDetail(EnumBillAllType.getEnum(be.getBillType()), merchant, be.getId()); + //有收款,就要更新账单的收款 //更新账单收款信息 String money = ""; BigDecimal oweDecimal = new BigDecimal(bill.getOwe()); - if (oweDecimal.compareTo(total) < 0 ) { + if (oweDecimal.compareTo(receiveTotal) < 0 ) { money = bill.getOwe(); - total = total.subtract(oweDecimal); + receiveTotal = receiveTotal.subtract(oweDecimal); }else { - money = total.toPlainString(); - total = b0; + money = receiveTotal.toPlainString(); + receiveTotal = b0; } WxBillPayDTO payDto = new WxBillPayDTO(); - payDto.setId(bill.getId()); - payDto.setBillTypeValue(bill.getBillType()); + payDto.setId(be.getId()); + payDto.setBillTypeValue(be.getBillType()); + payDto.setAdvanceId(addreceive.getId()); payDto.setAddpay(money); - payDto.setPayWay(payWay.getId()); - payDto.setPayWayObject(payWay); + payDto.setPayWay(payWay0.getId()); + payDto.setPayWayObject(payWay0); payDto.setRemark("系统收款:收款单["+addreceive.getId()+"]"+record.getRemark()); + be.setCurrentReceive(money); + //并且有抵扣 + if(StringUtils.isNotBlank(be.getCurrentSetOff())) { + payDto.setSetOff(be.getCurrentSetOff()); + for (int j = 0 ; j < be.getSetOffDetailList().size(); j ++ ) { + FinanceSetOffDetailVo setoffdetail = be.getSetOffDetailList().get(j); + //关联冲抵 + WxFinanceSetoffBill rb = new WxFinanceSetoffBill(); + rb.updateTenantInfo(record); + rb.setReceiveId(addreceive.getId()); + rb.setBillId(bill.getId()); + rb.setBillType(bill.getBillType()); + rb.setFeesId(bill.getEnergyFeesId()); + rb.setPayWay(payWay0.getId()); + saveOrUpdateReceiveBill(rb); + } + + } wxBillAllHelper.updatePay(payDto, user); - //插入关联账单信息 - WxFinanceReceiveBill rb = new WxFinanceReceiveBill(); - rb.updateTenantInfo(record); - rb.setReceiveId(addreceive.getId()); - rb.setBillId(bill.getId()); - rb.setBillType(bill.getBillType()); - rb.setFeesId(bill.getEnergyFeesId()); - rb.setPayWay(payWay.getId()); - saveOrUpdateReceiveBill(rb); - - updateList.add(bill); - } - } - if (updateList.size() <= 0 ) { - return null; - } - return updateList; - } - - @Override - public List getBills(TenantEntity tenantEntity,List bills) { - if (null != bills && bills.size() > 0 ) { - WxMerchant merchant = new WxMerchant(); - merchant.updateTenantInfo(tenantEntity); - List retList = new ArrayList(); - for (int i = 0 ; i < bills.size() ; i++) { - WxBillBaseEntity be = bills.get(i); - WxBillBaseEntity bill = wxBillAllHelper.getBillDetail(EnumBillAllType.getEnum(be.getBillType()), merchant, be.getId()); - retList.add(bill); + }else if (StringUtils.isNotBlank(be.getCurrentSetOff())) { + setOffTotal = setOffTotal.add(new BigDecimal(be.getCurrentSetOff())); + //没收款,有冲抵,就要更新账单的冲抵,然后把对应的预充值使用金额更新,并进行关联 } - return retList; } - return null; + + + addreceive.setSetOffMoney(setOffTotal.toPlainString()); + addreceive.setMerchantId(record.getMerchantId()); + addreceive.setRemark(record.getRemark()); + this.saveOrUpdateReceive(record,user); + return bills; } @Override diff --git a/mallinkService/src/main/resources/mapper/WxEnergyFeesMapper.xml b/mallinkService/src/main/resources/mapper/WxEnergyFeesMapper.xml index a2860a2bf..2ca0ad8dc 100644 --- a/mallinkService/src/main/resources/mapper/WxEnergyFeesMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxEnergyFeesMapper.xml @@ -17,12 +17,11 @@ - `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`is_del`,`name`,`price`,`public_calcute`,`type`,`bill_type`,`is_system`, - `fixed_price`,`calcute_unit`,`time_unit`,`rate` + `fixed_price`,`calcute_unit`,`time_unit` diff --git a/mallinkService/src/main/resources/mapper/WxFinanceReceiveMapper.xml b/mallinkService/src/main/resources/mapper/WxFinanceReceiveMapper.xml index a98c8ecc9..31ebc10b4 100644 --- a/mallinkService/src/main/resources/mapper/WxFinanceReceiveMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxFinanceReceiveMapper.xml @@ -7,7 +7,8 @@ - + + @@ -22,7 +23,7 @@ - `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`total_money`,`use_money`,`status`,`type`,`money_detail`, + `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`receive_money`,`set_off_money`,`use_money`,`status`,`type`,`money_detail`, `create_by`,`create_by_name`,`update_by`,`update_by_name`,`merchant_id`,`remark`,`feesId` @@ -80,7 +81,7 @@