diff --git a/mallinkAdmin/src/main/resources/db/migration/V2022012000001__optimize.sql b/mallinkAdmin/src/main/resources/db/migration/V2022012000001__optimize.sql index 00b4e5815..e4ad69908 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V2022012000001__optimize.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V2022012000001__optimize.sql @@ -1009,3 +1009,23 @@ UPDATE wx_batch_order_97 bo, wx_order_97 o SET bo.order_type=o.compose_order_ty UPDATE wx_batch_order_98 bo, wx_order_98 o SET bo.order_type=o.compose_order_type WHERE bo.id = o.compose_order_id; UPDATE wx_batch_order_99 bo, wx_order_99 o SET bo.order_type=o.compose_order_type WHERE bo.id = o.compose_order_id; +ALTER TABLE `wx_bill_settle` ADD COLUMN `has_recorded` int(1) NOT NULL DEFAULT 0 COMMENT '是否已经被统计 1:已经被统计' ; + +CREATE TABLE `wx_bill_settle_schedule` ( + `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', + `settle_number` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '结算单号', + `merchant_id` bigint(20) DEFAULT NULL COMMENT '商户ID', + `status` smallint(1) DEFAULT '0' COMMENT '7待清算3结算完成', + `apply_status` smallint(1) DEFAULT '0' COMMENT '审核状态0未审核1审核中2审核完成3驳回4异常终止5撤回', + `receive_money` bigint(12) DEFAULT '0' COMMENT '收款', + `pay_money` bigint(12) DEFAULT '0' COMMENT '承付', + `settletime` datetime DEFAULT NULL COMMENT '结算时间', + `createtime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updatetime` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', + `settle_receive_pay` bigint(12) NOT NULL DEFAULT '0' COMMENT '结算收款,定时统计', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='结算单'; + + diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java index d7d3cab62..9048a0ca6 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxBillController.java @@ -38,26 +38,26 @@ public class WxBillController extends BaseController { @Autowired WxBillSettleService wxBillSettleService; - @ApiOperation("所有欠缴和待缴的数据") - @PostMapping("listBillOweAndWaitPay") - public ResultData listBillOweAndWaitPay(@RequestBody WxBillAll wxBillAll) { - - if(StringUtils.isEmpty(wxBillAll.getTenantId())){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"tenantId不能为空"); - } - if(wxBillAll.getMerchantId()==null){ - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"merchantId不能为空"); - } - WxMerchant wxMerchant = wxMerchantService.getById(wxBillAll.getMerchantId()); - if(wxMerchant==null){ - return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); - } - if(wxMerchant.getStatus().equals(EnumMerchantStatus.NOT_VALID.getCode())){ - return new ResultData(ErrorCode.MERCHANT_INFO_NOT_VALID); - } - List> result=wxBillAllService.listBillOweAndWaitPay(wxBillAll); - return new ResultData(result); - } +// @ApiOperation("所有欠缴和待缴的数据") +// @PostMapping("listBillOweAndWaitPay") +// public ResultData listBillOweAndWaitPay(@RequestBody WxBillAll wxBillAll) { +// +// if(StringUtils.isEmpty(wxBillAll.getTenantId())){ +// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"tenantId不能为空"); +// } +// if(wxBillAll.getMerchantId()==null){ +// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"merchantId不能为空"); +// } +// WxMerchant wxMerchant = wxMerchantService.getById(wxBillAll.getMerchantId()); +// if(wxMerchant==null){ +// return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); +// } +// if(wxMerchant.getStatus().equals(EnumMerchantStatus.NOT_VALID.getCode())){ +// return new ResultData(ErrorCode.MERCHANT_INFO_NOT_VALID); +// } +// List> result=wxBillAllService.listBillOweAndWaitPay(wxBillAll); +// return new ResultData(result); +// } @ApiOperation("账单") @PostMapping("listBill") @@ -69,6 +69,9 @@ public class WxBillController extends BaseController { if(wxBillAll.getMerchantId()==null){ return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"merchantId不能为空"); } + if(wxBillAll.getBillTypeValue()==null){ + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"billTypeValue不能为空"); + } WxMerchant wxMerchant = wxMerchantService.getById(wxBillAll.getMerchantId()); if(wxMerchant==null){ return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); @@ -84,7 +87,7 @@ public class WxBillController extends BaseController { logger.info("开始时间和结束时间要同时存在或不存在"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(),"starttime和endtime要同时存在或不存在"); } - return wxBillAllService.listBill(wxBillAll); + return wxBillAllService.listBill(wxBillAll,wxMerchant); } diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/BillSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/BillSchedule.java new file mode 100644 index 000000000..87c6e5a86 --- /dev/null +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/BillSchedule.java @@ -0,0 +1,50 @@ +package com.iformall.schedule; + +import com.iformall.domain.vo.WxBillAll; +import com.iformall.mapper.WxBillAllMapper; +import com.iformall.service.WxBillAllService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; +import java.util.List; + +@Component +public class BillSchedule { + + + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxBillAllMapper wxBillAllMapper; + + @Autowired + WxBillAllService wxBillAllService; + + /** + * 每天1点执行 + * 结算账单 + */ + @Async + @Scheduled(cron = "0 0 1 * * ?") + public void settleBill() { + WxBillAll wxBillAll = new WxBillAll(); + //wxBillAll.updateTenantInfo(wxBillAll); + List settleBillIdList = wxBillAllMapper.listToSettleBillIdList(wxBillAll); + if (null != settleBillIdList && settleBillIdList.size() > 0 ) { + for (int i = 0 ; i < settleBillIdList.size(); i ++) { + Long settleId = settleBillIdList.get(i); + try { + Double pay = wxBillAllService.calcuteSettleBillReceivePay(settleId); + wxBillAllService.createBillSettleSchedule(settleId, pay); + }catch(Exception e) { + logger.error("settleBill error.",e); + } + } + } + + } + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java index 4d185f1d6..d8f716d96 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java @@ -22,7 +22,13 @@ import java.util.Map; @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) public class WxBillDaily extends TenantEntity { - protected Long id; + /** + * + */ + private static final long serialVersionUID = 5004263718907992977L; + + + protected Long id; @TableField(exist = false) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillOther.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillOther.java index 0af0b5520..daddddd8c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillOther.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillOther.java @@ -23,7 +23,12 @@ import java.util.Map; @EqualsAndHashCode(callSuper = true) public class WxBillOther extends TenantEntity { - protected Long id; + /** + * + */ + private static final long serialVersionUID = -5919107280859407195L; + + protected Long id; @Excel(name = "商户名称", width = 20, orderNum = "2") @TableField(exist = false) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java index 4cd359f94..75ff9b01b 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java @@ -21,7 +21,12 @@ import java.util.Date; @EqualsAndHashCode(callSuper = true) public class WxBillProperty extends TenantEntity { - protected Long id; + /** + * + */ + private static final long serialVersionUID = -4019665043805504986L; + + protected Long id; @Excel(name = "商户名称", width = 20, orderNum = "2") @TableField(exist = false) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java index 6643e2b7f..1b57de98c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java @@ -20,7 +20,12 @@ import java.util.Map; @EqualsAndHashCode(callSuper = true) public class WxBillSettle extends TenantEntity { - protected Long id; + /** + * + */ + private static final long serialVersionUID = 4737561313157612702L; + + protected Long id; @io.swagger.annotations.ApiModelProperty(value="结算单号",name="settleNumber") @Excel(name="结算单号",width = 20,orderNum = "1") @@ -51,6 +56,9 @@ public class WxBillSettle extends TenantEntity { private Date createtime; @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updatetime") private Date updatetime; + + @io.swagger.annotations.ApiModelProperty(value="是否已经统计,EnumHasRecorded.class",name="hasRecorded") + private Integer hasRecorded; @TableField(exist = false) @io.swagger.annotations.ApiModelProperty(value = "审批流参数", name = "flowParams") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettleSchedule.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettleSchedule.java new file mode 100644 index 000000000..ba4b092be --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettleSchedule.java @@ -0,0 +1,66 @@ +package com.iformall.domain.po; + +import cn.afterturn.easypoi.excel.annotation.Excel; +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 lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author gongbiao + */ +@TableName(value = "wx_bill_settle_schedule") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxBillSettleSchedule extends TenantEntity { + + /** + * + */ + private static final long serialVersionUID = -5919107280859407195L; + + protected Long id; + + @io.swagger.annotations.ApiModelProperty(value="结算单号",name="settleNumber") + @Excel(name="结算单号",width = 20,orderNum = "1") + private String settleNumber; + @TableField(exist = false) + @Excel(name="结算商户",width = 20,orderNum = "2") + private String merchantName; + @io.swagger.annotations.ApiModelProperty(value="商户id",name="merchantId") + private Long merchantId; + @io.swagger.annotations.ApiModelProperty(value="0待确认1未清算结余金额2结算完成",name="status") + @Excel(name="结算状态",width = 20,orderNum = "8") + private Integer status; + @io.swagger.annotations.ApiModelProperty(value="审核状态0未审核1审核中2审核完成3驳回4异常终止5撤回",name="applyStatus") + @Excel(name="审批状态",width = 20,orderNum = "9") + private Integer applyStatus; + @Excel(name="收款(元)",width = 20,orderNum = "4") + @io.swagger.annotations.ApiModelProperty(value="收款",name="receiveMoney") + private Long receiveMoney; + @io.swagger.annotations.ApiModelProperty(value="承付",name="payMoney") + @Excel(name="承付(元)",width = 20,orderNum = "5") + private Long payMoney; + @io.swagger.annotations.ApiModelProperty(value="结算时间",name="settletime") + @Excel(name="结算时间",width = 20,orderNum = "7") + private Date settletime; + + @Excel(name="创建时间",width = 20,orderNum = "3") + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") + private Date createtime; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updatetime") + private Date updatetime; + + @io.swagger.annotations.ApiModelProperty(value="结算收款,定时统计",name="settleReceivePay") + private Long settleReceivePay; + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantSubsidy.java b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantSubsidy.java index d189637ff..955187786 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantSubsidy.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxMerchantSubsidy.java @@ -19,7 +19,12 @@ import java.util.List; @EqualsAndHashCode(callSuper = true) public class WxMerchantSubsidy extends TenantEntity { - protected Long id; + /** + * + */ + private static final long serialVersionUID = -2906255307445909293L; + + protected Long id; @TableField(exist = false) protected String idStr; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumBillQueryType.java b/mallinkService/src/main/java/com/iformall/enums/EnumBillQueryType.java new file mode 100644 index 000000000..5b408a9db --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumBillQueryType.java @@ -0,0 +1,44 @@ +package com.iformall.enums; + + +/** + * @author gongbiao + */ + +public enum EnumBillQueryType { + + RENT(1,"租金"), + RENT_DEPOSIT(2,"租赁押金"), + PROPERTY(3,"物业"), + PROPERTY_DEPOSIT(4, "物业押金"), + WATER_POWER_AIR(5, "水电空调费"), + OTHER(7, "其他"), + OTHER_DEPOSIT(8, "其他押金"), + SETTLE(10, "结算单") + ; + + public static EnumBillQueryType getEnum(Integer code) { + for (EnumBillQueryType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumBillQueryType(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumHasRecorded.java b/mallinkService/src/main/java/com/iformall/enums/EnumHasRecorded.java new file mode 100644 index 000000000..bd3004526 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumHasRecorded.java @@ -0,0 +1,34 @@ +package com.iformall.enums; + +/** + * Created by Stormeye on 2018/08/09. + */ +public enum EnumHasRecorded { + YES(1, "已经被统计"), + NO(0, "未被统计"); + + public static EnumHasRecorded getEnum(Integer code) { + for (EnumHasRecorded value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumHasRecorded(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBillAllMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillAllMapper.java index 4b445c124..04ce46940 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxBillAllMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillAllMapper.java @@ -1,11 +1,18 @@ package com.iformall.mapper; +import com.iformall.domain.po.WxBillDaily; +import com.iformall.domain.po.WxBillOther; +import com.iformall.domain.po.WxBillProperty; +import com.iformall.domain.po.WxBillRent; +import com.iformall.domain.po.WxMerchantSubsidy; import com.iformall.domain.vo.WxBillAll; import com.iformall.domain.vo.WxBillAllVo; import java.util.List; import java.util.Map; +import org.apache.ibatis.annotations.Param; + /** * @author gongbiao */ @@ -18,8 +25,17 @@ public interface WxBillAllMapper { Map queryPaidInfo(WxBillAll record); - List> listData(WxBillAll wxBillAll); - + //List> listData(WxBillAll wxBillAll); + + List> listRentBillData(WxBillAll wxBillAll); + List> listRentDepositBillData(WxBillAll wxBillAll); + List> listPropertyBillData(WxBillAll wxBillAll); + List> listPropertyDepositBillData(WxBillAll wxBillAll); + List> listDailyBillData(WxBillAll wxBillAll); + List> listOtherBillData(WxBillAll wxBillAll); + List> listOtherDepositBillData(WxBillAll wxBillAll); + List> listSettleBillData(WxBillAll wxBillAll); + List> getWaitPayBill(); List> getOweBill(); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleMapper.java index 8e3148041..64ae17d8c 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleMapper.java @@ -4,6 +4,8 @@ import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxBillSettle; import java.util.List; +import org.apache.ibatis.annotations.Param; + /** * @author luozukai */ @@ -13,6 +15,8 @@ public interface WxBillSettleMapper extends CommonMapper { void update(WxBillSettle record); + + void updateRecorded(@Param("id")Long id); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleScheduleMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleScheduleMapper.java new file mode 100644 index 000000000..507ad615f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleScheduleMapper.java @@ -0,0 +1,35 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxBillDaily; +import com.iformall.domain.po.WxBillOther; +import com.iformall.domain.po.WxBillProperty; +import com.iformall.domain.po.WxBillRent; +import com.iformall.domain.po.WxBillSettleSchedule; +import com.iformall.domain.po.WxMerchantSubsidy; +import com.iformall.domain.vo.WxBillAll; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +/** + * @author luozukai + */ +public interface WxBillSettleScheduleMapper extends CommonMapper { + + void createScheduleFromBillSettle(@Param("id") Long id,@Param("settleReceivePay") Double settleReceivePay); + + List listToSettleBillIdList(WxBillAll wxBillAll); + List listBillSettleBillBillId(@Param("settleId")Long settleId, @Param("type")Integer type); + Double calculteRentRecivePay(WxBillRent billRent); + Double calculteRentDepositRecivePay(WxBillRent billRent); + Double calcultePropertyRecivePay(WxBillProperty billProperty); + Double calcultePropertyDepositRecivePay(WxBillProperty billProperty); + Double calculteDailyRecivePay(WxBillDaily billDaily); + Double calculteOtherRecivePay0(WxBillOther billOther); + Double calculteOtherRecivePay1(WxBillOther billOther); + Double calculteOtherDepositRecivePay0(WxBillOther billOther); + Double calculteMerchantSubsidyRecivePay1(WxMerchantSubsidy merchantSubsidy); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java b/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java index bcd11e730..f5af0d28c 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java @@ -3,6 +3,7 @@ package com.iformall.service; import com.iformall.common.ResultData; import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.po.WxBillSettle; +import com.iformall.domain.po.WxMerchant; import com.iformall.domain.vo.WxBillAll; import com.iformall.domain.vo.WxBillAllVo; import com.iformall.domain.vo.WxBillExcelTemplate; @@ -23,9 +24,9 @@ public interface WxBillAllService { Map listAsPage(WxBillAll wxBillAll, Integer pageNum, Integer pageSize); - List> listBillOweAndWaitPay(WxBillAll wxBillAll); + //List> listBillOweAndWaitPay(WxBillAll wxBillAll); - ResultData listBill(WxBillAll wxBillAll); + ResultData listBill(WxBillAll wxBillAll,WxMerchant wxMerchant); void updateBill(Map bill); @@ -81,5 +82,9 @@ public interface WxBillAllService { void importBill(String importKey, WxBillExcelTemplate bill, MallUserInfo user); void importBillOther(String importKey, WxBillExcelTemplateOther bill, MallUserInfo user); + + Double calcuteSettleBillReceivePay(Long settleId); + + void createBillSettleSchedule(Long settleId,Double settleReceivePay); } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java index 8769ec6bc..72a7e2e07 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java @@ -31,6 +31,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -147,6 +149,15 @@ public class WxBillAllServiceImpl implements WxBillAllService { @Lazy @Autowired WxPayAccountBillService wxPayAccountBillService; + + @Autowired + WxBillSettleScheduleMapper wxBillSettleScheduleMapper; + + @Autowired + WxShopMapper wxShopMapper; + + @Autowired + WxPayBillMapper wxPayBillMapper; @Override public Map listAsPage(WxBillAll record, Integer pageIndex, Integer pageSize) { @@ -192,78 +203,93 @@ public class WxBillAllServiceImpl implements WxBillAllService { } } - @Override - public List> listBillOweAndWaitPay(WxBillAll wxBillAll) { - //更新各账单状态 - //updateBillStatus(wxBillAll); - ArrayList statusList = new ArrayList<>(); - statusList.add(EnumBillRentStatus.NOT_PAID.getCode()); - statusList.add(EnumBillRentStatus.WAIT_PAY.getCode()); - wxBillAll.setStatusList(statusList); - return wxBillAllMapper.listData(wxBillAll); - } +// @Override +// public List> listBillOweAndWaitPay(WxBillAll wxBillAll) { +// //更新各账单状态 +// //updateBillStatus(wxBillAll); +// ArrayList statusList = new ArrayList<>(); +// statusList.add(EnumBillRentStatus.NOT_PAID.getCode()); +// statusList.add(EnumBillRentStatus.WAIT_PAY.getCode()); +// wxBillAll.setStatusList(statusList); +// return wxBillAllMapper.listData(wxBillAll); +// } @Override - public ResultData listBill(WxBillAll wxBillAll) { + public ResultData listBill(WxBillAll wxBillAll,WxMerchant wxMerchant) { //更新各账单状态 //updateBillStatus(wxBillAll); + PageHelper.startPage(wxBillAll.getPageIndex(), wxBillAll.getPageSize()); + List> maps = null; //账单类型 if (wxBillAll.getBillTypeValue() != null) { - if (wxBillAll.getBillTypeValue().equals(EnumBillType.RENT.getCode())) { - wxBillAll.setBillTypeValue(EnumBillTypeParam.RENT.getCode()); - } else if (wxBillAll.getBillTypeValue().equals(EnumBillType.DEPOSIT.getCode())) { - wxBillAll.setBillTypeValue(null); - ArrayList typeList = new ArrayList(); - typeList.add(EnumBillTypeParam.RENT_DEPOSIT.getCode()); - typeList.add(EnumBillTypeParam.PROPERTY_DEPOSIT.getCode()); - typeList.add(EnumBillTypeParam.ATHER_DEPOSIT.getCode()); - wxBillAll.setTypeList(typeList); - } else if (wxBillAll.getBillTypeValue().equals(EnumBillType.PROPERTY.getCode())) { - wxBillAll.setBillTypeValue(EnumBillTypeParam.PROPERTY.getCode()); - } else if (wxBillAll.getBillTypeValue().equals(EnumBillType.WATER.getCode())) { - wxBillAll.setBillTypeValue(EnumBillTypeParam.WATER.getCode()); - } else if (wxBillAll.getBillTypeValue().equals(EnumBillType.POWER.getCode())) { - wxBillAll.setBillTypeValue(EnumBillTypeParam.POWER.getCode()); - } else if (wxBillAll.getBillTypeValue().equals(EnumBillType.ROUTINE.getCode())) { - wxBillAll.setBillTypeValue(EnumBillTypeParam.ROUTINE.getCode()); - } else if (wxBillAll.getBillTypeValue().equals(EnumBillType.AIR_CONDITIONING.getCode())) { - wxBillAll.setBillTypeValue(EnumBillTypeParam.AIR_CONDITIONING.getCode()); - } else if (wxBillAll.getBillTypeValue().equals(EnumBillType.SETTLE.getCode())) { - wxBillAll.setBillTypeValue(EnumBillTypeParam.SETTLE.getCode()); + if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.RENT.getCode())) { + wxBillAll.setBillTypeValue(EnumBillQueryType.RENT.getCode()); + maps = wxBillAllMapper.listRentBillData(wxBillAll); + } else if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.RENT_DEPOSIT.getCode())) { + wxBillAll.setBillTypeValue(EnumBillQueryType.RENT_DEPOSIT.getCode()); + maps = wxBillAllMapper.listRentDepositBillData(wxBillAll); + } else if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.PROPERTY.getCode())) { + wxBillAll.setBillTypeValue(EnumBillQueryType.PROPERTY.getCode()); + maps = wxBillAllMapper.listPropertyBillData(wxBillAll); + } else if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.PROPERTY_DEPOSIT.getCode())) { + wxBillAll.setBillTypeValue(EnumBillQueryType.PROPERTY_DEPOSIT.getCode()); + maps = wxBillAllMapper.listPropertyDepositBillData(wxBillAll); + } else if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.WATER_POWER_AIR.getCode())) { + wxBillAll.setBillTypeValue(EnumBillQueryType.WATER_POWER_AIR.getCode()); + maps = wxBillAllMapper.listDailyBillData(wxBillAll); + } else if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.OTHER.getCode())) { + wxBillAll.setBillTypeValue(EnumBillQueryType.OTHER.getCode()); + maps = wxBillAllMapper.listOtherBillData(wxBillAll); + } else if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.OTHER_DEPOSIT.getCode())) { + wxBillAll.setBillTypeValue(EnumBillQueryType.OTHER_DEPOSIT.getCode()); + maps = wxBillAllMapper.listOtherDepositBillData(wxBillAll); + } else if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.SETTLE.getCode())) { + wxBillAll.setBillTypeValue(EnumBillQueryType.SETTLE.getCode()); + maps = wxBillAllMapper.listSettleBillData(wxBillAll); } else { logger.info("账单不存在"); - return new ResultData(ErrorCode.BILL_ROUTINE_IS_NOT_FOUND); - } - } - if (wxBillAll.getPageIndex() != null && wxBillAll.getPageIndex() != null) { - PageHelper.startPage(wxBillAll.getPageIndex(), wxBillAll.getPageSize()); - List> maps = wxBillAllMapper.listData(wxBillAll); - for (Map map : maps) { - Integer billType = ((Long) map.get("billTypeValue")).intValue(); - if (EnumBillType.SETTLE.getCode().equals(billType)) { - Long id = (Long) map.get("id"); - WxBillSettle settle = wxBillSettleService.getById(id, EnumFilterSettle.YES.getCode()); - map.put("owe", settle.getBalance()); - settle = wxBillSettleService.getById(id, EnumFilterSettle.NO.getCode()); - map.put("receivePay", settle.getBalance()); - } } - PageInfo> pageInfo = new PageInfo<>(maps); - return new ResultData(pageInfo); } - List> maps = wxBillAllMapper.listData(wxBillAll); - for (Map map : maps) { - Integer billType = ((Long) map.get("billTypeValue")).intValue(); - if (EnumBillType.SETTLE.getCode().equals(billType)) { - Long id = (Long) map.get("id"); - WxBillSettle settle = wxBillSettleService.getById(id, EnumFilterSettle.YES.getCode()); - map.put("owe", settle.getBalance()); - settle = wxBillSettleService.getById(id, EnumFilterSettle.NO.getCode()); - map.put("receivePay", settle.getBalance()); - } + if (null != maps) { + for (Map map : maps) { + Integer billType = ((Long) map.get("billTypeValue")).intValue(); + if (EnumBillType.SETTLE.getCode().equals(billType)) { + Long id = (Long) map.get("id"); + WxBillSettle settle = wxBillSettleService.getById(id, EnumFilterSettle.YES.getCode()); + map.put("owe", settle.getBalance()); + settle = wxBillSettleService.getById(id, EnumFilterSettle.NO.getCode()); + map.put("receivePay", settle.getBalance()); + } + + map.put("merchantName", wxMerchant.getName()); + Long shopId = (Long) map.get("shopId"); + if (null != shopId) { + Map param = new HashMap(); + param.put("id", shopId); + Map shopResult = wxShopMapper.getMerchantShopByShopId(param); + if (null != shopResult) { + map.put("shopNumber", shopResult.get("shopNumber")); + } + } + + Long billId = (Long) map.get("id"); + WxPayBill wxPayBill = new WxPayBill(); + wxPayBill.updateTenantInfo(wxMerchant); + wxPayBill.setBillId(billId); + List payBillList = wxPayBillMapper.findList(wxPayBill); + if (null != payBillList && payBillList.size() > 0 ) { + WxPayBill pb = payBillList.get(0); + map.put("payBillStatus", pb.getPayBillStatus()); + map.put("tradeTime", pb.getPayTimeEnd()); + map.put("transactionId", pb.getTransactionId()); + map.put("payAmount", pb.getPayAmount()); + } + } } - return new ResultData(maps); + PageInfo> pageInfo = new PageInfo<>(maps); + return new ResultData(pageInfo); } + @Override public void updateBill(Map bill) { @@ -1906,4 +1932,68 @@ public class WxBillAllServiceImpl implements WxBillAllService { }); return wxBillAllVos; } + + @Override + public Double calcuteSettleBillReceivePay(Long settleId) { + List billIds0 = wxBillSettleScheduleMapper.listBillSettleBillBillId(settleId, 0); + Double pay0 = 0D; + if (null != billIds0 && billIds0.size() > 0 ) { + WxBillRent billRent = new WxBillRent(); + billRent.setIds(billIds0); + Double billRent0 = wxBillSettleScheduleMapper.calculteRentRecivePay(billRent);//租金 + Double billRentDeposit0 = wxBillSettleScheduleMapper.calculteRentDepositRecivePay(billRent);//租金押金 + + WxBillProperty billProperty = new WxBillProperty(); + billProperty.setIds(billIds0); + Double billProperty0 = wxBillSettleScheduleMapper.calcultePropertyRecivePay(billProperty);//物业 + Double billPropertyDeposit0 = wxBillSettleScheduleMapper.calcultePropertyDepositRecivePay(billProperty);//物业押金 + + WxBillDaily billDaily = new WxBillDaily(); + billDaily.setIds(billIds0); + Double billDaily0 = wxBillSettleScheduleMapper.calculteDailyRecivePay(billDaily); + + WxBillOther billOther = new WxBillOther(); + billOther.setIds(billIds0); + Double billOther0 = wxBillSettleScheduleMapper.calculteOtherRecivePay0(billOther); + Double billOtherDeposit0 = wxBillSettleScheduleMapper.calculteOtherDepositRecivePay0(billOther); + pay0 = billRent0+billRentDeposit0+billProperty0+billPropertyDeposit0+billDaily0+billOther0+billOtherDeposit0; + } + + List billIds1 = wxBillSettleScheduleMapper.listBillSettleBillBillId(settleId, 1); + Double pay1 = 0D; + if (null != billIds1 && billIds1.size() > 0 ) { + WxBillRent billRent = new WxBillRent(); + billRent.setIds(billIds1); + Double billRent1 = wxBillSettleScheduleMapper.calculteRentRecivePay(billRent);//租金 + Double billRentDeposit1 = wxBillSettleScheduleMapper.calculteRentDepositRecivePay(billRent);//租金押金 + + WxBillProperty billProperty = new WxBillProperty(); + billProperty.setIds(billIds1); + Double billProperty1 = wxBillSettleScheduleMapper.calcultePropertyRecivePay(billProperty);//物业 + Double billPropertyDeposit1 = wxBillSettleScheduleMapper.calcultePropertyDepositRecivePay(billProperty);//物业押金 + + WxBillDaily billDaily = new WxBillDaily(); + billDaily.setIds(billIds1); + Double billDaily1 = wxBillSettleScheduleMapper.calculteDailyRecivePay(billDaily); + + WxBillOther billOther = new WxBillOther(); + billOther.setIds(billIds1); + Double billOther1 = wxBillSettleScheduleMapper.calculteOtherRecivePay1(billOther); + Double billOtherDeposit1 = wxBillSettleScheduleMapper.calculteOtherDepositRecivePay0(billOther); + + WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); + merchantSubsidy.setIds(billIds1); + Double billMerchantSubsidy1 = wxBillSettleScheduleMapper.calculteMerchantSubsidyRecivePay1(merchantSubsidy); + + pay1 = billRent1+billRentDeposit1+billProperty1+billPropertyDeposit1+billDaily1+billOther1+billOtherDeposit1+billMerchantSubsidy1; + } + return pay0-pay1; + } + + @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) + @Override + public void createBillSettleSchedule(Long settleId, Double settleReceivePay) { + wxBillSettleScheduleMapper.createScheduleFromBillSettle(settleId, settleReceivePay); + wxBillSettleMapper.updateRecorded(settleId); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java index 1f97492e2..b66823e59 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java @@ -166,7 +166,7 @@ public class WxBillSettleServiceImpl implements WxBillSettleService { public void updateFreezeOrStatus(List billList,Integer freezeStatus,Integer status){ //1租金2押金3物业4日常费用6其他8补贴 for (WxBillSettleBill bill:billList) { - if(EnumBillType.RENT.getCode().equals(bill.getBillType())) { + if(EnumBillQueryType.RENT.getCode().equals(bill.getBillType())) { WxBillRent wxBillRent = new WxBillRent(); wxBillRent.setId(bill.getBillId()); if(freezeStatus != null) wxBillRent.setFreeze(freezeStatus); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java index d4a3eb984..634e5987d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java @@ -24,6 +24,7 @@ import com.iformall.utils.RedisLock; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -48,6 +49,7 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService { @Autowired WxOrderMapper wxOrderMapper; + @Lazy @Autowired WxOrderService wxOrderService; @@ -66,6 +68,7 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService { @Autowired WxAppinfoMapper wxAppinfoMapper; + @Lazy @Autowired WxRefundOrderService wxRefundOrderService; @@ -279,6 +282,16 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService { return new ResultData(Result.SUCCESS, "查询成功", group); } Map result = wxOrderGroupMapper.queryRemainOne(group); + if (null != result) { + Long cUserId = (Long) result.get("cUserId"); + if (null != cUserId) { + WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(cUserId, wxOrderGroup.getFinalTenantId()); + if (null != user) { + result.put("nickName", user.getNickName()); + result.put("avatarUrl", user.getAvatarUrl()); + } + } + } return new ResultData(Result.SUCCESS, "查询成功", result); } diff --git a/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml b/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml index a794feb14..76f0039c8 100644 --- a/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml @@ -308,226 +308,7 @@ - - + select '' settle_number,id,merchant_id merchantId,shop_id shopId,tenant_id tenantId,parent_tenant_id parentTenantId,'租金' name,1 billTypeValue,'租金' billType, + need_pay needPay,receive_pay receivePay,pay,(receive_pay+service_charge_pay+ifnull(late_pay_price,0)-pay) owe, + receive_date receiveDate,pay_date payDate,DATEDIFF(now(),receive_date) expiredDay,status,starttime,endtime,rent_shop_type rentShopType,'' priceDetail, + freeze,ifnull(late_pay_price,0) latePayPrice,service_charge_pay serviceChargePay + + from wx_bill_rent bill + where bill.is_preview = 0 + and rent_contract_id in (select id from wx_rent_contract where status in (2,3,4)) + + + + + + + + + + + + + + + - + + update wx_bill_settle set has_recorded = 1 where id = #{id} + diff --git a/mallinkService/src/main/resources/mapper/WxBillSettleScheduleMapper.xml b/mallinkService/src/main/resources/mapper/WxBillSettleScheduleMapper.xml new file mode 100644 index 000000000..aee7748ca --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxBillSettleScheduleMapper.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`parent_tenant_id`,`settle_number`,`merchant_id`,`status`,`apply_status`, + `receive_money`,`pay_money`,`settletime`,`createtime`,`updatetime`,`settle_receive_pay` + + + + insert into wx_bill_settle_schedule(`id`,`tenant_id`,`parent_tenant_id`,`settle_number`,`merchant_id`,`status`,`apply_status`,`receive_money`,`pay_money`,`settletime`,`createtime`, + `updatetime`,`settle_receive_pay`) + select `id`,`tenant_id`,`parent_tenant_id`,`settle_number`,`merchant_id`,`status`,`apply_status`,`receive_money`,`pay_money`,`settletime`,`createtime`,`updatetime`,#{settleReceivePay} + from wx_bill_settle where id = #{id} + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxOrderGroupMapper.xml b/mallinkService/src/main/resources/mapper/WxOrderGroupMapper.xml index 139ae351f..6a9015bef 100644 --- a/mallinkService/src/main/resources/mapper/WxOrderGroupMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOrderGroupMapper.xml @@ -57,11 +57,8 @@