| @@ -0,0 +1,139 @@ | |||
| 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.base.BaseEntity; | |||
| import com.iformall.enums.EnumRentContractManageFeeType; | |||
| import com.iformall.domain.po.WxBillRent; | |||
| import com.iformall.domain.po.WxBillRentManage; | |||
| import com.iformall.service.WxBillRentManageService; | |||
| import com.iformall.service.WxBillRentService; | |||
| 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 gongbiao | |||
| */ | |||
| @RestController | |||
| @RequestMapping("wxBillRentManage") | |||
| public class WxBillRentManageController extends BaseController { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| private WxBillRentManageService wxBillRentManageService; | |||
| @GetMapping("list") | |||
| @ApiImplicitParams({ | |||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||
| public ResultData list(@ModelAttribute WxBillRentManage wxBillRentManage, Integer pageNum, Integer pageSize) { | |||
| logger.debug("[" + getIpAddr() + "] WxBillRentController::list"); | |||
| if (null == wxBillRentManage) { | |||
| wxBillRentManage = new WxBillRentManage(); | |||
| } | |||
| wxBillRentManage.updateTenantInfo(getTenantInfo()); | |||
| if (null == wxBillRentManage.getManageFeeType()) { | |||
| return new ResultData(Result.ERROR, "参数错误", null); | |||
| } | |||
| if (null == EnumRentContractManageFeeType.getEnum(wxBillRentManage.getManageFeeType())) { | |||
| return new ResultData(Result.ERROR, "参数错误", null); | |||
| } | |||
| wxBillRentManage.setSortColumns(BaseEntity.SortField.Createtime_DESC,BaseEntity.SortField.Id_DESC); | |||
| final PageInfo<WxBillRentManage> page = wxBillRentManageService.listAsPage(wxBillRentManage, pageNum, pageSize); | |||
| return new ResultData(page); | |||
| } | |||
| @GetMapping("/detail") | |||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||
| public ResultData detail(Long id) { | |||
| logger.debug("[" + getIpAddr() + "] WxBillRentController::detail"); | |||
| return new ResultData(Result.SUCCESS, "查询成功", wxBillRentManageService.getById(id)); | |||
| } | |||
| @PostMapping("add") | |||
| @SystemControllerLog(description = "租赁押金账单-新增") | |||
| public ResultData add(@RequestBody WxBillRentManage wxBillRentManage) { | |||
| logger.debug("[" + getIpAddr() + "] WxBillRentController::add"); | |||
| wxBillRentManage.updateTenantInfo(getTenantInfo()); | |||
| if (null == wxBillRentManage.getManageFeeType()) { | |||
| return new ResultData(Result.ERROR, "参数错误", null); | |||
| } | |||
| if (null == EnumRentContractManageFeeType.getEnum(wxBillRentManage.getManageFeeType())) { | |||
| return new ResultData(Result.ERROR, "参数错误", null); | |||
| } | |||
| return wxBillRentManageService.saveOrUpdate(wxBillRentManage, getUser()); | |||
| } | |||
| @PostMapping("update") | |||
| @SystemControllerLog(description = "租赁押金账单-更新") | |||
| public ResultData update(@RequestBody WxBillRentManage wxBillRentManage) { | |||
| logger.debug("[" + getIpAddr() + "] WxBillRentController::update"); | |||
| return wxBillRentManageService.saveOrUpdate(wxBillRentManage, getUser()); | |||
| } | |||
| @GetMapping("/findByRentContractId") | |||
| @ApiImplicitParams({ | |||
| @ApiImplicitParam(name = "rentContractId", value = "合同编号", dataType = "Long", paramType = "query", required = true), | |||
| @ApiImplicitParam(name = "manageFeeType", value = "管理费类型", dataType = "int", paramType = "query", required = true), | |||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | |||
| @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)}) | |||
| @SystemControllerLog(description = "租赁押金账单-根据商户获取") | |||
| public ResultData findByRentContractId(Long rentContractId, Integer manageFeeType,Integer pageNum, Integer pageSize) { | |||
| logger.debug("[" + getIpAddr() + "] WxBillRentController::findByRentContractId"); | |||
| WxBillRentManage record = new WxBillRentManage(); | |||
| record.setRentContractId(rentContractId); | |||
| record.updateTenantInfo(getTenantInfo()); | |||
| if (null == EnumRentContractManageFeeType.getEnum(manageFeeType)) { | |||
| return new ResultData(Result.ERROR, "参数错误", null); | |||
| } | |||
| record.setManageFeeType(manageFeeType); | |||
| final PageInfo<WxBillRentManage> page = wxBillRentManageService.findByRentContractId(record, pageNum, pageSize); | |||
| return new ResultData(page); | |||
| } | |||
| @ApiOperation("修改滞纳金") | |||
| @PostMapping("updateLatePayMoney") | |||
| @SystemControllerLog(description = "修改滞纳金") | |||
| public ResultData updateLatePayMoney(@RequestBody WxBillRentManage wxBillRentManage) { | |||
| logger.debug("[" + getIpAddr() + "] WxBillRentController::updateLatePayMoney"); | |||
| return wxBillRentManageService.updateLatePayMoney(wxBillRentManage, getUser()); | |||
| } | |||
| @GetMapping("/del") | |||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||
| @SystemControllerLog(description = "租赁押金账单-删除") | |||
| public ResultData delete(Long id) { | |||
| logger.debug("[" + getIpAddr() + "] WxBillRentController::delete"); | |||
| wxBillRentManageService.deleteById(id); | |||
| return new ResultData(Result.SUCCESS, "删除成功", null); | |||
| } | |||
| @GetMapping("/updatePaid") | |||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||
| @SystemControllerLog(description = "租赁押金账单-支付更新") | |||
| public ResultData updatePaid(Long id) { | |||
| logger.debug("[" + getIpAddr() + "] WxBillRentController::updatePaid"); | |||
| return wxBillRentManageService.updatePaid(id); | |||
| } | |||
| @PostMapping("updateLatePayStatus") | |||
| @SystemControllerLog(description = "租赁押金账单-滞纳金结单") | |||
| public ResultData updateLatePayStatus(@RequestBody WxBillRentManage wxBillRent) { | |||
| logger.debug("[" + getIpAddr() + "] WxBillRentController::updateLatePayStatus"); | |||
| return wxBillRentManageService.updateLatePayStatus(wxBillRent); | |||
| } | |||
| } | |||
| @@ -121,8 +121,8 @@ public class WxBillRent extends TenantEntity { | |||
| infoStr += "场地费:" + (StringUtils.isBlank(siteMoney1) ? "0":siteMoney1) + "\n"; | |||
| String facilityMoney1 = jsonObject.getString("facilityMoney"); | |||
| infoStr += "设备费:" + (StringUtils.isBlank(facilityMoney1) ? "0":facilityMoney1) + "\n"; | |||
| String administratorMoney1 = jsonObject.getString("administratorMoney"); | |||
| infoStr += "商业管理费:" + (StringUtils.isBlank(administratorMoney1) ? "0":administratorMoney1); | |||
| //String administratorMoney1 = jsonObject.getString("administratorMoney"); | |||
| //infoStr += "商业管理费:" + (StringUtils.isBlank(administratorMoney1) ? "0":administratorMoney1); | |||
| } | |||
| return infoStr; | |||
| @@ -15,13 +15,17 @@ public class OweMerchantVo { | |||
| private String linkPhone; | |||
| @Excel(name="欠缴租金(元)",width = 20,orderNum = "6") | |||
| private BigDecimal rentOwe; | |||
| @Excel(name="欠缴物业费(元)",width = 20,orderNum = "7") | |||
| @Excel(name="欠缴商业管理费(元)",width = 20,orderNum = "7") | |||
| private BigDecimal bussinessManageOwe; | |||
| @Excel(name="欠缴营业管理费(元)",width = 20,orderNum = "8") | |||
| private BigDecimal operatingManageOwe; | |||
| @Excel(name="欠缴物业费(元)",width = 20,orderNum = "9") | |||
| private BigDecimal propertyOwe; | |||
| @Excel(name="欠缴押金(元)",width = 20,orderNum = "8") | |||
| @Excel(name="欠缴押金(元)",width = 20,orderNum = "10") | |||
| private BigDecimal depositOwe; | |||
| @Excel(name="其他费用(元)",width = 20,orderNum = "9") | |||
| @Excel(name="其他费用(元)",width = 20,orderNum = "11") | |||
| private BigDecimal otherOwe; | |||
| @Excel(name="欠缴总额(元)",width = 20,orderNum = "10") | |||
| @Excel(name="欠缴总额(元)",width = 20,orderNum = "12") | |||
| private BigDecimal totalOwe; | |||
| } | |||
| @@ -16,8 +16,9 @@ public enum EnumBillTypeParam { | |||
| ROUTINE(7, "其他费用"), | |||
| ATHER_DEPOSIT(8, "其他押金"), | |||
| AIR_CONDITIONING(9, "空调费"), | |||
| SETTLE(10, "结算单") | |||
| SETTLE(10, "结算单"), | |||
| RENT_BUSSINESS_MANAGE(11,"商业管理费"), | |||
| RENT_OPERATING_MANAGE(12,"营业管理费") | |||
| ; | |||
| public static EnumBillTypeParam getEnum(Integer code) { | |||
| @@ -2,7 +2,7 @@ package com.iformall.enums; | |||
| /** | |||
| * Created by luozukai | |||
| * 预览账单0否1是 | |||
| * 管理费账单类型 | |||
| */ | |||
| public enum EnumRentContractManageFeeType { | |||
| @@ -0,0 +1,65 @@ | |||
| package com.iformall.service; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.MallUserInfo; | |||
| import com.iformall.domain.po.WxBillDeposit; | |||
| import com.iformall.domain.po.WxBillRent; | |||
| import com.iformall.domain.po.WxBillRentManage; | |||
| import com.iformall.domain.po.WxPayAccountBill; | |||
| public interface WxBillRentManageService { | |||
| /** | |||
| * 根据实体查询分页列表 | |||
| * | |||
| * @param offset | |||
| * @param limit | |||
| * @param record | |||
| * @return | |||
| */ | |||
| PageInfo<WxBillRentManage> listAsPage(WxBillRentManage wxBillRentManage, Integer pageIndex, Integer pageSize); | |||
| void updateBillStatus(WxBillRentManage record); | |||
| /** | |||
| * 根据Id获得实体 | |||
| * | |||
| * @param id | |||
| * @return | |||
| */ | |||
| WxBillRentManage getById(Long id); | |||
| PageInfo<WxBillRentManage> findByRentContractId(WxBillRentManage record, Integer pageIndex, Integer pageSize); | |||
| /** | |||
| * 保存或更新实体 | |||
| * | |||
| * @param record | |||
| * @param user | |||
| */ | |||
| ResultData saveOrUpdate(WxBillRentManage record, MallUserInfo user); | |||
| /** | |||
| * 修改滞纳金 | |||
| * @param record | |||
| * @param user | |||
| * @return | |||
| */ | |||
| ResultData updateLatePayMoney(WxBillRentManage record, MallUserInfo user); | |||
| /** | |||
| * 根据Id删除实体 | |||
| * | |||
| * @param id | |||
| */ | |||
| void deleteById(Long id); | |||
| ResultData updatePaid(Long id); | |||
| void computeTotalMoney(WxPayAccountBill wxPayAccountBill, WxBillRentManage deposit); | |||
| ResultData updateLatePayStatus(WxBillRentManage wxBillRent); | |||
| } | |||
| @@ -161,7 +161,14 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| @Autowired | |||
| WxMerchantMapper wxMerchantMapper; | |||
| @Autowired | |||
| WxBillRentManageMapper wxBillRentManageMapper; | |||
| @Lazy | |||
| @Autowired | |||
| WxBillRentManageService wxBillRentManageService; | |||
| @Override | |||
| public Map<String, Object> listAsPage(WxBillAll record, Integer pageIndex, Integer pageSize) { | |||
| WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(record); | |||
| @@ -873,6 +880,11 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| WxBillRent wxBillRent = new WxBillRent(); | |||
| wxBillRent.updateTenantInfo(record); | |||
| wxBillRentService.updateBillStatus(wxBillRent); | |||
| //更新管理费账单状态 | |||
| WxBillRentManage wxBillRentManage = new WxBillRentManage(); | |||
| wxBillRentManage.updateTenantInfo(record); | |||
| wxBillRentManageService.updateBillStatus(wxBillRentManage); | |||
| logger.info("更新各账单状态结束"); | |||
| } | |||
| @@ -927,6 +939,21 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| if(!rentList.isEmpty()){ | |||
| rentSum = rentList.stream().collect(Collectors.summingLong(b -> status == null && filterHasPay == null ? b.getReceivePay() + b.getLatePayPrice() + b.getServiceChargePay() : b.getOwe())); | |||
| } | |||
| //商业管理费 | |||
| wxBillAll.setBillTypeValue(EnumBillQueryType.RENT_BUSSINESS_MANAGE.getCode()); | |||
| List<WxBillAllVo> bmList = this.list(wxBillAll); | |||
| Long bussinessManageSum = 0L; | |||
| if(!bmList.isEmpty()){ | |||
| bussinessManageSum = bmList.stream().collect(Collectors.summingLong(b -> status == null && filterHasPay == null ? b.getReceivePay() + b.getLatePayPrice() + b.getServiceChargePay() : b.getOwe())); | |||
| } | |||
| //营业管理费 | |||
| wxBillAll.setBillTypeValue(EnumBillQueryType.RENT_OPERATING_MANAGE.getCode()); | |||
| List<WxBillAllVo> omList = this.list(wxBillAll); | |||
| Long operatingManageSum = 0L; | |||
| if(!omList.isEmpty()){ | |||
| operatingManageSum = omList.stream().collect(Collectors.summingLong(b -> status == null && filterHasPay == null ? b.getReceivePay() + b.getLatePayPrice() + b.getServiceChargePay() : b.getOwe())); | |||
| } | |||
| //物业 | |||
| wxBillAll.setBillTypeValue(EnumBillQueryType.PROPERTY.getCode()); | |||
| List<WxBillAllVo> propertyList = this.list(wxBillAll); | |||
| @@ -983,8 +1010,11 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| }); | |||
| } | |||
| //总计 | |||
| Long summarySum = rentSum + propertySum + depositSum + waterSum + powerSum + airConditioningSum + otherSum; | |||
| Long summarySum = rentSum + bussinessManageSum + operatingManageSum + propertySum + depositSum + waterSum + powerSum + airConditioningSum + otherSum; | |||
| BigDecimal rent = new BigDecimal(rentSum).divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | |||
| BigDecimal bussinessManage = new BigDecimal(bussinessManageSum).divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | |||
| BigDecimal operatingManage = new BigDecimal(operatingManageSum).divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | |||
| BigDecimal property = new BigDecimal(propertySum).divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | |||
| BigDecimal deposit = new BigDecimal(depositSum).divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | |||
| BigDecimal water = new BigDecimal(waterSum).divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | |||
| @@ -995,6 +1025,8 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| String summaryUpper = PriceUtil.number2CNMontrayUnit(summary); | |||
| result.put("rent", rent.toPlainString()); | |||
| result.put("bussinessManage", bussinessManage.toPlainString()); | |||
| result.put("operatingManage", operatingManage.toPlainString()); | |||
| result.put("property", property.toPlainString()); | |||
| result.put("deposit", deposit.toPlainString()); | |||
| result.put("water", water.toPlainString()); | |||
| @@ -1309,6 +1341,36 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| wxBillOtherDepositMapper.updateById(wxBillOtherDeposit); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| }if (billType.equals(EnumBillTypeParam.RENT_BUSSINESS_MANAGE.getCode()) || billType.equals(EnumBillTypeParam.RENT_OPERATING_MANAGE.getCode())) { | |||
| WxBillRentManage dbBill = wxBillRentManageMapper.selectById(id); | |||
| WxBillRentManage wxBillRent = new WxBillRentManage(); | |||
| wxBillRent.setId(id); | |||
| wxBillRent.setUpdatetime(updateDate); | |||
| if (forcePaid) { | |||
| wxBillRent.setReceivePay(dbBill.getPay()); | |||
| wxBillRent.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| wxBillRent.setOwe(0L); | |||
| wxBillRentManageMapper.updateById(wxBillRent); | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, dbBill.getPay(), dbBill.getPay(), user); | |||
| }else { | |||
| if (oldLatePrice != null) { | |||
| wxBillRent.setLatePayPrice(newLatePrice); | |||
| wxBillRent.setOwe(dbBill.getReceivePay() + dbBill.getServiceChargePay() + newLatePrice - dbBill.getPay()); | |||
| wxBillRentManageMapper.updateById(wxBillRent); | |||
| addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY, id, oldLatePrice, newLatePrice, user); | |||
| } else { | |||
| //租赁账单更新 | |||
| wxBillRent.setReceivePay(newPrice); | |||
| long latePayPrice = dbBill.getLatePayPrice() == null ? 0 : dbBill.getLatePayPrice(); | |||
| wxBillRent.setOwe(newPrice + dbBill.getServiceChargePay() + latePayPrice - dbBill.getPay()); | |||
| if (newPrice.equals(dbBill.getPay())) { | |||
| wxBillRent.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| } | |||
| wxBillRentManageMapper.updateById(wxBillRent); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| } | |||
| } | |||
| } else { | |||
| logger.info("未找到账单类型"); | |||
| } | |||
| @@ -1970,6 +2032,8 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| List<Map<String, Object>> list = pageInfo.getList(); | |||
| for (Map<String, Object> map : list) { | |||
| map.put("rentOwe", subZeroAndDot(map.get("rentOwe").toString())); | |||
| map.put("bussinessManageOwe", subZeroAndDot(map.get("bussinessManageOwe").toString())); | |||
| map.put("operatingManageOwe", subZeroAndDot(map.get("operatingManageOwe").toString())); | |||
| map.put("propertyOwe", subZeroAndDot(map.get("propertyOwe").toString())); | |||
| map.put("depositOwe", subZeroAndDot(map.get("depositOwe").toString())); | |||
| map.put("otherOwe", subZeroAndDot(map.get("otherOwe").toString())); | |||
| @@ -2045,6 +2109,8 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| oweMerchantVo.setOtherOwe(new BigDecimal(subZeroAndDot(map.get("otherOwe").toString()))); | |||
| oweMerchantVo.setPropertyOwe(new BigDecimal(subZeroAndDot(map.get("propertyOwe").toString()))); | |||
| oweMerchantVo.setRentOwe(new BigDecimal(subZeroAndDot(map.get("rentOwe").toString()))); | |||
| oweMerchantVo.setBussinessManageOwe(new BigDecimal(subZeroAndDot(map.get("bussinessManageOwe").toString()))); | |||
| oweMerchantVo.setOperatingManageOwe(new BigDecimal(subZeroAndDot(map.get("operatingManageOwe").toString()))); | |||
| oweMerchantVo.setTotalOwe(new BigDecimal(subZeroAndDot(map.get("totalOwe").toString()))); | |||
| list.add(oweMerchantVo); | |||
| } | |||
| @@ -0,0 +1,302 @@ | |||
| package com.iformall.service.impl; | |||
| import com.github.pagehelper.PageHelper; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.IdWorker; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.MallUserInfo; | |||
| import com.iformall.domain.po.WxBillAction; | |||
| import com.iformall.domain.po.WxBillDeposit; | |||
| import com.iformall.domain.po.WxBillRent; | |||
| import com.iformall.domain.po.WxBillRentManage; | |||
| import com.iformall.domain.po.WxPayAccountBill; | |||
| import com.iformall.enums.EnumBillAction; | |||
| import com.iformall.enums.EnumBillDailyStatus; | |||
| import com.iformall.enums.EnumBillPayWay; | |||
| import com.iformall.enums.EnumBillRentStatus; | |||
| import com.iformall.enums.EnumDelStatus; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.mapper.WxBillActionMapper; | |||
| import com.iformall.mapper.WxBillDepositMapper; | |||
| import com.iformall.mapper.WxBillRentManageMapper; | |||
| import com.iformall.service.WxBillActionService; | |||
| import com.iformall.service.WxBillDepositService; | |||
| import com.iformall.service.WxBillRentManageService; | |||
| import com.iformall.service.WxPayAccountBillService; | |||
| import com.iformall.utils.DateUtils; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import org.springframework.transaction.annotation.Transactional; | |||
| import java.math.BigDecimal; | |||
| import java.util.Date; | |||
| import java.util.HashMap; | |||
| import java.util.List; | |||
| import java.util.Map; | |||
| /** | |||
| * @author gongbiao | |||
| */ | |||
| @Service | |||
| public class WxBillRentManageServiceImpl implements WxBillRentManageService { | |||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||
| @Autowired | |||
| WxBillRentManageMapper wxBillRentManageMapper; | |||
| @Autowired | |||
| WxPayAccountBillService wxPayAccountBillService; | |||
| @Autowired | |||
| WxBillActionService wxBillActionService; | |||
| @Autowired | |||
| WxBillActionMapper wxBillActionMapper; | |||
| @Override | |||
| public PageInfo<WxBillRentManage> listAsPage(WxBillRentManage wxBillRentManage, Integer pageIndex, Integer pageSize) { | |||
| PageHelper.startPage(pageIndex, pageSize); | |||
| List<WxBillRentManage> billDepositList = wxBillRentManageMapper.queryBillManageList(wxBillRentManage); | |||
| PageInfo<WxBillRentManage> pageInfo = new PageInfo<>(billDepositList); | |||
| return pageInfo; | |||
| } | |||
| @Override | |||
| public ResultData saveOrUpdate(WxBillRentManage record, MallUserInfo user) { | |||
| int receivepay = record.getRealReceivePay() == null ? 0 : record.getRealReceivePay().intValue(); | |||
| int pay = record.getPay()==null?0:record.getPay().intValue(); | |||
| if(pay>receivepay){ | |||
| return new ResultData(ErrorCode.BILL_PAY_ERROR.getCode(), "实收金额不能大于实际应收总金额"); | |||
| } | |||
| Date date = new Date(); | |||
| if (record.getId() == null) { | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| record.setId(idWorker.nextId()); | |||
| record.setCreatetime(date); | |||
| record.setUpdatetime(date); | |||
| record.setOwe(record.getReceivePay()-record.getPay()); | |||
| record.setIsDel(EnumDelStatus.NOT_DEL.getCode()); | |||
| try { | |||
| wxBillRentManageMapper.insert(record); | |||
| } catch (Exception e) { | |||
| logger.error("保存租赁账单失败,e:" + e.getMessage()); | |||
| throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); | |||
| } | |||
| return new ResultData(Result.SUCCESS, "保存租赁账单成功"); | |||
| } else { | |||
| logger.info("更新租赁账单"); | |||
| WxBillRentManage wxBillRent = wxBillRentManageMapper.selectById(record.getId()); | |||
| if(wxBillRent==null){ | |||
| return new ResultData(ErrorCode.BILL_RENT_IS_NOT_FOUND); | |||
| } | |||
| String price = ""; | |||
| String message =""; | |||
| if(record.getServiceChargePayUpdate() != null){ | |||
| Double l = Double.valueOf(record.getServiceChargePayUpdate())*100; | |||
| wxBillRent.setServiceChargePay(l.intValue()); | |||
| long latePayPrice = wxBillRent.getLatePayPrice() == null ? 0 : wxBillRent.getLatePayPrice(); | |||
| wxBillRent.setOwe(wxBillRent.getReceivePay() + latePayPrice + wxBillRent.getServiceChargePay() - wxBillRent.getPay()); | |||
| }else{ | |||
| Long addpay = wxBillRent.getPay(); | |||
| wxBillRent.setLatePayRatio(record.getLatePayRatio()); | |||
| wxBillRent.setLatePayTime(record.getLatePayTime()); | |||
| wxBillRent.setLatePayStatus(record.getLatePayStatus()); | |||
| wxBillRent.setPay(record.getPay()); | |||
| wxBillRent.setReceivePay(record.getReceivePay()); | |||
| wxBillRent.setOwe(record.getRealReceivePay() - record.getPay()); | |||
| if (record.getPay().equals(record.getRealReceivePay())) { | |||
| wxBillRent.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| Date payDate = record.getPayDate(); | |||
| Date receiveDate = wxBillRent.getReceiveDate(); | |||
| wxBillRent.setExpiredDay(0L); | |||
| if (payDate.after(receiveDate)) { | |||
| int expiredDay = DateUtils.daysBetween(receiveDate, payDate); | |||
| wxBillRent.setExpiredDay((long) expiredDay); | |||
| } | |||
| } | |||
| wxBillRent.setPayDate(record.getPayDate()); | |||
| wxBillRent.setUpdatetime(date); | |||
| wxBillRent.setPayWay(record.getPayWay()); | |||
| price = new BigDecimal(record.getPay() - addpay).divide(new BigDecimal(100)).toPlainString(); | |||
| } | |||
| try { | |||
| wxBillRentManageMapper.updateById(wxBillRent); | |||
| } catch (Exception e) { | |||
| logger.error("更新租赁账单失败,e:" + e.getMessage()); | |||
| throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); | |||
| } | |||
| //日志 | |||
| WxBillAction wxBillAction = new WxBillAction(); | |||
| wxBillAction.setBillId(wxBillRent.getId()); | |||
| if(record.getServiceChargePayUpdate() != null){ | |||
| wxBillAction.setDetails(record.getServiceChargePayBefore()+"元变更为" +record.getServiceChargePayUpdate()+"元"); | |||
| wxBillAction.setAction(EnumBillAction.UPDATE_SERVICE_MONEY.getCode()); | |||
| }else{ | |||
| wxBillAction.setAction(EnumBillAction.OFFLINE_PAY.getCode()); | |||
| message = EnumBillPayWay.getEnum(record.getPayWay()).getMessage(); | |||
| wxBillAction.setDetails(message + price + "元"); | |||
| } | |||
| wxBillAction.setUserId(user.getId()); | |||
| wxBillAction.setUserName(user.getName()); | |||
| wxBillAction.setPhone(user.getPhone()); | |||
| wxBillAction.updateTenantInfo(wxBillRent); | |||
| wxBillAction.setPayDate(wxBillRent.getPayDate()); | |||
| try { | |||
| wxBillActionService.save(wxBillAction); | |||
| } catch (Exception e) { | |||
| logger.error("添加租赁账单行为日志,e:" + e.getMessage()); | |||
| throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); | |||
| } | |||
| return new ResultData(Result.SUCCESS, "更新租赁账单成功", wxBillRent); | |||
| } | |||
| } | |||
| @Override | |||
| public WxBillRentManage getById(Long id) { | |||
| WxBillRentManage record = new WxBillRentManage(); | |||
| record.setId(id); | |||
| return wxBillRentManageMapper.queryBillManageList(record).get(0); | |||
| } | |||
| @Override | |||
| public PageInfo<WxBillRentManage> findByRentContractId(WxBillRentManage record, Integer pageIndex, Integer pageSize) { | |||
| WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(record); | |||
| PageHelper.startPage(pageIndex, pageSize); | |||
| List<WxBillRentManage> billRentList = wxBillRentManageMapper.queryBillManageList(record); | |||
| billRentList.stream().forEach(e->{ | |||
| //手续费 = 合同应收+手续费+滞纳金 | |||
| computeTotalMoney(wxPayAccountBill, e); | |||
| }); | |||
| PageInfo<WxBillRentManage> pageInfo = new PageInfo<>(billRentList); | |||
| return pageInfo; | |||
| } | |||
| @Override | |||
| public void computeTotalMoney(WxPayAccountBill wxPayAccountBill, WxBillRentManage rent) { | |||
| if (rent.getReceivePay() != null) { | |||
| if (rent.getLatePayPrice() == null) { | |||
| rent.setLatePayPrice(0L); | |||
| } | |||
| BigDecimal servicePay; | |||
| if (rent.getServiceChargePay() != null) { | |||
| servicePay = new BigDecimal(rent.getServiceChargePay()); | |||
| } else { | |||
| servicePay = new BigDecimal(rent.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP); | |||
| } | |||
| Long realReceivePay = servicePay.longValue() + rent.getLatePayPrice() + rent.getReceivePay(); | |||
| rent.setRealReceivePay(realReceivePay); | |||
| rent.setServiceChargePay(servicePay.intValue()); | |||
| if (!rent.getStatus().equals(EnumBillRentStatus.NOT_PAID.getCode())) { | |||
| rent.setOwe(0L); | |||
| } else { | |||
| rent.setOwe(realReceivePay - rent.getPay()); | |||
| } | |||
| } | |||
| } | |||
| @Override | |||
| public ResultData updateLatePayMoney(WxBillRentManage record, MallUserInfo user) { | |||
| WxBillRentManage rent = wxBillRentManageMapper.selectById(record.getId()); | |||
| if(record.getLatePayMoneyUpdate() != null) { | |||
| rent.setLatePayPrice(Long.parseLong(record.getLatePayMoneyUpdate()) * 100); | |||
| rent.setOwe(rent.getReceivePay() + rent.getLatePayPrice() + rent.getServiceChargePay() - rent.getPay()); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| WxBillAction billAction = new WxBillAction(); | |||
| billAction.setId(idWorker.nextId()); | |||
| billAction.setCreatetime(new Date()); | |||
| billAction.setUserName("系统端"); | |||
| billAction.setAction(EnumBillAction.UPDATE_LATE_PAY_MONEY.getCode()); | |||
| billAction.setBillId(record.getId()); | |||
| billAction.setDetails(record.getLatePayMoneyBefore()+"元变更为" +record.getLatePayMoneyUpdate()+"元"); | |||
| billAction.setUpdatetime(new Date()); | |||
| wxBillActionMapper.insert(billAction); | |||
| } | |||
| wxBillRentManageMapper.updateById(rent); | |||
| return new ResultData(); | |||
| } | |||
| @Override | |||
| public void updateBillStatus(WxBillRentManage record) { | |||
| logger.info("更新租赁押金账单状态开始..."); | |||
| //更新逾期天数及状态 | |||
| updateNotPaidStatus(record); | |||
| //更新待缴的状态 | |||
| updateWaidPayStatus(record); | |||
| logger.info("更新租赁押金账单状态结束..."); | |||
| } | |||
| @Transactional(rollbackFor = {Exception.class}) | |||
| public void updateWaidPayStatus(WxBillRentManage record) { | |||
| Map<String, Object> params = new HashMap<>(); | |||
| params.put("tenantId", record.getTenantId()); | |||
| params.put("waitPay", EnumBillRentStatus.WAIT_PAY.getCode()); | |||
| params.put("paid", EnumBillRentStatus.PAID.getCode()); | |||
| try { | |||
| wxBillRentManageMapper.updateWaitPayStatus(params); | |||
| } catch (Exception e) { | |||
| logger.error("更新物业待缴账单状态失败,e:" + e.getMessage()); | |||
| throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); | |||
| } | |||
| } | |||
| @Transactional(rollbackFor = {Exception.class}) | |||
| public void updateNotPaidStatus(WxBillRentManage record) { | |||
| Map<String, Object> params = new HashMap<>(); | |||
| params.put("tenantId", record.getTenantId()); | |||
| params.put("notPaid", EnumBillRentStatus.NOT_PAID.getCode()); | |||
| params.put("paid", EnumBillRentStatus.PAID.getCode()); | |||
| try { | |||
| wxBillRentManageMapper.updateNotPaidStatus(params); | |||
| } catch (Exception e) { | |||
| logger.error("更新物业欠缴账单状态失败,e:" + e.getMessage()); | |||
| throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); | |||
| } | |||
| } | |||
| @Override | |||
| public void deleteById(Long id) { | |||
| wxBillRentManageMapper.deleteById(id); | |||
| } | |||
| @Transactional(rollbackFor = {Exception.class}) | |||
| @Override | |||
| public ResultData updatePaid(Long id) { | |||
| WxBillRentManage wxBillDeposit = wxBillRentManageMapper.selectById(id); | |||
| if(wxBillDeposit==null){ | |||
| return new ResultData(ErrorCode.BILL_RENT_DEPOSIT_IS_NOT_FOUND); | |||
| } | |||
| wxBillDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| Date d =new Date(); | |||
| wxBillDeposit.setPayDate(d); | |||
| wxBillDeposit.setUpdatetime(d); | |||
| try { | |||
| wxBillRentManageMapper.updateById(wxBillDeposit); | |||
| } catch (Exception e) { | |||
| logger.error("租赁押金结单失败,e:" + e.getMessage()); | |||
| throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); | |||
| } | |||
| return new ResultData(Result.SUCCESS, "租赁押金结单成功"); | |||
| } | |||
| @Override | |||
| public ResultData updateLatePayStatus(WxBillRentManage record) { | |||
| record.setLatePayStatus(EnumBillDailyStatus.PAID.getCode()); | |||
| record.setUpdatetime(new Date()); | |||
| try { | |||
| wxBillRentManageMapper.updateById(record); | |||
| } catch (Exception e) { | |||
| logger.error("修改营业额失败,e:" + e.getMessage()); | |||
| throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "滞纳金结单失败"); | |||
| } | |||
| return new ResultData(Result.SUCCESS, "滞纳金结单成功", record); | |||
| } | |||
| } | |||
| @@ -58,6 +58,8 @@ public class WxBillRentServiceImpl implements WxBillRentService { | |||
| WxPayAccountBillService wxPayAccountBillService; | |||
| @Autowired | |||
| WxBillDepositService wxBillDepositService; | |||
| @Autowired | |||
| WxBillRentManageMapper wxBillRentManageMapper; | |||
| @Override | |||
| public PageInfo<WxBillRent> listAsPage(WxBillRent record, Integer pageIndex, Integer pageSize) { | |||
| @@ -690,15 +690,21 @@ | |||
| bill.receive_date receiveDate,DATEDIFF(now(),bill.receive_date) expiredDay, | |||
| round(bill.rentOwe/100,2) rentOwe, | |||
| round(bill.bmOwe/100,2) bussinessManageOwe, | |||
| round(bill.omOwe/100,2) operatingManageOwe, | |||
| round(bill.propertyOwe/100,2) propertyOwe, | |||
| round(bill.depositOwe/100,2) depositOwe, | |||
| round(bill.otherOwe/100,2) otherOwe, | |||
| round((bill.rentOwe+bill.propertyOwe+bill.depositOwe+bill.otherOwe)/100,2) totalOwe, | |||
| round((bill.rentOwe+bill.bussinessManageOwe+bill.operatingManageOwe+bill.propertyOwe+bill.depositOwe+bill.otherOwe)/100,2) totalOwe, | |||
| <choose> | |||
| <when test="1==filterHasPay"> | |||
| round((bill.rentReceivePay+bill.rentLatePay+bill.rentServiceChargePay-bill.rentPay)/100,2) | |||
| rentReceivePay, | |||
| round((bill.bmReceivePay+bill.bmLatePay+bill.bmServiceChargePay-bill.bmPay)/100,2) | |||
| bussinessManageReceivePay, | |||
| round((bill.omReceivePay+bill.omLatePay+bill.omServiceChargePay-bill.omPay)/100,2) | |||
| operatingManageReceivePay, | |||
| round((bill.propertyReceivePay+bill.propertyLatePay+bill.propertyServiceChargePay-bill.propertyPay)/100,2) | |||
| propertyReceivePay, | |||
| round((bill.depositReceivePay+bill.depositLatePay+bill.depositServiceChargePay-bill.depositPay)/100,2) | |||
| @@ -712,6 +718,8 @@ | |||
| </when> | |||
| <otherwise> | |||
| round((bill.rentReceivePay+bill.rentLatePay+bill.rentServiceChargePay)/100,2) rentReceivePay, | |||
| round((bill.bmReceivePay+bill.bmLatePay+bill.bmServiceChargePay)/100,2) bussinessManageReceivePay, | |||
| round((bill.omReceivePay+bill.omLatePay+bill.omServiceChargePay)/100,2) operatingManageReceivePay, | |||
| round((bill.propertyReceivePay+bill.propertyLatePay+bill.propertyServiceChargePay)/100,2) | |||
| propertyReceivePay, | |||
| round((bill.depositReceivePay+bill.depositLatePay+bill.depositServiceChargePay)/100,2) | |||
| @@ -728,26 +736,36 @@ | |||
| select oweList.*, | |||
| max(case oweList.bill_type when '租金' then oweList.owe else 0 end) rentOwe, | |||
| max(case oweList.bill_type when '商业管理费' then oweList.owe else 0 end) bmOwe, | |||
| max(case oweList.bill_type when '营业管理费' then oweList.owe else 0 end) omOwe, | |||
| max(case oweList.bill_type when '物业费' then oweList.owe else 0 end) propertyOwe, | |||
| max(case oweList.bill_type when '欠缴押金' then oweList.owe else 0 end) depositOwe, | |||
| max(case oweList.bill_type when '其他费用' then oweList.owe else 0 end) otherOwe, | |||
| max(case oweList.bill_type when '租金' then oweList.receive_pay else 0 end) rentReceivePay, | |||
| max(case oweList.bill_type when '商业管理费' then oweList.receive_pay else 0 end) bmReceivePay, | |||
| max(case oweList.bill_type when '营业管理费' then oweList.receive_pay else 0 end) omReceivePay, | |||
| max(case oweList.bill_type when '物业费' then oweList.receive_pay else 0 end) propertyReceivePay, | |||
| max(case oweList.bill_type when '欠缴押金' then oweList.receive_pay else 0 end) depositReceivePay, | |||
| max(case oweList.bill_type when '其他费用' then oweList.receive_pay else 0 end) otherReceivePay, | |||
| max(case oweList.bill_type when '租金' then oweList.pay else 0 end) rentPay, | |||
| max(case oweList.bill_type when '商业管理费' then oweList.pay else 0 end) bmPay, | |||
| max(case oweList.bill_type when '营业管理费' then oweList.pay else 0 end) omPay, | |||
| max(case oweList.bill_type when '物业费' then oweList.pay else 0 end) propertyPay, | |||
| max(case oweList.bill_type when '欠缴押金' then oweList.pay else 0 end) depositPay, | |||
| max(case oweList.bill_type when '其他费用' then oweList.pay else 0 end) otherPay, | |||
| max(case oweList.bill_type when '租金' then oweList.latePayPrice else 0 end) rentLatePay, | |||
| max(case oweList.bill_type when '商业管理费' then oweList.latePayPrice else 0 end) bmLatePay, | |||
| max(case oweList.bill_type when '营业管理费' then oweList.latePayPrice else 0 end) omtLatePay, | |||
| max(case oweList.bill_type when '物业费' then oweList.latePayPrice else 0 end) propertyLatePay, | |||
| max(case oweList.bill_type when '欠缴押金' then oweList.latePayPrice else 0 end) depositLatePay, | |||
| max(case oweList.bill_type when '其他费用' then oweList.latePayPrice else 0 end) otherLatePay, | |||
| max(case oweList.bill_type when '租金' then oweList.serviceChargePay else 0 end) rentServiceChargePay, | |||
| max(case oweList.bill_type when '商业管理费' then oweList.serviceChargePay else 0 end) bmServiceChargePay, | |||
| max(case oweList.bill_type when '营业管理费' then oweList.serviceChargePay else 0 end) omServiceChargePay, | |||
| max(case oweList.bill_type when '物业费' then oweList.serviceChargePay else 0 end) propertyServiceChargePay, | |||
| max(case oweList.bill_type when '欠缴押金' then oweList.serviceChargePay else 0 end) depositServiceChargePay, | |||
| max(case oweList.bill_type when '其他费用' then oweList.serviceChargePay else 0 end) otherServiceChargePay | |||
| @@ -769,6 +787,34 @@ | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <include refid="getOweBillAsPageConditions"/> | |||
| union all | |||
| select id,merchant_id,shop_id,tenant_id,parent_tenant_id,'商业管理费' name,11 bill_type_value,'商业管理费' | |||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') | |||
| receive_date,pay_date,expired_day,status,'' starttime,'' | |||
| endtime,rent_shop_type,late_pay_price,service_charge_pay from wx_bill_rent_manage | |||
| where manage_fee_type = 1 | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <include refid="getOweBillAsPageConditions"/> | |||
| union all | |||
| select id,merchant_id,shop_id,tenant_id,parent_tenant_id,'营业管理费' name,12 bill_type_value,'营业管理费' | |||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') | |||
| receive_date,pay_date,expired_day,status,'' starttime,'' | |||
| endtime,rent_shop_type,late_pay_price,service_charge_pay from wx_bill_rent_manage | |||
| where manage_fee_type = 2 | |||
| <if test=" null != tenantId and '' != tenantId"> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != parentTenantId and '' != parentTenantId"> | |||
| and `parent_tenant_id` = #{parentTenantId} | |||
| </if> | |||
| <include refid="getOweBillAsPageConditions"/> | |||
| union all | |||
| select id,merchant_id,shop_id,tenant_id,parent_tenant_id,'物业费' name,3 bill_type_value,'物业费' | |||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||