| @@ -5,9 +5,7 @@ import com.iformall.annotation.SystemControllerLog; | |||||
| import com.iformall.common.ResultData; | import com.iformall.common.ResultData; | ||||
| import com.iformall.controller.base.BaseController; | import com.iformall.controller.base.BaseController; | ||||
| import com.iformall.domain.po.*; | import com.iformall.domain.po.*; | ||||
| import com.iformall.enums.EnumBillTypeParam; | |||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.utils.DateUtils; | |||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiImplicitParam; | import io.swagger.annotations.ApiImplicitParam; | ||||
| import io.swagger.annotations.ApiImplicitParams; | import io.swagger.annotations.ApiImplicitParams; | ||||
| @@ -15,18 +13,11 @@ import io.swagger.annotations.ApiOperation; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.apache.commons.collections.CollectionUtils; | |||||
| import org.springframework.web.bind.annotation.GetMapping; | import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.ModelAttribute; | import org.springframework.web.bind.annotation.ModelAttribute; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | import org.springframework.web.bind.annotation.RestController; | ||||
| import java.text.SimpleDateFormat; | |||||
| import java.util.ArrayList; | |||||
| import java.util.Calendar; | |||||
| import java.util.Date; | |||||
| import java.util.List; | |||||
| /** | /** | ||||
| * @author gongbiao | * @author gongbiao | ||||
| */ | */ | ||||
| @@ -39,15 +30,8 @@ public class WxBillActionController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private WxBillActionService wxBillActionService; | private WxBillActionService wxBillActionService; | ||||
| @Autowired | |||||
| private WxRentContractService wxRentContractService; | |||||
| @Autowired | |||||
| private WxPropertyContractService wxPropertyContractService; | |||||
| @Autowired | |||||
| private WxBillRentService wxBillRentService; | |||||
| @Autowired | |||||
| private WxBillPropertyService wxBillPropertyService; | |||||
| @ApiOperation("账单操作记录列表") | |||||
| @GetMapping("list") | @GetMapping("list") | ||||
| @ApiImplicitParams({ | @ApiImplicitParams({ | ||||
| @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), | ||||
| @@ -63,61 +47,4 @@ public class WxBillActionController extends BaseController { | |||||
| PageInfo<WxBillAction> result = wxBillActionService.listAsPage(wxBillAction, pageNum, pageSize); | PageInfo<WxBillAction> result = wxBillActionService.listAsPage(wxBillAction, pageNum, pageSize); | ||||
| return new ResultData(result); | return new ResultData(result); | ||||
| } | } | ||||
| public void addSysLatePayBillAction(WxBillAction wxBillAction){ | |||||
| } | |||||
| @ApiOperation("滞纳金变更列表") | |||||
| @GetMapping("latePaylist") | |||||
| @SystemControllerLog(description = "账单操作记录-滞纳金列表") | |||||
| public ResultData latePaylist(@ModelAttribute WxBillAction wxBillAction, Integer pageNum, Integer pageSize) { | |||||
| logger.debug("[" + getIpAddr() + "] WxBillActionController::latePaylist"); | |||||
| SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |||||
| if (null == wxBillAction) { | |||||
| wxBillAction = new WxBillAction(); | |||||
| } | |||||
| Date frontDay = DateUtils.getDaySet(new Date(), Calendar.DATE,-1); | |||||
| wxBillAction.setBillId(wxBillAction.getBillId()); | |||||
| wxBillAction.setStartDate(sdf.format(frontDay)); | |||||
| wxBillAction.setEndDate(sdf.format(frontDay)+" 23:59:59"); | |||||
| List<WxBillAction> billActionList = wxBillActionService.find(wxBillAction); | |||||
| if(CollectionUtils.isEmpty(billActionList)){ | |||||
| } | |||||
| wxBillAction.setTenantId(getTenantId()); | |||||
| wxBillAction.setSortColumns(BaseEntity.SortField.Id_DESC); | |||||
| PageInfo<WxBillAction> result = wxBillActionService.listAsPage(wxBillAction, pageNum, pageSize); | |||||
| if(result != null && CollectionUtils.isNotEmpty(result.getList())){ | |||||
| Date startDate; | |||||
| Date endDate = DateUtils.getDaySet(new Date(), Calendar.DATE,-1);; | |||||
| if (EnumBillTypeParam.RENT.getCode().equals(result.getList().get(0).getBillType())) { | |||||
| WxBillRent billRent = new WxBillRent(); | |||||
| billRent.setId(wxBillAction.getBillId()); | |||||
| WxRentContract rentContract = wxRentContractService.getByBill(billRent); | |||||
| WxBillRent wxBillRent = wxBillRentService.getById(wxBillAction.getBillId()); | |||||
| startDate = DateUtils.getDaySet(wxBillRent.getReceiveDate(), Calendar.DATE,rentContract.getLatePayDay()); | |||||
| }else if (EnumBillTypeParam.PROPERTY.getCode().equals(result.getList().get(0).getBillType())) { | |||||
| WxBillProperty billRent = new WxBillProperty(); | |||||
| billRent.setId(wxBillAction.getBillId()); | |||||
| WxPropertyContract propertyContract = wxPropertyContractService.getByBill(billRent); | |||||
| WxBillProperty wxBillProperty = wxBillPropertyService.getById(wxBillAction.getBillId()); | |||||
| startDate = DateUtils.getDaySet(wxBillProperty.getReceiveDate(), Calendar.DATE,propertyContract.getLatePayDay()); | |||||
| } | |||||
| Date curr = endDate; | |||||
| for (WxBillAction action:result.getList()) { | |||||
| if(sdf.format(curr).equals(action.getCreatetime())){ | |||||
| continue; | |||||
| } | |||||
| } | |||||
| } | |||||
| return new ResultData(result); | |||||
| } | |||||
| } | } | ||||
| @@ -1,2 +0,0 @@ | |||||
| ALTER TABLE `wx_bill_action` | |||||
| ADD COLUMN `bill_type` INT(2) NULL DEFAULT 0 COMMENT '账单类型'; | |||||
| @@ -0,0 +1,48 @@ | |||||
| package com.iformall.schedule; | |||||
| import com.iformall.domain.po.WxMall; | |||||
| import com.iformall.domain.vo.WxBillAll; | |||||
| import com.iformall.mapper.WxMallMapper; | |||||
| 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.Scheduled; | |||||
| import org.springframework.stereotype.Component; | |||||
| import java.util.List; | |||||
| /** | |||||
| * @author luozukai | |||||
| */ | |||||
| @Component | |||||
| public class LatePayBillActionSchedule { | |||||
| private final Logger logger = LoggerFactory.getLogger(this.getClass()); | |||||
| @Autowired | |||||
| private WxBillAllService wxBillAllService; | |||||
| @Autowired | |||||
| private WxMallMapper wxMallMapper; | |||||
| /** | |||||
| * 每天1点执行 | |||||
| */ | |||||
| @Scheduled(cron = "0 0 1 * * ?") | |||||
| public void updateBillStatus() { | |||||
| logger.info("账单状态更新开始"); | |||||
| List<WxMall> wxMalls = wxMallMapper.findList(null); | |||||
| for (WxMall wxMall : wxMalls) { | |||||
| String tenantId = wxMall.getTenantId(); | |||||
| WxBillAll wxBillAll = new WxBillAll(); | |||||
| wxBillAll.setTenantId(tenantId); | |||||
| wxBillAllService.updateBillStatus(wxBillAll); | |||||
| } | |||||
| logger.info("账单状态更新结束"); | |||||
| } | |||||
| } | |||||
| @@ -23,7 +23,6 @@ public class WxBillAction extends BaseEntity { | |||||
| @Transient | @Transient | ||||
| protected List<Long> ids; | protected List<Long> ids; | ||||
| @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId") | @io.swagger.annotations.ApiModelProperty(value = "租户ID", name = "tenantId") | ||||
| private String tenantId; | private String tenantId; | ||||
| @@ -54,9 +53,6 @@ public class WxBillAction extends BaseEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value = "付款时间", name = "payDate") | @io.swagger.annotations.ApiModelProperty(value = "付款时间", name = "payDate") | ||||
| private Date payDate; | private Date payDate; | ||||
| @io.swagger.annotations.ApiModelProperty(value = "账单类型", name = "billType") | |||||
| private Integer billType; | |||||
| @Transient | @Transient | ||||
| private Long oldPrice; | private Long oldPrice; | ||||
| @@ -58,7 +58,7 @@ public interface WxBillAllService { | |||||
| ResultData updateReceivePay(WxBillAll wxBillAll, MallUserInfo user); | ResultData updateReceivePay(WxBillAll wxBillAll, MallUserInfo user); | ||||
| void addBillAction(EnumBillAction billAction, Long billId, Long oldPrice, Long newPrice, MallUserInfo mallUserInfo,Integer billType); | |||||
| void addBillAction(EnumBillAction billAction, Long billId, Long oldPrice, Long newPrice, MallUserInfo mallUserInfo); | |||||
| void exportTemplate(WxBillExcelTemplate wxBillExcelTemplate, HttpServletRequest request, HttpServletResponse response); | void exportTemplate(WxBillExcelTemplate wxBillExcelTemplate, HttpServletRequest request, HttpServletResponse response); | ||||
| @@ -63,7 +63,6 @@ public class WxBillActionServiceImpl implements WxBillActionService { | |||||
| Date date = new Date(); | Date date = new Date(); | ||||
| wxBillAction.setCreatetime(date); | wxBillAction.setCreatetime(date); | ||||
| wxBillAction.setUpdatetime(date); | wxBillAction.setUpdatetime(date); | ||||
| wxBillAction.setBillType(action.getBillType()); | |||||
| return wxBillActionMapper.insertSelective(wxBillAction); | return wxBillActionMapper.insertSelective(wxBillAction); | ||||
| } | } | ||||
| @@ -784,7 +784,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||||
| if(oldLatePrice != null){ | if(oldLatePrice != null){ | ||||
| wxBillRent.setLatePayPrice(newLatePrice); | wxBillRent.setLatePayPrice(newLatePrice); | ||||
| wxBillRentMapper.updateByPrimaryKeySelective(wxBillRent); | wxBillRentMapper.updateByPrimaryKeySelective(wxBillRent); | ||||
| addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY,id, oldPrice, newPrice, user,billType); | |||||
| addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY,id, oldPrice, newPrice, user); | |||||
| }else{ | }else{ | ||||
| //租赁账单更新 | //租赁账单更新 | ||||
| wxBillRent.setReceivePay(newPrice); | wxBillRent.setReceivePay(newPrice); | ||||
| @@ -794,7 +794,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||||
| } | } | ||||
| wxBillRentMapper.updateByPrimaryKeySelective(wxBillRent); | wxBillRentMapper.updateByPrimaryKeySelective(wxBillRent); | ||||
| //账单日志 | //账单日志 | ||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user,billType); | |||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user); | |||||
| } | } | ||||
| } else if (billType.equals(EnumBillTypeParam.RENT_DEPOSIT.getCode())) { | } else if (billType.equals(EnumBillTypeParam.RENT_DEPOSIT.getCode())) { | ||||
| WxBillDeposit dbBill = wxBillDepositMapper.selectByPrimaryKey(id); | WxBillDeposit dbBill = wxBillDepositMapper.selectByPrimaryKey(id); | ||||
| @@ -809,7 +809,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||||
| wxBillDeposit.setUpdatetime(updateDate); | wxBillDeposit.setUpdatetime(updateDate); | ||||
| wxBillDepositMapper.updateByPrimaryKeySelective(wxBillDeposit); | wxBillDepositMapper.updateByPrimaryKeySelective(wxBillDeposit); | ||||
| //账单日志 | //账单日志 | ||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user,billType); | |||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user); | |||||
| } else if (billType.equals(EnumBillTypeParam.PROPERTY.getCode())) { | } else if (billType.equals(EnumBillTypeParam.PROPERTY.getCode())) { | ||||
| WxBillProperty dbBill = wxBillPropertyMapper.selectByPrimaryKey(id); | WxBillProperty dbBill = wxBillPropertyMapper.selectByPrimaryKey(id); | ||||
| //物业账单更新 | //物业账单更新 | ||||
| @@ -819,7 +819,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||||
| if(oldLatePrice != null){ | if(oldLatePrice != null){ | ||||
| wxBillProperty.setLatePayPrice(newLatePrice); | wxBillProperty.setLatePayPrice(newLatePrice); | ||||
| wxBillPropertyMapper.updateByPrimaryKeySelective(wxBillProperty); | wxBillPropertyMapper.updateByPrimaryKeySelective(wxBillProperty); | ||||
| addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY,id, oldPrice, newPrice, user,billType); | |||||
| addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY,id, oldPrice, newPrice, user); | |||||
| }else{ | }else{ | ||||
| wxBillProperty.setReceivePay(newPrice); | wxBillProperty.setReceivePay(newPrice); | ||||
| wxBillProperty.setOwe(newPrice - dbBill.getPay()); | wxBillProperty.setOwe(newPrice - dbBill.getPay()); | ||||
| @@ -828,7 +828,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||||
| } | } | ||||
| wxBillPropertyMapper.updateByPrimaryKeySelective(wxBillProperty); | wxBillPropertyMapper.updateByPrimaryKeySelective(wxBillProperty); | ||||
| //账单日志 | //账单日志 | ||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user,billType); | |||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user); | |||||
| } | } | ||||
| } else if (billType.equals(EnumBillTypeParam.PROPERTY_DEPOSIT.getCode())) { | } else if (billType.equals(EnumBillTypeParam.PROPERTY_DEPOSIT.getCode())) { | ||||
| WxBillPropertyDeposit dbBill = wxBillPropertyDepositMapper.selectByPrimaryKey(id); | WxBillPropertyDeposit dbBill = wxBillPropertyDepositMapper.selectByPrimaryKey(id); | ||||
| @@ -843,22 +843,22 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||||
| wxBillPropertyDeposit.setUpdatetime(updateDate); | wxBillPropertyDeposit.setUpdatetime(updateDate); | ||||
| wxBillPropertyDepositMapper.updateByPrimaryKeySelective(wxBillPropertyDeposit); | wxBillPropertyDepositMapper.updateByPrimaryKeySelective(wxBillPropertyDeposit); | ||||
| //账单日志 | //账单日志 | ||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user,billType); | |||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user); | |||||
| } else if (billType.equals(EnumBillTypeParam.WATER.getCode())) { | } else if (billType.equals(EnumBillTypeParam.WATER.getCode())) { | ||||
| //水费账单更新 | //水费账单更新 | ||||
| updateDailyBill(id, newPrice, updateDate); | updateDailyBill(id, newPrice, updateDate); | ||||
| //账单日志 | //账单日志 | ||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user,billType); | |||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user); | |||||
| } else if (billType.equals(EnumBillTypeParam.POWER.getCode())) { | } else if (billType.equals(EnumBillTypeParam.POWER.getCode())) { | ||||
| //电费账单更新 | //电费账单更新 | ||||
| updateDailyBill(id, newPrice, updateDate); | updateDailyBill(id, newPrice, updateDate); | ||||
| //账单日志 | //账单日志 | ||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user,billType); | |||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user); | |||||
| } else if (billType.equals(EnumBillTypeParam.AIR_CONDITIONING.getCode())) { | } else if (billType.equals(EnumBillTypeParam.AIR_CONDITIONING.getCode())) { | ||||
| //空调费账单更新 | //空调费账单更新 | ||||
| updateDailyBill(id, newPrice, updateDate); | updateDailyBill(id, newPrice, updateDate); | ||||
| //账单日志 | //账单日志 | ||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user,billType); | |||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user); | |||||
| } else if (billType.equals(EnumBillTypeParam.ROUTINE.getCode())) { | } else if (billType.equals(EnumBillTypeParam.ROUTINE.getCode())) { | ||||
| WxBillOther dbBill = wxBillOtherMapper.selectByPrimaryKey(id); | WxBillOther dbBill = wxBillOtherMapper.selectByPrimaryKey(id); | ||||
| //其他费用账单更新 | //其他费用账单更新 | ||||
| @@ -872,7 +872,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||||
| wxBillOther.setUpdatetime(updateDate); | wxBillOther.setUpdatetime(updateDate); | ||||
| wxBillOtherMapper.updateByPrimaryKeySelective(wxBillOther); | wxBillOtherMapper.updateByPrimaryKeySelective(wxBillOther); | ||||
| //账单日志 | //账单日志 | ||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user,billType); | |||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user); | |||||
| } else if (billType.equals(EnumBillTypeParam.ATHER_DEPOSIT.getCode())) { | } else if (billType.equals(EnumBillTypeParam.ATHER_DEPOSIT.getCode())) { | ||||
| WxBillOtherDeposit dbBill = wxBillOtherDepositMapper.selectByPrimaryKey(id); | WxBillOtherDeposit dbBill = wxBillOtherDepositMapper.selectByPrimaryKey(id); | ||||
| //其他押金账单更新 | //其他押金账单更新 | ||||
| @@ -886,7 +886,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||||
| wxBillOtherDeposit.setUpdatetime(updateDate); | wxBillOtherDeposit.setUpdatetime(updateDate); | ||||
| wxBillOtherDepositMapper.updateByPrimaryKeySelective(wxBillOtherDeposit); | wxBillOtherDepositMapper.updateByPrimaryKeySelective(wxBillOtherDeposit); | ||||
| //账单日志 | //账单日志 | ||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user,billType); | |||||
| addBillAction(EnumBillAction.UPDATE_BILL,id, oldPrice, newPrice, user); | |||||
| } else { | } else { | ||||
| logger.info("未找到账单类型"); | logger.info("未找到账单类型"); | ||||
| } | } | ||||
| @@ -894,14 +894,13 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||||
| } | } | ||||
| @Override | @Override | ||||
| public void addBillAction(EnumBillAction billAction,Long billId, Long oldPrice, Long newPrice, MallUserInfo mallUserInfo,Integer billType) { | |||||
| public void addBillAction(EnumBillAction billAction,Long billId, Long oldPrice, Long newPrice, MallUserInfo mallUserInfo) { | |||||
| WxBillAction wxBillAction = new WxBillAction(); | WxBillAction wxBillAction = new WxBillAction(); | ||||
| wxBillAction.setBillId(billId); | wxBillAction.setBillId(billId); | ||||
| String oldPriceStr = new BigDecimal(oldPrice).divide(new BigDecimal(100)).toPlainString(); | String oldPriceStr = new BigDecimal(oldPrice).divide(new BigDecimal(100)).toPlainString(); | ||||
| String newPriceStr = new BigDecimal(newPrice).divide(new BigDecimal(100)).toPlainString(); | String newPriceStr = new BigDecimal(newPrice).divide(new BigDecimal(100)).toPlainString(); | ||||
| wxBillAction.setDetails(oldPriceStr + "元变更成" + newPriceStr + "元"); | wxBillAction.setDetails(oldPriceStr + "元变更成" + newPriceStr + "元"); | ||||
| wxBillAction.setAction(billAction.getCode()); | wxBillAction.setAction(billAction.getCode()); | ||||
| wxBillAction.setBillType(billType); | |||||
| wxBillActionService.modifyBill(wxBillAction, mallUserInfo); | wxBillActionService.modifyBill(wxBillAction, mallUserInfo); | ||||
| } | } | ||||
| @@ -13,11 +13,10 @@ | |||||
| <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/> | <result column="createtime" jdbcType="TIMESTAMP" property="createtime"/> | ||||
| <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/> | <result column="updatetime" jdbcType="TIMESTAMP" property="updatetime"/> | ||||
| <result column="pay_date" jdbcType="TIMESTAMP" property="payDate"/> | <result column="pay_date" jdbcType="TIMESTAMP" property="payDate"/> | ||||
| <result column="bill_type" property="billType"/> | |||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | <sql id="allColumns"> | ||||
| `id`,`tenant_id`,`bill_id`,`user_id`,`user_name`,`phone`,`action`,`details`,`createtime`,`updatetime`,`pay_date`,bill_type | |||||
| `id`,`tenant_id`,`bill_id`,`user_id`,`user_name`,`phone`,`action`,`details`,`createtime`,`updatetime`,`pay_date` | |||||
| </sql> | </sql> | ||||