From bc4e040b1ffa894098cc5270c9c0bd39984bef95 Mon Sep 17 00:00:00 2001 From: luozukai Date: Tue, 27 Aug 2019 16:04:04 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=90=88=E5=90=8C][=E4=BF=AE=E6=94=B9][?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E8=B4=A6=E5=8D=95=E7=BB=93=E7=AE=97]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rent/WxBillSettleController.java | 80 +++++++++++++++++++ .../com/iformall/domain/po/WxBillSettle.java | 50 ++++++++++++ .../domain/po/WxBillSettleRecord.java | 52 ++++++++++++ .../java/com/iformall/domain/vo/RatioVo.java | 6 +- .../iformall/mapper/WxBillSettleMapper.java | 17 ++++ .../mapper/WxBillSettleRecordMapper.java | 19 +++++ .../service/WxBillSettleRecordService.java | 28 +++++++ .../iformall/service/WxBillSettleService.java | 39 +++++++++ .../impl/WxBillSettleRecordServiceImpl.java | 30 +++++++ .../service/impl/WxBillSettleServiceImpl.java | 41 ++++++++++ .../impl/WxRentContractServiceImpl.java | 53 ++++++------ .../main/resources/mapper/WxBillAllMapper.xml | 2 +- .../resources/mapper/WxBillSettleMapper.xml | 48 +++++++++++ .../mapper/WxBillSettleRecordMapper.xml | 49 ++++++++++++ 14 files changed, 480 insertions(+), 34 deletions(-) create mode 100644 mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillSettleController.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java create mode 100644 mallinkService/src/main/java/com/iformall/domain/po/WxBillSettleRecord.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxBillSettleMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/mapper/WxBillSettleRecordMapper.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxBillSettleRecordService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/WxBillSettleService.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleRecordServiceImpl.java create mode 100644 mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java create mode 100644 mallinkService/src/main/resources/mapper/WxBillSettleMapper.xml create mode 100644 mallinkService/src/main/resources/mapper/WxBillSettleRecordMapper.xml diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillSettleController.java b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillSettleController.java new file mode 100644 index 000000000..a132b2dbd --- /dev/null +++ b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillSettleController.java @@ -0,0 +1,80 @@ +package com.iformall.controller.rent; + +import com.github.pagehelper.PageInfo; +import com.iformall.annotation.SystemControllerLog; +import com.iformall.common.Result; +import com.iformall.common.ResultData; +import com.iformall.controller.base.BaseController; +import com.iformall.domain.po.BaseEntity; +import com.iformall.domain.po.WxBillRent; +import com.iformall.domain.po.WxBillSettle; +import com.iformall.domain.po.WxBillSettleRecord; +import com.iformall.service.WxBillRentService; +import com.iformall.service.WxBillSettleRecordService; +import com.iformall.service.WxBillSettleService; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * @author luozukai + */ +@RestController +@RequestMapping("wxBillSettle") +public class WxBillSettleController extends BaseController { + private final Logger logger = LoggerFactory.getLogger(this.getClass()); + + @Autowired + private WxBillSettleService wxBillSettleService; + @Autowired + private WxBillSettleRecordService wxBillSettleRecordService; + + @GetMapping("list") + @ApiOperation("账单管理-结算对冲列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) + @SystemControllerLog(description = "账单管理-结算对冲列表") + public ResultData list(@ModelAttribute WxBillSettle wxBillSettle, Integer pageNum, Integer pageSize) { + logger.debug("[" + getIpAddr() + "] WxBillSettleController::list"); + if (null == wxBillSettle) { + wxBillSettle = new WxBillSettle(); + } + wxBillSettle.setTenantId(getTenantId()); + wxBillSettle.setSortColumns(BaseEntity.SortField.Createtime_DESC,BaseEntity.SortField.Id_DESC); + final PageInfo page = wxBillSettleService.listAsPage(wxBillSettle, pageNum, pageSize); + return new ResultData(page); + } + + @PostMapping("add") + @ApiOperation("账单管理-结算单-新增") + @SystemControllerLog(description = "账单管理-结算单-新增") + public ResultData add(@RequestBody WxBillSettle wxBillSettle) { + logger.debug("[" + getIpAddr() + "] WxBillSettleController::add"); + wxBillSettle.setTenantId(getTenantId()); + return wxBillSettleService.saveOrUpdate(wxBillSettle); + } + + @PostMapping("update") + @ApiOperation("账单管理-结算单-更新") + @SystemControllerLog(description = "账单管理-结算单-更新") + public ResultData update(@RequestBody WxBillSettle wxBillSettle) { + logger.debug("[" + getIpAddr() + "] WxBillSettleController::update"); + return wxBillSettleService.saveOrUpdate(wxBillSettle); + } + + @GetMapping("exportSettle") + @SystemControllerLog(description = "账单管理-结算单-导出") + public void exportBill(@ModelAttribute WxBillSettle wxBillSettle, HttpServletRequest request, HttpServletResponse response) { + wxBillSettle.setTenantId(getTenantId()); + wxBillSettleService.exportBill(request, response, wxBillSettle); + } + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java new file mode 100644 index 000000000..9ac89cb3e --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java @@ -0,0 +1,50 @@ +package com.iformall.domain.po; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; +import java.util.Date; +import java.util.List; + +/** + * @author luozukai + */ +@Table(name = "wx_bill_settle") +@Data +@EqualsAndHashCode(callSuper = true) +public class WxBillSettle extends BaseEntity { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + + @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") + private String tenantId; + @io.swagger.annotations.ApiModelProperty(value="结算单号",name="settleNumber") + private String settleNumber; + @io.swagger.annotations.ApiModelProperty(value="商户id",name="merchantId") + private Long merchantId; + @io.swagger.annotations.ApiModelProperty(value="0待确认1未清算结余金额2结算完成",name="status") + private Integer status; + @io.swagger.annotations.ApiModelProperty(value="审核状态0未审核1审核中2审核完成3驳回4异常终止5撤回",name="applyStatus") + private Integer applyStatus; + @io.swagger.annotations.ApiModelProperty(value="收款",name="receiveMoney") + private Long receiveMoney; + @io.swagger.annotations.ApiModelProperty(value="承付",name="payMoney") + private Long payMoney; + @io.swagger.annotations.ApiModelProperty(value="结算时间",name="settletime") + private Date settletime; + + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") + private Date createtime; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updatetime") + private Date updatetime; + + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettleRecord.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettleRecord.java new file mode 100644 index 000000000..bde9b8bda --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettleRecord.java @@ -0,0 +1,52 @@ +package com.iformall.domain.po; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; +import java.util.Date; +import java.util.List; + +/** + * @author luozukai + */ +@Table(name = "wx_bill_settle_record") +@Data +@EqualsAndHashCode(callSuper = true) +public class WxBillSettleRecord extends BaseEntity { + private static final long serialVersionUID = 1L; + + @Id + protected Long id; + + @Transient + protected List ids; + + @io.swagger.annotations.ApiModelProperty(value="租户ID",name="tenantId") + private String tenantId; + @io.swagger.annotations.ApiModelProperty(value="结算单id",name="settleId") + private Long settleId; + @io.swagger.annotations.ApiModelProperty(value="操作人id",name="userid") + private Long userid; + @io.swagger.annotations.ApiModelProperty(value="操作人姓名",name="userName") + private String userName; + @io.swagger.annotations.ApiModelProperty(value="清算金额",name="settleMoney") + private Long settleMoney; + @io.swagger.annotations.ApiModelProperty(value="清算时间",name="settleTime") + private Date settleTime; + @io.swagger.annotations.ApiModelProperty(value="清算方式1现金2支付宝3微信4银行卡转账5其他",name="settleWay") + private Integer settleWay; + @io.swagger.annotations.ApiModelProperty(value="结余",name="balance") + private Long balance; + @io.swagger.annotations.ApiModelProperty(value="明细",name="detail") + private String detail; + + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") + private Date createtime; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updatetime") + private Date updatetime; + + +} diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/RatioVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/RatioVo.java index ff1c59b15..b328b7811 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/RatioVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/RatioVo.java @@ -1,13 +1,11 @@ package com.iformall.domain.vo; import lombok.Data; -import java.math.BigDecimal; @Data public class RatioVo { - //扣点率 private Integer ratio = 0; - //超出部分金额 - private BigDecimal balance; + //金额 + private Long price; } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleMapper.java new file mode 100644 index 000000000..16790bcfa --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleMapper.java @@ -0,0 +1,17 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxBillSettle; +import java.util.List; + +/** + * @author luozukai + */ +public interface WxBillSettleMapper extends CommonMapper { + + List findList(WxBillSettle wxBillSettle); + + void update(WxBillSettle record); + + +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleRecordMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleRecordMapper.java new file mode 100644 index 000000000..a602d439a --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillSettleRecordMapper.java @@ -0,0 +1,19 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxBillSettle; +import com.iformall.domain.po.WxBillSettleRecord; + +import java.util.List; + +/** + * @author luozukai + */ +public interface WxBillSettleRecordMapper extends CommonMapper { + + List findList(WxBillSettleRecord wxBillSettleRecord); + + void update(WxBillSettleRecord record); + + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxBillSettleRecordService.java b/mallinkService/src/main/java/com/iformall/service/WxBillSettleRecordService.java new file mode 100644 index 000000000..ce0d11ab6 --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxBillSettleRecordService.java @@ -0,0 +1,28 @@ +package com.iformall.service; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxBillSettleRecord; + +/** + * @author luozukai + */ +public interface WxBillSettleRecordService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @return + */ + PageInfo listAsPage(WxBillSettleRecord record, Integer pageIndex, Integer pageSize); + + + /** + * 保存或更新实体 + * + * @param record + */ + ResultData saveOrUpdate(WxBillSettleRecord record); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxBillSettleService.java b/mallinkService/src/main/java/com/iformall/service/WxBillSettleService.java new file mode 100644 index 000000000..66caf4c8b --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/WxBillSettleService.java @@ -0,0 +1,39 @@ +package com.iformall.service; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxBillSettle; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * @author luozukai + */ +public interface WxBillSettleService { + + /** + * 根据实体查询分页列表 + * + * @param record + * @return + */ + PageInfo listAsPage(WxBillSettle record, Integer pageIndex, Integer pageSize); + + /** + * 根据Id获得实体 + * + * @param id + * @return + */ + WxBillSettle getById(Long id); + + /** + * 保存或更新实体 + * + * @param record + */ + ResultData saveOrUpdate(WxBillSettle record); + + void exportBill(HttpServletRequest request, HttpServletResponse response, WxBillSettle wxBillSettle); +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleRecordServiceImpl.java new file mode 100644 index 000000000..a5393948f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleRecordServiceImpl.java @@ -0,0 +1,30 @@ +package com.iformall.service.impl; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxBillSettleRecord; +import com.iformall.mapper.WxBillSettleRecordMapper; +import com.iformall.service.WxBillSettleRecordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * @author luozukai + * @date 2019/8/26 17:37 + */ +@Service +public class WxBillSettleRecordServiceImpl implements WxBillSettleRecordService { + @Autowired + private WxBillSettleRecordMapper wxBillSettleRecordMapper; + + + @Override + public PageInfo listAsPage(WxBillSettleRecord record, Integer pageIndex, Integer pageSize) { + return null; + } + + @Override + public ResultData saveOrUpdate(WxBillSettleRecord record) { + return null; + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java new file mode 100644 index 000000000..e54487bbe --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java @@ -0,0 +1,41 @@ +package com.iformall.service.impl; + +import com.github.pagehelper.PageInfo; +import com.iformall.common.ResultData; +import com.iformall.domain.po.WxBillSettle; +import com.iformall.mapper.WxBillSettleMapper; +import com.iformall.service.WxBillSettleService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * @author luozukai + * @date 2019/8/26 17:37 + */ +@Service +public class WxBillSettleServiceImpl implements WxBillSettleService { + @Autowired + private WxBillSettleMapper wxBillSettleMapper; + + @Override + public PageInfo listAsPage(WxBillSettle record, Integer pageIndex, Integer pageSize) { + return null; + } + + @Override + public WxBillSettle getById(Long id) { + return null; + } + + @Override + public ResultData saveOrUpdate(WxBillSettle record) { + return null; + } + + @Override + public void exportBill(HttpServletRequest request, HttpServletResponse response, WxBillSettle wxBillSettle) { + + } +} diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index 9f5817c81..be5d2512d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -248,6 +248,24 @@ public class WxRentContractServiceImpl implements WxRentContractService { return result; } + /** + * 计算金额 + * @param ratio + * @param revenueLong + * @return + */ + public static Long countPrice(Integer ratio,Long revenueLong,int timeType){ + BigDecimal hundred = new BigDecimal(100); + BigDecimal revenue = new BigDecimal(revenueLong == null ? 0 : revenueLong).divide(hundred); + BigDecimal payRatio = new BigDecimal(ratio == null ? 0 : ratio).divide(new BigDecimal(10000)); + BigDecimal price; + if(EnumMissTimeType.YEAR.getCode().equals(timeType)){ + price = revenue.multiply(payRatio).divide(new BigDecimal(12),2, RoundingMode.HALF_EVEN); + }else{ + price = revenue.multiply(payRatio).setScale(2, RoundingMode.HALF_EVEN); + } + return price.multiply(hundred).longValue(); + } /** * 获取设置的跳点率 @@ -293,6 +311,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { if (revenue.compareTo(start) >= 0 && revenue.compareTo(end)<= 0){ ratioVo.setRatio(ratio); + ratioVo.setPrice(countPrice(ratioVo.getRatio(),revenueLong,timeType)); break; } }else if(e.indexOf(">") >= 0){ @@ -330,7 +349,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { BigDecimal frontRatio = new BigDecimal(frontatio).divide(new BigDecimal(10000)); BigDecimal frontPrice = end.multiply(new BigDecimal(1000000).multiply(frontRatio).setScale(2, RoundingMode.HALF_EVEN)); - ratioVo.setBalance(price.add(frontPrice)); + ratioVo.setPrice(price.add(frontPrice).longValue()); return ratioVo; } } @@ -338,20 +357,6 @@ public class WxRentContractServiceImpl implements WxRentContractService { return ratioVo; } - /** - * 计算金额 - * @param ratio - * @param revenueLong - * @return - */ - public Long countPrice(Integer ratio,Long revenueLong){ - BigDecimal hundred = new BigDecimal(100); - BigDecimal revenue = new BigDecimal(revenueLong == null ? 0 : revenueLong).divide(hundred); - BigDecimal payRatio = new BigDecimal(ratio == null ? 0 : ratio).divide(new BigDecimal(10000)); - BigDecimal price = revenue.multiply(payRatio).setScale(2, RoundingMode.HALF_EVEN); - return price.multiply(hundred).longValue(); - } - @Transactional(rollbackFor = {Exception.class}) @Override public ResultData save(WxRentContract record,Long userId,String userName,Date oldRentStartDate) { @@ -379,17 +384,12 @@ public class WxRentContractServiceImpl implements WxRentContractService { record.setPrice(0l); }else{ if(record.getPayRatio()!=null && record.getPayRatio().intValue() > 0){ - record.setPrice(countPrice(record.getPayRatio(),record.getRevenue())); + record.setPrice(countPrice(record.getPayRatio(),record.getRevenue(),EnumMissTimeType.OTHER.getCode())); }else{ int dayCount = record.getReceivePeriod() * 30; RatioVo ratioVo = getPayRatio(EnumGetRatioFrom.RENT.getCode(),record.getRevenue(),record.getBusDiscountRatio(),record.getBusDiscountTime(),dayCount,record.getReceivePeriod()); //record.setPayRatio(ratioVo.getRatio()); - if(ratioVo.getBalance() != null){ - //有超出部分,在getPayRatio里计算 - record.setPrice(ratioVo.getBalance().longValue()); - }else{ - record.setPrice(countPrice(ratioVo.getRatio(),record.getRevenue())); - } + record.setPrice(ratioVo.getPrice()); } } } else { @@ -617,17 +617,12 @@ public class WxRentContractServiceImpl implements WxRentContractService { if(!EnumFromType.SWITCH.getCode().equals(from)){ if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { if(record.getPayRatio()!=null && record.getPayRatio().intValue() > 0){ - record.setPrice(countPrice(record.getPayRatio(),record.getRevenue())); + record.setPrice(countPrice(record.getPayRatio(),record.getRevenue(),EnumMissTimeType.OTHER.getCode())); }else{ int dayCount = record.getReceivePeriod() * 30; RatioVo ratioVo = getPayRatio(EnumGetRatioFrom.RENT.getCode(),record.getRevenue(),record.getBusDiscountRatio(),record.getBusDiscountTime(),dayCount,record.getReceivePeriod()); //record.setPayRatio(ratioVo.getRatio()); - if(ratioVo.getBalance() != null){ - //有超出部分,在getPayRatio里计算 - record.setPrice(ratioVo.getBalance().longValue()); - }else{ - record.setPrice(countPrice(ratioVo.getRatio(),record.getRevenue())); - } + record.setPrice(ratioVo.getPrice()); } } else { if (StringUtils.isNotEmpty(record.getPriceStr())) { diff --git a/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml b/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml index 271c888be..ab2e2383f 100644 --- a/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml @@ -642,7 +642,7 @@ + select + + from wx_bill_settle + + + + + + diff --git a/mallinkService/src/main/resources/mapper/WxBillSettleRecordMapper.xml b/mallinkService/src/main/resources/mapper/WxBillSettleRecordMapper.xml new file mode 100644 index 000000000..57f829dac --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxBillSettleRecordMapper.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`settle_id`,`userid`,`user_name`,`settle_money`, + `settle_time`,`settle_way`,`balance`,detail,`createtime`,`updatetime` + + + + where 1=1 + and `id` = #{id} + and `tenant_id` = #{tenantId} + + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + +