From 35ed9cd31d7b675082425361a9f08bec40aa1292 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期二, 03 十二月 2024 18:23:01 +0800
Subject: [PATCH] ll
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java | 1331 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 1,276 insertions(+), 55 deletions(-)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
index bb21643..90cf756 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java
@@ -1,21 +1,39 @@
package com.doumee.service.business.impl;
+import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.DateCompare;
+import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.YwContractMapper;
-import com.doumee.dao.business.model.YwContract;
+import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.CompanyMapper;
+import com.doumee.dao.business.model.*;
+import com.doumee.dao.system.MultifileMapper;
+import com.doumee.dao.system.SystemUserMapper;
+import com.doumee.dao.system.model.Multifile;
+import com.doumee.dao.system.model.SystemUser;
import com.doumee.service.business.YwContractService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import org.apache.commons.lang3.StringUtils;
+import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
-import java.util.List;
+import java.math.BigDecimal;
+import java.time.temporal.ChronoUnit;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* 杩愮淮鍚堝悓淇℃伅琛⊿ervice瀹炵幇
@@ -27,11 +45,1078 @@
@Autowired
private YwContractMapper ywContractMapper;
+ @Autowired
+ private YwContractRoomMapper ywContractRoomMapper;
+ @Autowired
+ private YwContractDetailMapper ywContractDetailMapper;
+ @Autowired
+ private YwContractBillMapper ywContractBillMapper;
+ @Autowired
+ private MultifileMapper multifileMapper;
+ @Autowired
+ private YwWorkorderLogMapper ywWorkorderLogMapper;
+ @Autowired
+ private CompanyMapper companyMapper;
+ @Autowired
+ private YwProjectMapper projectMapper;
+ @Autowired
+ private YwRoomMapper roomMapper;
+ @Autowired
+ private SystemUserMapper systemUserMapper;
+ @Autowired
+ private YwCustomerMapper customerMapper;
+ @Autowired
+ private MemberMapper memberMapper;
+
+ @Autowired
+ private SystemDictDataBiz systemDictDataBiz;
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public Integer create(YwContract model) {
+ isParamValidCreated(model);
+ model.setCreator(model.getLoginUserInfo().getId());
+ model.setIsdeleted(Constants.ZERO);
+ model.setCreateDate(new Date());
+ model.setStatus(Constants.ZERO);
+ model.setEditDate(model.getCreateDate());
+ model.setEditor(model.getCreator());
+ model.setStatus(Constants.ZERO);//寰呮墽琛�
+ model.setRemark(getRemarlByParam(model));
+ ywContractMapper.insert(model);
+ dealDetailListBiz(model);//澶勭悊鏉℃淇℃伅
+ dealMultifileBiz(model);//澶勭悊闄勪欢淇℃伅
+ dealRoomsForContract(model);//澶勭悊鎴挎簮鍏宠仈琛�
+ dealLogBiz(model,Constants.YwLogType.CONTRACT_CREATE,model.getLoginUserInfo().getRealname(),"銆�"+model.getRemark().replace("鍚堝悓鎽樿锛�","")+"銆�");//璁板綍鏂板缓鏃ュ織
+ return model.getId();
+ }
+
+ private void dealRoomsForContract(YwContract model) {
+ List<YwContractRoom> list = new ArrayList<>();
+ for(YwRoom room :model.getRoomList()){
+ YwContractRoom t = new YwContractRoom();
+ t.setContractId(model.getId());
+ t.setRoomId(room.getId());
+ t.setCreator(model.getCreator());
+ t.setIsdeleted(Constants.ZERO);
+ t.setCreateDate(model.getCreateDate());
+ t.setEditDate(model.getCreateDate());
+ t.setEditor(model.getCreator());
+ t.setType(Constants.ZERO);
+ list.add(t);
+ }
+ ywContractRoomMapper.insert(list);
+ }
@Override
- public Integer create(YwContract ywContract) {
- ywContractMapper.insert(ywContract);
- return ywContract.getId();
+ public List<YwContractBill> getBillList(YwContract model){
+
+ isParamValidForBill(model);
+ model.setCreateDate(new Date());
+ model.setEditDate(model.getCreateDate());
+ dealDetailListBiz(model);//澶勭悊鏉℃淇℃伅
+ return model.getBillList();
+ }
+
+ private void isParamValidForBill(YwContract model) {
+ if(model.getStartDate() == null
+ ||model.getEndDate() == null
+ ||model.getProjectId() == null
+ ||model.getCompanyId() == null
+ ||model.getRoundedUp() == null
+ ||model.getRoomIds() == null
+ ||model.getRoomIds().size() == 0
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜椤甸潰瑕佹眰濉啓鍚堝悓淇℃伅");
+ }
+ if(model.getEndDate().getTime()<= model.getStartDate().getTime()){
+
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鍚堝悓鏈夋晥鏈熺粨鏉熸椂闂翠笉寰楁棭浜庡紑濮嬫椂闂达紒");
+ }
+
+ if(model.getBillType() ==0 ){
+ //濡傛灉鐢熸垚绉熻祦鏉℃
+ if( model.getZlDeposit() == null
+ ||model.getZlPayType() == null
+ || model.getZlPayType()>3
+ || model.getZlPayType()<0
+ ||model.getZlDetailList()==null
+ ||model.getZlDetailList().size() ==0){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜椤甸潰瑕佹眰濉啓绉熻祦鏉℃淇℃伅");
+ }
+ model.setType(Constants.TWO);
+ model.setWyDetailList(null);
+ if(!(model.getZlFreeEndDate()==null && model.getZlFreeStartDate()==null) && (
+ (model.getZlFreeEndDate()!=null && model.getZlFreeStartDate()==null)
+ ||(model.getZlFreeEndDate()==null && model.getZlFreeStartDate()!=null)
+ ||model.getZlFreeEndDate().getTime()<= model.getZlFreeStartDate().getTime())
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勭璧佹潯娆惧厤绉熸湡淇℃伅锛�");
+ }
+ for(YwContractDetail d :model.getZlDetailList()){
+ if( d.getStartDate() == null
+ ||d.getEndDate() == null
+ ||d.getPrice() == null
+ ||d.getCircleType() == null
+ || d.getCircleType()>6
+ || d.getCircleType()<0
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜椤甸潰瑕佹眰濉啓绉熻祦鏉℃淇℃伅!");
+ }
+ if(d.getEndDate().getTime()<= d.getStartDate().getTime()){
+
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绉熻祦鏉℃鏈夋晥鏈熺粨鏉熸椂闂翠笉寰楁棭浜庡紑濮嬫椂闂达紒");
+ }
+ if(!Constants.equalsInteger(model.getWyPayType(),Constants.ZERO) &&
+ Constants.equalsInteger(d.getCircleType(),Constants.SIX)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绉熻祦鏉℃鍙湁閫夋嫨涓�娆℃�т粯娆炬椂锛屾墠鑳介�夋嫨璇ユ寜姣忓満鏀惰垂锛�");
+ }
+ }
+ }
+ if(model.getBillType() == 1 ){
+ //濡傛灉鐢熸垚鐗╀笟鏉℃
+ if( model.getWyDeposit() == null
+ ||model.getWyPayType() == null
+ || model.getWyPayType()>3
+ || model.getWyPayType()<0
+ ||model.getWyDetailList()==null
+ ||model.getWyDetailList().size() ==0
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜椤甸潰瑕佹眰濉啓鐗╀笟鏉℃淇℃伅");
+ }
+ model.setType(Constants.ONE);
+ model.setZlDetailList(null);
+ if(!(model.getWyFreeEndDate()==null && model.getWyFreeStartDate()==null) && (
+ (model.getWyFreeEndDate()!=null && model.getWyFreeStartDate()==null)
+ ||(model.getWyFreeEndDate()==null && model.getWyFreeStartDate()!=null)
+ ||model.getWyFreeEndDate().getTime()<= model.getWyFreeStartDate().getTime())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勭墿涓氭潯娆惧厤绉熸湡淇℃伅锛�");
+ }
+ for(YwContractDetail d :model.getWyDetailList()){
+ if( d.getStartDate() == null
+ ||d.getEndDate() == null
+ ||d.getPrice() == null
+ ||d.getCircleType() == null
+ || d.getCircleType()>6
+ || d.getCircleType()<0
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜椤甸潰瑕佹眰濉啓鐗╀笟鏉℃淇℃伅!");
+ }
+ if(d.getEndDate().getTime()<= d.getStartDate().getTime()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鐗╀笟鏉℃鏈夋晥鏈熺粨鏉熸椂闂翠笉寰楁棭浜庡紑濮嬫椂闂达紒");
+ }
+ if(!Constants.equalsInteger(model.getWyPayType(),Constants.ZERO) &&
+ Constants.equalsInteger(d.getCircleType(),Constants.SIX)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鐗╀笟鏉℃鍙湁閫夋嫨涓�娆℃�т粯娆炬椂锛屾墠鑳介�夋嫨璇ユ寜姣忓満鏀惰垂锛�");
+ }
+ }
+ }
+
+ YwProject project = projectMapper.selectById(model.getProjectId());
+ if(project ==null || Constants.equalsInteger(project.getIsdeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勯」鐩俊鎭紒");
+ }
+ List<YwRoom> rooms = roomMapper.selectList(new QueryWrapper<YwRoom>().lambda()
+ .eq(YwRoom::getIsdeleted,Constants.ZERO)
+ .in(YwRoom::getId,model.getRoomIds())
+ .eq(YwRoom::getProjectId,model.getProjectId()) );
+ if(rooms ==null || rooms.size()==0){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨瀵瑰簲椤圭洰涓嬫纭殑鎴挎簮淇℃伅");
+ }
+ if(rooms.size() != rooms.size()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝瀛樺湪鏃犳晥鐨勬埧婧愪俊鎭紒");
+ }
+ model.setTotalArea(new BigDecimal(0));
+ for(YwRoom r : rooms){
+ model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getArea())));
+ }
+ model.setRoomList(rooms);
+ }
+
+ private String getRemarlByParam(YwContract model) {
+
+ String str = "";
+ //璧风鏃�2024/06/01锛岀璧佹暟涓�500銕°�傞鏈熺璧佷笁鏈堜竴浠橈紝绉熼噾鍗曚环35鍏�/銕÷锋湀銆傞鏈熺墿涓氫笁鏈堜竴浠橈紝鐗╀笟鍗曚环4.3鍏�/銕÷锋湀
+ String str0 = "鍚堝悓鎽樿锛氳捣绉熸棩{param1}锛岀璧佹暟涓簕param2}銕°�傞鏈熺璧亄param3}锛岀閲戝崟浠穥param4}{param5}銆傞鏈熺墿涓歿param6}锛岀墿涓氬崟浠穥param7}{param8}";
+ String str1 = "鍚堝悓鎽樿锛氳捣绉熸棩{param1}锛岀璧佹暟涓簕param2}銕°�傞鏈熺璧亄param3}锛岀閲戝崟浠穥param4}{param5}銆�";
+ String str2 = "鍚堝悓鎽樿锛氳捣绉熸棩{param1}锛岄鏈熺墿涓歿param6}锛岀墿涓氬崟浠穥param7}{param8}";
+ if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
+ str= str0;
+ }
+ if(Constants.equalsInteger(model.getType(),Constants.TWO)){
+ str= str1;
+ }
+ if(Constants.equalsInteger(model.getType(),Constants.ONE)){
+ str= str2;
+ }
+ str = str.replace("{param1}",DateUtil.getDateLongSlash(model.getStartDate()))
+ .replace("{param2}",model.getTotalArea().intValue()+"")
+ .replace("{param3}",Constants.getPayTypeByNum(model.getZlPayType()))
+ .replace("{param4}",Constants.formatBigdecimal(model.getZlFirstPrice()).intValue()+"")
+ .replace("{param5}",Constants.getUnitTypeByNum(model.getZlFirstCircle()))
+ .replace("{param6}",Constants.getPayTypeByNum(model.getWyPayType()))
+ .replace("{param7}",Constants.formatBigdecimal(model.getWyFirstPrice()).intValue()+"")
+ .replace("{param8}",Constants.getUnitTypeByNum(model.getWyFirstCircle()));
+ return str;
+ }
+ private String getbackRentRemarkByParam(YwContract model) {
+ BigDecimal fee = Constants.formatBigdecimal(model.getBtFee());
+ String str = "閫�绉熸憳瑕侊細鍓╀綑鏈粨娓呰处鍗晎param1}浠斤紝鍏抽棴璐﹀崟{param2}浠姐�愰��绉熸棩{param3}锛岄��绉熻垂鐢ㄥ悎璁¢渶{param4}{param5}鍏冦�傘��";
+ str = str.replace("{param1}",model.getBtWaitBill()+"")
+ .replace("{param2}",DateUtil.getDateLongSlash(model.getBtDate()))
+ .replace("{param3}",fee.compareTo(new BigDecimal(0)) >=0?"鏀�":"浠�")
+ .replace("{param4}",(fee.compareTo(new BigDecimal(0)) >=0?
+ Constants.formatBigdecimal(model.getBtFee()).intValue()
+ :(Constants.formatBigdecimal(model.getBtFee()).intValue() * -1))+"" );
+ return str;
+ }
+ private String getbackRentLogByParam(YwContract model) {
+ BigDecimal fee = Constants.formatBigdecimal(model.getBtFee());
+ String str = "銆愰��绉熸棩{param1}锛岄��绉熷師鍥狅細{param2},閫�绉熷崗璁腑缁熻鐨勮垂鐢ㄦ�昏{param3}鍏冦�傘��";
+ str = str.replace("{param1}",DateUtil.getDateLongSlash(model.getBtDate()))
+ .replace("{param2}",StringUtils.defaultString(model.getBtInfo(),""))
+ .replace("{param3}",Constants.formatBigdecimal2Float(model.getBtFee()).doubleValue()+"");
+ return str;
+ }
+
+
+
+ /**
+ * 閫�绉熸彁浜�
+ * @param param
+ * @return
+ */
+ @Override
+ @Transactional(rollbackFor = {BusinessException.class,Exception.class})
+ public Integer backRent(YwContract param){
+ isParamValidBackRent(param);
+ param.setEditDate(new Date());
+ param.setEditor(param.getLoginUserInfo().getId());
+ //澶勭悊
+ dealBackRentBillBiz(param);
+ YwContract update = new YwContract();
+ update.setId(param.getId());
+ update.setEditDate(new Date());
+ update.setEditor(param.getLoginUserInfo().getId());
+ update.setBtActDate(update.getEditDate());
+ update.setBtActUserId(update.getEditor());
+ if(Objects.nonNull(param.getBtWaitBill()) && param.getBtWaitBill() > Constants.ZERO){
+ update.setStatus(Constants.THREE);
+ }else{
+ update.setStatus(Constants.FOUR);
+ }
+ update.setBtInfo(param.getBtInfo());
+ update.setBtDate(param.getBtDate());
+ update.setBtType(param.getBtType());
+ update.setBtUserId(param.getBtUserId());
+ update.setBtFee(param.getBtFee());
+ update.setBtRemark(getbackRentRemarkByParam(param));
+ ywContractMapper.updateById(update);
+// if(1==1){
+// throw new BusinessException(ResponseStatus.NOT_ALLOWED);
+// }
+ dealLogBiz(param,Constants.YwLogType.CONTRACT_BACK, param.getLoginUserInfo().getRealname(),getbackRentLogByParam(param));
+ return param.getId();
+ }
+
+
+ @Override
+ public void dealTimeOut(){
+ //瀹氭椂澶勭悊鍚堝悓鎵ц涓�
+ ywContractMapper.update(new UpdateWrapper<YwContract>()
+ .lambda()
+ .set(YwContract::getStatus,Constants.ONE)
+ .set(YwContract::getEditDate,DateUtil.getCurrDateTime())
+ .eq(YwContract::getIsdeleted,Constants.ZERO)
+ .in(YwContract::getStatus,Constants.ZERO)
+ .apply(" START_DATE < NOW() AND END_DATE > NOW() ")
+ );
+ //瀹氭椂澶勭悊鍚堝悓宸茶繃鏈�
+ ywContractMapper.update(new UpdateWrapper<YwContract>()
+ .lambda()
+ .set(YwContract::getStatus,Constants.TWO)
+ .set(YwContract::getEditDate,DateUtil.getCurrDateTime())
+ .eq(YwContract::getIsdeleted,Constants.ZERO)
+ .in(YwContract::getStatus,Constants.ONE,Constants.ZERO)
+ .apply(" END_DATE < NOW() ")
+ );
+
+ }
+
+ private void dealBackRentBillBiz(YwContract param) {
+ //鏌ヨ鍚堝悓鍏ㄩ儴璐﹀崟淇℃伅
+ List<YwContractBill> closeBills = new ArrayList<>();//甯﹀叧闂�
+ List<YwContractBill> newBills = new ArrayList<>();//鏂扮殑璐﹀崟
+ List<YwContractBill> noBills = new ArrayList<>();//涓嶉渶瑕佺粨绠楃殑璐﹀崟
+ List<YwContractBill> yjBills = new ArrayList<>();//鎶奸噾璐﹀崟
+ List<YwContractBill> canBills = new ArrayList<>();//鍙��绉熶慨鏀规暟鎹�
+ List<YwContractBill> allBills = ywContractBillMapper.selectList(new QueryWrapper<YwContractBill>().
+ select("*," +
+ "( select ifnull(sum(case when yw.REVENUE_TYPE = 0 then yw.ACT_RECEIVABLE_FEE else -yw.ACT_RECEIVABLE_FEE end),0) from yw_contract_revenue yw where yw.bill_id = yw_contract_bill.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee " )
+ .lambda().
+ eq(YwContractBill::getIsdeleted,Constants.ZERO)
+ .eq(YwContractBill::getContractId,param.getId()));
+ if(allBills!=null && allBills.size()>0){
+ for(YwContractBill bill: allBills){
+ //浠樻鐘舵�侊細0=寰呮敹娆撅紱1=宸茬粨娓咃紱2=閮ㄥ垎缁撴竻锛�3=寰呬粯娆撅紱4=寰呴��娆撅紱5=宸插叧闂�
+ // 濡傛灉鏄娂閲戞垨鑰呬繚璇侀噾锛屼笉鏀寔閫�娆撅紝淇濇寔鍘熸潵鐨勭姸鎬侊紝 0=绉熻祦璐癸紱1=鐗╀笟璐癸紱2=绉熻祦鎶奸噾锛�3=鐗╀笟鎶奸噾锛�4=姘寸數璐癸紱5=鏉傞」璐癸紱6=鍏朵粬;7=淇濊瘉閲�
+ if(Constants.equalsInteger(Constants.THREE,bill.getCostType())
+ || Constants.equalsInteger(Constants.TWO,bill.getCostType())
+ ||Constants.equalsInteger(Constants.SEVEN,bill.getCostType())){
+ //鎶奸噾鍜屼繚璇侀噾
+ yjBills.add(bill);
+ continue;
+ }
+ if(Constants.equalsInteger(bill.getPayStatus(),Constants.ZERO)
+ ||Constants.equalsInteger(bill.getPayStatus(),Constants.THREE)){
+ if(bill.getStartDate().getTime()<param.getBtDate().getTime()){
+ canBills.add(bill);
+ }else{
+ //濡傛灉杩樻病寮�濮嬶紝璐﹀崟鐩存帴鍏抽棴
+ closeBills.add(bill);
+ noBills.add(bill);
+ }
+// if(bill.getStartDate().getTime()>param.getEditDate().getTime()){
+// //濡傛灉杩樻病寮�濮嬶紝璐﹀崟鐩存帴鍏抽棴
+// closeBills.add(bill);
+// noBills.add(bill);
+// }else{
+// canBills.add(bill);
+// }
+ }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.ONE) ){
+ if(bill.getStartDate().getTime()>param.getBtDate().getTime()){
+// if(bill.getEndDate().getTime()<param.getEditDate().getTime()){
+ //濡傛灉宸茬粨娓咃紝璐﹀崟鐩存帴鍏抽棴
+ noBills.add(bill);
+ }else{
+ canBills.add(bill);
+ }
+ }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.TWO) ){
+ canBills.add(bill);
+ }
+ }
+ }
+ if(closeBills.size()>0){
+ //鐩存帴鍏抽棴鍏抽棴璐﹀崟
+ for(YwContractBill b : closeBills){
+ b.setStatus(Constants.ONE);
+ b.setEditDate(param.getEditDate());
+ b.setEditor(param.getEditor());
+ //鍏抽棴璁㈠崟
+ ywContractBillMapper.updateById(b);
+ }
+ }
+
+ BigDecimal totalBackFee = new BigDecimal(0);
+ if(canBills.size()>0){
+ //鐩存帴鍏抽棴鍏抽棴璐﹀崟
+ for(YwContractBill b : canBills){
+ BigDecimal fee = new BigDecimal(0);
+ YwContractBill editBill = getEditBillFromListByParam(b,param.getCanBackRentBills());
+ if(editBill != null){
+ //浠樻鐘舵�侊細0=寰呮敹娆撅紱1=宸茬粨娓咃紱2=閮ㄥ垎缁撴竻锛�3=寰呬粯娆撅紱4=寰呴��娆撅紱5=宸插叧闂�
+ //濡傛灉璐﹀崟淇℃伅鍋氫簡缂栬緫锛岄噾棰濊绠� 瀹炴敹閲戦 鍜� 淇敼鍚庡簲鏀堕噾棰濅綔瀵规瘮锛屽垽鏂槸鍚﹀簲璇ラ��娆�
+ fee = Constants.formatBigdecimal(b.getActReceivableFee()).subtract(editBill.getReceivableFee());
+ if(fee.compareTo(new BigDecimal(0))== 0){
+ //濡傛灉璐圭敤姝eソ锛屽垯淇敼璐﹀崟淇℃伅涓哄凡缁撴竻
+ b.setPayStatus(Constants.ONE);
+ }else if(fee.compareTo(new BigDecimal(0))> 0){
+ //濡傛灉闇�瑕佽繘琛岄��娆撅紝鏇存柊璐﹀崟淇℃伅涓哄緟閫�娆�
+ b.setPayStatus(Constants.FOUR);
+ }else if(fee.compareTo(new BigDecimal(0)) < 0){
+ //濡傛灉璐﹀崟杩樻湁娆惧緟鏀讹紝鍒欎繚鎸佺姸鎬佷笉鍙�
+ }
+ }
+ b.setReceivableFee(editBill.getReceivableFee());
+ b.setEditDate(param.getEditDate());
+ b.setEditor(param.getEditor());
+ b.setBtActDate(param.getBtActDate());
+ b.setBtDate(param.getBtDate());
+ b.setBtFee(fee);
+ b.setBtInfo(param.getBtInfo());
+ b.setBtUserId(param.getBtUserId());
+ b.setBtSignDate(param.getBtSignDate());
+ b.setBtType(param.getBtType());
+ //鍏抽棴璁㈠崟
+ ywContractBillMapper.updateById(b);
+ totalBackFee = totalBackFee.add(fee);//绱閫�娆鹃噾棰�
+ }
+ }
+ if(param.getAddBillList()!=null && param.getAddBillList().size()>0){
+ for(YwContractBill addBill : param.getAddBillList()){
+ addBill.setIsdeleted(Constants.ZERO);
+ addBill.setContractId(param.getId());
+ addBill.setType(Constants.ONE);
+ addBill.setStatus(Constants.ZERO);
+ if(Constants.equalsInteger(addBill.getFeeType(),Constants.ONE)){
+ addBill.setStartDate(addBill.getPlanPayDate());
+ addBill.setEndDate(addBill.getPlanPayDate());
+ }
+ if(Constants.equalsInteger(addBill.getBillType(),Constants.ZERO)){
+ //濡傛灉鏄敹娆�
+ totalBackFee = totalBackFee.add(Constants.formatBigdecimal(addBill.getActReceivableFee()));
+ addBill.setPayStatus(Constants.ZERO);
+ addBill.setBtFee(Constants.formatBigdecimal(addBill.getActReceivableFee()));
+ }else{
+ //濡傛灉鏄粯娆�
+ addBill.setPayStatus(Constants.THREE);
+ addBill.setBtFee(Constants.formatBigdecimal(addBill.getActReceivableFee()).multiply(new BigDecimal(-1)));
+ }
+ totalBackFee = totalBackFee.add(Constants.formatBigdecimal(addBill.getBtFee()));
+ addBill.setEditDate(param.getEditDate());
+ addBill.setEditor(param.getEditor());
+ addBill.setBtActDate(param.getBtActDate());
+ addBill.setBtDate(param.getBtDate());
+ addBill.setBtInfo(param.getBtInfo());
+ addBill.setBtUserId(param.getBtUserId());
+ addBill.setBtSignDate(param.getBtSignDate());
+ addBill.setBtType(param.getBtType());
+ newBills.add(addBill);
+ }
+ ywContractBillMapper.insert(param.getAddBillList());//鎵归噺鎻掑叆鏁版嵁
+ }
+
+ int yjNoBills =0;
+ if(yjBills.size()>0){
+ // 濡傛灉鏄娂閲戞垨鑰呬繚璇侀噾锛屼笉鏀寔閫�娆撅紝淇濇寔鍘熸潵鐨勭姸鎬侊紝 0=绉熻祦璐癸紱1=鐗╀笟璐癸紱2=绉熻祦鎶奸噾锛�3=鐗╀笟鎶奸噾锛�4=姘寸數璐癸紱5=鏉傞」璐癸紱6=鍏朵粬;7=淇濊瘉閲�
+ for(YwContractBill bill : yjBills){
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(param.getCanBackRentBills())){
+ List<YwContractBill> optional = param.getCanBackRentBills().stream().filter(i->Constants.equalsInteger(bill.getId(),i.getId())).collect(Collectors.toList());
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(optional)){
+ YwContractBill canBill = optional.get(Constants.ZERO);
+ YwContractBill yjBill = new YwContractBill();
+ yjBill.setId(bill.getId());
+ yjBill.setEditDate(param.getEditDate());
+ yjBill.setEditor(param.getEditor());
+ yjBill.setReceivableFee(BigDecimal.ZERO);
+ yjBill.setPayStatus(Constants.FOUR);
+ yjBill.setPlanPayDate(canBill.getPlanPayDate());
+ ywContractBillMapper.updateById(yjBill);
+ }
+ }
+ yjNoBills ++;
+ }
+ }
+ param.setBtWaitBill(canBills.size() + newBills.size()+yjNoBills);//鏈竻绠楃殑璐﹀崟鏁伴噺
+ param.setBtCLoseBill(closeBills.size());
+ param.setBtFee(totalBackFee);
+ }
+
+ private YwContractBill getEditBillFromListByParam(YwContractBill b, List<YwContractBill> canBackRentBills) {
+ for(YwContractBill d : canBackRentBills){
+ if(Constants.equalsInteger(b.getId(),d.getId())){
+ return d;
+ }
+ }
+ return null;
+ }
+
+ private void isParamValidBackRent(YwContract param) {
+ if(param.getId()==null
+ || param.getBtType() == null
+ || param.getBtDate() == null
+ || param.getBtUserId() == null
+ || param.getBtSignDate() == null
+ ||StringUtils.isBlank( param.getBtInfo())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ YwContract model = ywContractMapper.selectById(param.getId());
+ if(model==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝鍚堝悓淇℃伅涓嶅瓨鍦紝璇疯繑鍥炲垪琛ㄥ埛鏂伴噸璇曪紒");
+ }
+
+ SystemUser user = systemUserMapper.selectById(param.getBtUserId());
+ if(user ==null || (user.getDeleted()!=null&& user.getDeleted() )){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝缁忓姙浜轰俊鎭笉瀛樺湪锛�");
+ }
+ if(param.getAddBillList()!=null && param.getAddBillList().size()>0){
+ for(YwContractBill bill: param.getAddBillList()){
+ if(bill.getCostType() == null
+ ||bill.getFeeType() == null
+ ||bill.getReceivableFee() == null
+ ||bill.getReceivableFee().compareTo(new BigDecimal(0)) < 1
+ ||bill.getCompanyId() == null
+ ||bill.getPlanPayDate() == null
+ ||bill.getBillType() == null
+ ||(Constants.equalsInteger(bill.getBillType(),Constants.ZERO)
+ &&Constants.equalsInteger(bill.getFeeType(),Constants.ZERO)
+ && (bill.getStartDate() ==null || bill.getEndDate() ==null) )){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜瑕佹眰濉啓鑷缓璐﹀崟淇℃伅锛�");
+ }
+ }
+ }
+ }
+
+ private void dealDetailListBiz(YwContract model) {
+ List<YwContractDetail> details1 = new ArrayList<>();
+ List<YwContractDetail> details2 = new ArrayList<>();
+ int num = 0;
+ if(Constants.equalsInteger(model.getType(),Constants.ZERO )
+ || Constants.equalsInteger(model.getType(),Constants.TWO)){
+ for(YwContractDetail d :model.getZlDetailList()){
+ d.setCreateDate(model.getEditDate());
+ d.setCreator(model.getEditor());
+ d.setIsdeleted(Constants.ZERO);
+ d.setContractId(model.getId());
+ d.setType(Constants.ZERO);
+ d.setSortnum(num++);
+ d.setStatus(Constants.ZERO);
+ details1.add(d);
+ }
+ }
+ num = 0;
+ if(Constants.equalsInteger(model.getType(),Constants.ZERO )
+ || Constants.equalsInteger(model.getType(),Constants.ONE)){
+ for(YwContractDetail d :model.getWyDetailList()){
+ d.setCreateDate(model.getEditDate());
+ d.setCreator(model.getEditor());
+ d.setIsdeleted(Constants.ZERO);
+ d.setType(Constants.ONE);
+ d.setContractId(model.getId());
+ d.setSortnum(num++);
+ d.setStatus(Constants.ZERO);
+ details2.add(d);
+ }
+ }
+ if(model.getId()!=null){
+ if(details1.size()>0){
+ ywContractDetailMapper.insert(details1);//鎵归噺鎻掑叆鏉℃淇℃伅淇℃伅
+ }
+ if(details2.size()>0){
+ ywContractDetailMapper.insert(details2);//鎵归噺鎻掑叆鏉℃淇℃伅淇℃伅
+ }
+ }
+ //澶勭悊璐﹀崟淇℃伅
+ dealBillListBiz(model,details1,details2);
+ }
+
+ /**
+ * 鏀粯鏂瑰紡 0=涓�娆℃�т粯娆撅紱1=姣忎笁涓湀涓�浠橈紱2=鍏釜鏈堜竴浠橈紱3=涓�骞翠竴浠�
+ * @param model
+ * @param details1 绉熻祦鏉℃
+ * @param details2 鐗╀笟鏉℃
+ */
+ private void dealBillListBiz(YwContract model, List<YwContractDetail> details1, List<YwContractDetail> details2) {
+ List<YwContractBill> billList1 = new ArrayList<>();
+ List<YwContractBill> billList2 = new ArrayList<>();
+ if(Constants.equalsInteger(model.getType(),Constants.ZERO )
+ || Constants.equalsInteger(model.getType(),Constants.TWO)){
+ //濡傛灉鏈夌璧佹潯娆�
+ if(Constants.formatBigdecimal(model.getZlDeposit()).compareTo(new BigDecimal(0))>0){
+ //濡傛灉鏈夌璧佹娂閲�
+ billList1.add(initDepoistBill(Constants.TWO,model));
+ }
+ if(Constants.equalsInteger(model.getZlPayType(), Constants.ZERO)){
+ //濡傛灉鏄竴娆℃�т粯娓�
+ billList1.addAll(getBillsByParamOnce(model,details1,model.getZlFreeStartDate(),model.getZlFreeEndDate()));
+ }else if(Constants.equalsInteger(model.getZlPayType(), Constants.ONE)){
+ //濡傛灉姣忎笁涓湀涓�浠�
+ billList1.addAll(getBillsByParam3Months(model,details1,model.getZlFreeStartDate(),model.getZlFreeEndDate()));
+ }else if(Constants.equalsInteger(model.getZlPayType(), Constants.TWO)){
+ //濡傛灉鍏釜鏈堜竴浠�
+ billList1.addAll(getBillsByParam6Months(model,details1,model.getZlFreeStartDate(),model.getZlFreeEndDate()));
+ }else if(Constants.equalsInteger(model.getZlPayType(), Constants.THREE)){
+ //濡傛灉涓�骞翠竴浠�
+ billList1.addAll(getBillsByParam1Year(model,details1,model.getZlFreeStartDate(),model.getZlFreeEndDate()));
+ }
+ }
+ if(Constants.equalsInteger(model.getType(),Constants.ZERO )
+ || Constants.equalsInteger(model.getType(),Constants.ONE)){
+ //濡傛灉鐗╀笟鏉℃
+ if(Constants.formatBigdecimal(model.getWyDeposit()).compareTo(new BigDecimal(0))>0){
+ //濡傛灉鏈夌璧佹娂閲�
+ billList2.add(initDepoistBill(Constants.THREE,model));
+ }
+ if(Constants.equalsInteger(model.getWyPayType(), Constants.ZERO)){
+ //濡傛灉鏄竴娆℃�т粯娓�
+ billList2.addAll(getBillsByParamOnce(model,details2,model.getWyFreeStartDate(),model.getWyFreeEndDate()));
+ }else if(Constants.equalsInteger(model.getWyPayType(), Constants.ONE)){
+ //濡傛灉姣忎笁涓湀涓�浠�
+ billList2.addAll(getBillsByParam3Months(model,details2,model.getWyFreeStartDate(),model.getWyFreeEndDate()));
+ }else if(Constants.equalsInteger(model.getWyPayType(), Constants.TWO)){
+ //濡傛灉鍏釜鏈堜竴浠�
+ billList2.addAll(getBillsByParam6Months(model,details2,model.getWyFreeStartDate(),model.getWyFreeEndDate()));
+ }else if(Constants.equalsInteger(model.getWyPayType(), Constants.THREE)){
+ //濡傛灉涓�骞翠竴浠�
+ billList2.addAll(getBillsByParam1Year(model,details2,model.getWyFreeStartDate(),model.getWyFreeEndDate()));
+ }
+ }
+
+ if(model.getBillType() == 0){
+ model.setBillList(billList1);
+ }else if(model.getBillType() == 1){
+ model.setBillList(billList2);
+ }
+ int num =1;
+ for(int i=0;i<billList1.size();i++){
+ billList1.get(i).setSortnum(num);
+ num++;
+ }
+ for(int i=0;i<billList2.size();i++){
+ billList2.get(i).setSortnum(num);
+ num++;
+ }
+ if(model.getId()!=null){
+ ywContractBillMapper.insert(billList1);
+ ywContractBillMapper.insert(billList2);
+ }
+ }
+
+ private YwContractBill initDepoistBill(int type, YwContract model ) {
+ YwContractBill bill = new YwContractBill();
+ bill.setCreateDate(model.getEditDate());
+ bill.setCreator(model.getEditor());
+ bill.setEditDate(model.getEditDate());
+ bill.setEditor(model.getEditor());
+ bill.setIsdeleted(Constants.ZERO);
+ bill.setContractId(model.getId());
+ bill.setStatus(Constants.ZERO);
+ bill.setStartDate(model.getStartDate());
+ bill.setEndDate(model.getEndDate());
+ bill.setType(Constants.ZERO);
+ bill.setCostType(type);
+ bill.setPlanPayDate(bill.getStartDate());
+ bill.setTotleFee(type==Constants.TWO?
+ Objects.isNull(model.getZlDeposit())?BigDecimal.ZERO:model.getZlDeposit()
+ :
+ Objects.isNull(model.getWyDeposit())?BigDecimal.ZERO:model.getWyDeposit());//鎶奸噾璐圭敤
+ bill.setReceivableFee(bill.getTotleFee());
+ bill.setBillType(Constants.ZERO);
+ bill.setPayStatus(Constants.ZERO);
+ bill.setSortnum(0);
+ bill.setCompanyId(model.getCompanyId());
+ return bill;
+ }
+
+ /**
+ * 濡傛灉3涓湀涓�浠�
+ * 浠樻鍛ㄦ湡绫诲瀷 0=鍏冩瘡骞崇背澶╋紱1=鍏冩瘡骞崇背鏈堬紱2=鍏冩瘡骞崇背骞达紱3=鍏冩瘡澶╋紱4=鍏冩瘡鏈堬紱5=鍏冩瘡骞达紱6=鍏冩瘡鍦猴紱"
+ * @param model
+ * @param details
+ * @return
+ */
+ private Collection<? extends YwContractBill> getBillsByParam6Months(YwContract model, List<YwContractDetail> details, Date freeStart, Date freeEnd) {
+ List<YwContractBill> list = new ArrayList<>();
+ for(YwContractDetail d : details){
+ List<Date> dateList = getCircleDatesBy6Month(d.getStartDate(),d.getEndDate());
+ if(dateList.size() ==0){
+ continue;
+ }
+ dealCircleDateBillBiz(dateList,model,d,freeStart,freeEnd,list);
+ }
+ return list;
+ }
+ /**
+ * 濡傛灉3涓湀涓�浠�
+ * 浠樻鍛ㄦ湡绫诲瀷 0=鍏冩瘡骞崇背澶╋紱1=鍏冩瘡骞崇背鏈堬紱2=鍏冩瘡骞崇背骞达紱3=鍏冩瘡澶╋紱4=鍏冩瘡鏈堬紱5=鍏冩瘡骞达紱6=鍏冩瘡鍦猴紱"
+ * @param model
+ * @param details
+ * @return
+ */
+ private Collection<? extends YwContractBill> getBillsByParam3Months(YwContract model, List<YwContractDetail> details, Date freeStart, Date freeEnd) {
+ List<YwContractBill> list = new ArrayList<>();
+ for(YwContractDetail d : details){
+ List<Date> dateList = getCircleDatesBy3Month(d.getStartDate(),d.getEndDate());
+ if(dateList.size() ==0){
+ continue;
+ }
+ dealCircleDateBillBiz(dateList,model,d,freeStart,freeEnd,list);
+ }
+ return list;
+ }
+
+ private List<Date> getCircleDatesBy6Month(Date startDate, Date endDate) {
+ DateCompare dateCompare = DateCompare.monthYearCompare(startDate, endDate );
+ int months = dateCompare.getMonth();
+ int monthSix = months / 6;//6涓湀缁村害鏁伴噺
+ int restMonth = months % 6;//鍓╀綑鐨勬暣鏈�
+ int monthDays = dateCompare.getMonthDays();//涓嶆弧涓�涓湀鐨勫ぉ鏁�
+ List<Date> list = new ArrayList<>();
+ for (int i = 0; i < monthSix; i++) {
+ list.add(DateUtil.addMonthToDate(startDate,i*6));
+ }
+ if(restMonth>0 || monthDays>0){
+ list.add(DateUtil.addMonthToDate(startDate,monthSix*6));
+ }
+ return list;
+ }
+ private List<Date> getCircleDatesBy3Month(Date startDate, Date endDate) {
+ DateCompare dateCompare = DateCompare.monthYearCompare(startDate, endDate );
+ int months = dateCompare.getMonth();
+ int monthThree = months / 3;//3涓湀缁村害鏁伴噺
+ int restMonth = months % 3;//鍓╀綑鐨勬暣鏈�
+ int monthDays = dateCompare.getMonthDays();//涓嶆弧涓�涓湀鐨勫ぉ鏁�
+ List<Date> list = new ArrayList<>();
+ for (int i = 0; i < monthThree; i++) {
+ list.add(DateUtil.addMonthToDate(startDate,i*3));
+ }
+ if(restMonth>0 || monthDays>0){
+ list.add(DateUtil.addMonthToDate(startDate,monthThree*3));
+ }
+ return list;
+ }
+
+ /**
+ * 濡傛灉涓�骞翠竴浠�
+ * 浠樻鍛ㄦ湡绫诲瀷 0=鍏冩瘡骞崇背澶╋紱1=鍏冩瘡骞崇背鏈堬紱2=鍏冩瘡骞崇背骞达紱3=鍏冩瘡澶╋紱4=鍏冩瘡鏈堬紱5=鍏冩瘡骞达紱6=鍏冩瘡鍦猴紱"
+ * @param model
+ * @param details
+ * @return
+ */
+ private List<YwContractBill> getBillsByParam1Year(YwContract model, List<YwContractDetail> details,Date freeStart,Date freeEnd) {
+ List<YwContractBill> list = new ArrayList<>();
+ for(YwContractDetail d : details){
+ List<Date> dateList = getCircleDatesByYear(d.getStartDate(),d.getEndDate());
+ if(dateList.size() ==0){
+ continue;
+ }
+ dealCircleDateBillBiz(dateList,model,d,freeStart,freeEnd,list);
+ }
+ return list;
+ }
+
+ private void dealCircleDateBillBiz( List<Date> dateList ,YwContract model, YwContractDetail d, Date freeStart, Date freeEnd, List<YwContractBill> list ) {
+ int temp = 0;
+ for(Date start : dateList){
+ Date end = d.getEndDate();
+ if(temp+1 < dateList.size()){
+ end =DateUtil.addDaysToDate(dateList.get(temp+1),-1);
+ }
+ temp++;
+ YwContractBill bill = initCreateBillModel(model,d );
+ bill.setStartDate(start);//璐﹀崟寮�濮�
+ bill.setEndDate(end);//璐﹀崟缁撴潫
+ Date planPayDate = DateUtil.addDaysToDate(bill.getStartDate(),Constants.formatIntegerNum(d.getAdvanceDays()) * -1);
+ bill.setPlanPayDate(planPayDate.getTime()>System.currentTimeMillis()?planPayDate:new Date());
+ BigDecimal totalFee =getTotalFeeByStartEnd(model,d,bill,freeStart,freeEnd);
+ bill.setTotleFee(totalFee);
+ bill.setReceivableFee(totalFee);
+ bill.setBillType(Constants.ZERO);
+ bill.setCompanyId(model.getCompanyId());
+ list.add(bill);
+ }
+ }
+ private BigDecimal getTotalFeeByStartEnd(YwContract model, YwContractDetail d, YwContractBill bill,Date freeStart,Date freeEnd) {
+ BigDecimal totalFee = new BigDecimal(0);
+ DateCompare dateCompare = DateCompare.dayCompare(bill.getStartDate(),bill.getEndDate(),freeStart, freeEnd);
+ if(Constants.equalsInteger(d.getCircleType(),Constants.ZERO)){
+ //0=鍏冩瘡骞崇背澶�
+ int days = dateCompare.getDay() ;
+ BigDecimal areas = getAreasNumBYRooms(model.getRoomList());
+ totalFee = new BigDecimal(days).multiply(areas).multiply(Constants.formatBigdecimal(d.getPrice()));//鎬讳环鏍�
+ }else if(Constants.equalsInteger(d.getCircleType(),Constants.ONE)){
+ //1=鍏冩瘡骞崇背鏈�
+ BigDecimal areas = getAreasNumBYRooms(model.getRoomList());
+ BigDecimal month =dateCompare.getMonthFloat();
+ totalFee = month.multiply(areas).multiply(Constants.formatBigdecimal(d.getPrice()));//鎬讳环鏍�
+ }else if(Constants.equalsInteger(d.getCircleType(),Constants.TWO)){
+ //2=鍏冩瘡骞崇背骞�
+ BigDecimal areas = getAreasNumBYRooms(model.getRoomList());
+ BigDecimal year = dateCompare.getYearFloat();
+ totalFee = year.multiply(areas).multiply(Constants.formatBigdecimal(d.getPrice()));//鎬讳环鏍�
+ }else if(Constants.equalsInteger(d.getCircleType(),Constants.THREE)){
+ //3=鍏冩瘡澶�
+ int days = dateCompare.getDay() ;
+ totalFee = new BigDecimal(days).multiply(Constants.formatBigdecimal(d.getPrice()));//鎬讳环鏍�
+ }else if(Constants.equalsInteger(d.getCircleType(),Constants.FOUR)){
+ //4=鍏冩瘡鏈�
+ BigDecimal month = dateCompare.getMonthFloat();
+ totalFee = month.multiply(Constants.formatBigdecimal(d.getPrice()));//鎬讳环鏍�
+ }else if(Constants.equalsInteger(d.getCircleType(),Constants.FIVE)){
+ //5=鍏冩瘡骞�
+ BigDecimal year = dateCompare.getYearFloat();
+ totalFee = year.multiply(Constants.formatBigdecimal(d.getPrice()));//鎬讳环鏍�
+ }else if(Constants.equalsInteger(d.getCircleType(),Constants.SIX)){
+ //6=鍏冩瘡鍦�
+ totalFee =Constants.formatBigdecimal(d.getPrice());
+ }
+ if(Constants.equalsInteger(model.getRoundedUp(),Constants.ONE)){
+ //濡傛灉寮哄埗鍙栨暣
+ totalFee = Constants.formatBigdecimal0Float(totalFee);
+ }else{
+ //鍥涜垗浜斿叆涓や綅灏忔暟
+ totalFee = Constants.formatBigdecimal2Float(totalFee);
+ }
+ return totalFee;
+ }
+
+ private List<Date> getCircleDatesByYear(Date startDate, Date endDate ) {
+ DateCompare dateCompare = DateCompare.monthYearCompare(startDate, endDate );
+ int years = dateCompare.getYear();
+ int yeardays = dateCompare.getYearDays();
+ List<Date> list = new ArrayList<>();
+ for (int i = 0; i < years; i++) {
+ list.add(DateUtil.addYearToDate(startDate,i));
+ }
+ if(yeardays>0){
+ list.add(DateUtil.addYearToDate(startDate,years));
+ }
+ return list;
+ }
+
+ /**
+ * 涓�娆℃�т粯娆捐处鍗�
+ * 浠樻鍛ㄦ湡绫诲瀷 0=鍏冩瘡骞崇背澶╋紱1=鍏冩瘡骞崇背鏈堬紱2=鍏冩瘡骞崇背骞达紱3=鍏冩瘡澶╋紱4=鍏冩瘡鏈堬紱5=鍏冩瘡骞达紱6=鍏冩瘡鍦猴紱"
+ * @param model
+ * @param details
+ * @return
+ */
+ private List<YwContractBill> getBillsByParamOnce(YwContract model, List<YwContractDetail> details,Date freeStart,Date freeEnd) {
+ List<YwContractBill> list = new ArrayList<>();
+ for(YwContractDetail d : details){
+ YwContractBill bill = initCreateBillModel(model,d);
+ bill.setStartDate(d.getStartDate());//璐﹀崟寮�濮�
+ bill.setEndDate(d.getEndDate());//璐﹀崟缁撴潫
+ bill.setPlanPayDate(DateUtil.addDaysToDate(bill.getStartDate(),Constants.formatIntegerNum(d.getAdvanceDays()) * -1));
+ bill.setTotleFee(getTotalFeeByStartEnd(model,d,bill,freeStart,freeEnd));
+ bill.setReceivableFee(bill.getTotleFee());
+ bill.setBillType(Constants.ZERO);
+ list.add(bill);
+ }
+ return list;
+
+ }
+
+ private YwContractBill initCreateBillModel(YwContract model,YwContractDetail d) {
+ YwContractBill bill = new YwContractBill();
+ bill.setCreateDate(model.getEditDate());
+ bill.setCreator(model.getEditor());
+ bill.setEditDate(model.getEditDate());
+ bill.setEditor(model.getEditor());
+ bill.setIsdeleted(Constants.ZERO);
+ bill.setContractId(model.getId());
+ bill.setStatus(Constants.ZERO);
+ bill.setPayStatus(Constants.ZERO);
+ bill.setDetailId(d.getId());
+ bill.setCostType(d.getType());
+ bill.setType(Constants.ZERO);
+ return bill;
+ }
+
+
+ private BigDecimal getAreasNumBYRooms(List<YwRoom> roomList) {
+ BigDecimal data= new BigDecimal(0);
+ if(roomList!=null){
+ for(YwRoom r :roomList){
+ data = data.add(Constants.formatBigdecimal(r.getArea()));
+ }
+ }
+
+ return data;
+ }
+
+ private void initFiles(YwContract model) {
+ List<Multifile> multifiles = multifileMapper.selectJoinList(Multifile.class,new MPJLambdaWrapper<Multifile>()
+ .selectAll(Multifile.class)
+ .selectAs(SystemUser::getRealname,Multifile::getUserName)
+ .leftJoin(SystemUser.class,SystemUser::getId,Multifile::getCreator)
+ .eq(Multifile::getObjId,model.getId())
+ .in(Multifile::getObjType, Arrays.asList(new Integer[]{Constants.MultiFile.YW_CONTRACT_FILE.getKey()}))
+ .eq(Multifile::getIsdeleted,Constants.ZERO));
+ if(multifiles!=null){
+ String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+ +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_CONTRACT_FILE).getCode();
+ for(Multifile f : multifiles){
+ if(StringUtils.isBlank(f.getFileurl())){
+ continue;
+ }
+ f.setFileurlFull(path+f.getFileurl());
+ //鐜板満鎯呭喌
+ if(model.getFileList() == null){
+ model.setFileList(new ArrayList<>());
+ }
+ model.getFileList().add(f);
+
+ }
+ }
+ }
+
+
+ private void dealMultifileBiz(YwContract model) {
+ List<Multifile> fileList = new ArrayList<>();
+ if(model.getFileList()!=null && model.getFileList().size()>0){
+ for (int i = 0; i < model.getFileList().size(); i++) {
+ Multifile multifile = model.getFileList().get(i);
+ if(StringUtils.isBlank(multifile.getFileurl())){
+ continue;
+ }
+ multifile.setCreateDate(model.getEditDate());
+ multifile.setCreator(model.getEditor());
+ multifile.setIsdeleted(Constants.ZERO);
+ multifile.setObjId(model.getId());
+ multifile.setCreator(model.getCreator());
+ multifile.setObjType(Constants.MultiFile.YW_CONTRACT_FILE.getKey());
+ multifile.setSortnum(i+1);
+ fileList.add(multifile);
+ }
+ }
+ if(fileList.size()>0){
+ multifileMapper.insert(fileList);
+ }
+
+ }
+
+ private void isParamValidCreated(YwContract model) {
+ if(model.getType()==null || model.getType()>2 || model.getType()<0
+ ||model.getUserId() == null
+ ||model.getStartDate() == null
+ ||model.getEndDate() == null
+ ||model.getSignDate() == null
+ ||model.getProjectId() == null
+ ||model.getCompanyId() == null
+ ||model.getRoundedUp() == null
+ ||model.getRenterId() == null
+ ||model.getMemberId() == null
+ ||model.getRoomIds() == null
+ ||model.getRoomIds().size() == 0
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜椤甸潰瑕佹眰濉啓鍚堝悓淇℃伅");
+ }
+ if(model.getEndDate().getTime()<= model.getStartDate().getTime()){
+
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鍚堝悓鏈夋晥鏈熺粨鏉熸椂闂翠笉寰楁棭浜庡紑濮嬫椂闂达紒");
+ }
+ if(Constants.equalsInteger(model.getType(),Constants.ZERO )
+ || Constants.equalsInteger(model.getType(),Constants.TWO)){
+ if( model.getZlDeposit() == null
+ ||model.getZlPayType() == null
+ || model.getZlPayType()>3
+ || model.getZlPayType()<0
+ ||model.getZlDetailList()==null
+ ||model.getZlDetailList().size() ==0){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜椤甸潰瑕佹眰濉啓绉熻祦鏉℃淇℃伅");
+ }
+
+ if(!(model.getZlFreeEndDate()==null && model.getZlFreeStartDate()==null) && (
+ (model.getZlFreeEndDate()!=null && model.getZlFreeStartDate()==null)
+ ||(model.getZlFreeEndDate()==null && model.getZlFreeStartDate()!=null)
+ ||model.getZlFreeEndDate().getTime()<= model.getZlFreeStartDate().getTime())
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勭璧佹潯娆惧厤绉熸湡淇℃伅锛�");
+ }
+ if((model.getZlFreeStartDate()!=null && model.getZlFreeEndDate()!=null)
+ && (model.getZlFreeEndDate().getTime()>model.getEndDate().getTime()
+ || model.getZlFreeStartDate().getTime()<model.getStartDate().getTime())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鍏嶇鏈熷紑濮嬫棩鏈熷拰缁撴潫鏃ユ湡闄愬埗鍦ㄥ悎鍚屾椂闂磋寖鍥村唴锛�");
+ }
+ for(YwContractDetail d :model.getZlDetailList()){
+ if( d.getStartDate() == null
+ ||d.getEndDate() == null
+ ||d.getPrice() == null
+ ||d.getCircleType() == null
+ || d.getCircleType()>6
+ || d.getCircleType()<0
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜椤甸潰瑕佹眰濉啓绉熻祦鏉℃淇℃伅!");
+ }
+ if(d.getEndDate().getTime()<= d.getStartDate().getTime()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绉熻祦鏉℃鏈夋晥鏈熺粨鏉熸椂闂翠笉寰楁棭浜庡紑濮嬫椂闂达紒");
+ }
+ if(d.getEndDate().getTime()>model.getEndDate().getTime() ||d.getStartDate().getTime()<model.getStartDate().getTime()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏉℃寮�濮嬫棩鏈熷拰缁撴潫鏃ユ湡闄愬埗鍦ㄥ悎鍚屾椂闂磋寖鍥村唴锛�");
+ }
+ if(!Constants.equalsInteger(model.getWyPayType(),Constants.ZERO) &&
+ Constants.equalsInteger(d.getCircleType(),Constants.SIX)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绉熻祦鏉℃鍙湁閫夋嫨涓�娆℃�т粯娆炬椂锛屾墠鑳介�夋嫨璇ユ寜姣忓満鏀惰垂锛�");
+ }
+ if(model.getZlFirstCircle() == null){//棣栨湡淇℃伅
+ model.setZlFirstPrice(d.getPrice());
+ model.setZlFirstCircle(d.getCircleType());
+ }
+ }
+ }
+ if(Constants.equalsInteger(model.getType(),Constants.ZERO )
+ || Constants.equalsInteger(model.getType(),Constants.ONE)){
+ if( model.getWyDeposit() == null
+ ||model.getWyPayType() == null
+ || model.getWyPayType()>3
+ || model.getWyPayType()<0
+ ||model.getWyDetailList()==null
+ ||model.getWyDetailList().size() ==0
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜椤甸潰瑕佹眰濉啓鐗╀笟鏉℃淇℃伅");
+ }
+
+ if(!(model.getWyFreeEndDate()==null && model.getWyFreeStartDate()==null) && (
+ (model.getWyFreeEndDate()!=null && model.getWyFreeStartDate()==null)
+ ||(model.getWyFreeEndDate()==null && model.getWyFreeStartDate()!=null)
+ ||model.getWyFreeEndDate().getTime()<= model.getWyFreeStartDate().getTime())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勭墿涓氭潯娆惧厤绉熸湡淇℃伅锛�");
+ }
+ if((model.getWyFreeStartDate()!=null && model.getWyFreeEndDate()!=null)
+ && (model.getWyFreeEndDate().getTime()>model.getEndDate().getTime()
+ || model.getWyFreeStartDate().getTime()<model.getStartDate().getTime())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鍏嶇鏈熷紑濮嬫棩鏈熷拰缁撴潫鏃ユ湡闄愬埗鍦ㄥ悎鍚屾椂闂磋寖鍥村唴锛�");
+ }
+ for(YwContractDetail d :model.getWyDetailList()){
+ if( d.getStartDate() == null
+ ||d.getEndDate() == null
+ ||d.getPrice() == null
+ ||d.getCircleType() == null
+ || d.getCircleType()>6
+ || d.getCircleType()<0
+ ){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇锋寜椤甸潰瑕佹眰濉啓鐗╀笟鏉℃淇℃伅!");
+ }
+ if(d.getEndDate().getTime()<= d.getStartDate().getTime()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鐗╀笟鏉℃鏈夋晥鏈熺粨鏉熸椂闂翠笉寰楁棭浜庡紑濮嬫椂闂达紒");
+ }
+ if(d.getEndDate().getTime()>model.getEndDate().getTime() ||d.getStartDate().getTime()<model.getStartDate().getTime()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鏉℃寮�濮嬫棩鏈熷拰缁撴潫鏃ユ湡闄愬埗鍦ㄥ悎鍚屾椂闂磋寖鍥村唴锛�");
+ }
+ if(!Constants.equalsInteger(model.getWyPayType(),Constants.ZERO) &&
+ Constants.equalsInteger(d.getCircleType(),Constants.SIX)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝鐗╀笟鏉℃鍙湁閫夋嫨涓�娆℃�т粯娆炬椂锛屾墠鑳介�夋嫨璇ユ寜姣忓満鏀惰垂锛�");
+ }
+ if(model.getWyFirstCircle() == null){
+ //棣栨湡淇℃伅
+ model.setWyFirstPrice(d.getPrice());
+ model.setWyFirstCircle(d.getCircleType());
+ }
+ }
+ }
+
+ YwProject project = projectMapper.selectById(model.getProjectId());
+ if(project ==null || Constants.equalsInteger(project.getIsdeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勯」鐩俊鎭紒");
+ }
+ List<YwRoom> rooms = roomMapper.selectList(new QueryWrapper<YwRoom>().lambda()
+ .eq(YwRoom::getIsdeleted,Constants.ZERO)
+ .in(YwRoom::getId,model.getRoomIds())
+ .eq(YwRoom::getProjectId,model.getProjectId()) );
+ if(rooms ==null || rooms.size()==0){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨瀵瑰簲椤圭洰涓嬫纭殑鎴挎簮淇℃伅");
+ }
+ if(rooms.size() != rooms.size()){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝瀛樺湪鏃犳晥鐨勬埧婧愪俊鎭紒");
+ }
+ model.setTotalArea(new BigDecimal(0));
+ for(YwRoom r : rooms){
+ model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getArea())));
+ }
+ model.setRoomList(rooms);
+ YwCustomer customer = customerMapper.selectById(model.getRenterId());
+ if(customer ==null || Constants.equalsInteger(customer.getIsdeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝閫夋嫨绉熷淇℃伅涓嶅瓨鍦紝璇疯繑鍥炲埛鏂伴噸璇曪紒");
+ }
+ Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
+ .eq(Member::getIsdeleted,Constants.ZERO)
+ .eq(Member::getType,Constants.THREE)
+ .eq(Member::getCustomerId,model.getRenterId())
+ .eq(Member::getId,model.getMemberId())
+ .last("limit 1"));
+ if(member ==null ){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝閫夋嫨绉熷鑱旂郴浜轰俊鎭笉瀛樺湪锛岃杩斿洖鍒锋柊閲嶈瘯锛�");
+ }
+ Company company = companyMapper.selectById(model.getCompanyId());
+ if(company ==null || Constants.equalsInteger(company.getIsdeleted(),Constants.ONE)
+ || !Constants.equalsInteger(company.getType(),Constants.TWO)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勫叕鍙镐俊鎭紒");
+ }
+ SystemUser user = systemUserMapper.selectById(model.getUserId());
+ if(user ==null || (user.getDeleted()!=null && user.getDeleted()) ){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝缁忓姙浜轰俊鎭笉瀛樺湪锛岃灏濊瘯鍒锋柊椤甸潰閲嶈瘯锛�");
+ }
+
}
@Override
@@ -67,10 +1152,123 @@
this.updateById(ywContract);
}
}
-
+ private void dealLogBiz(YwContract model,Constants.YwLogType type,String param1,String param2) {
+ YwWorkorderLog log = new YwWorkorderLog();
+ log.setCreateDate(model.getEditDate());
+ log.setCreator(model.getCreator());
+ log.setJobId(model.getId());
+ log.setIsdeleted(Constants.ZERO);
+ log.setObjId(model.getId()+"");
+ log.setObjType(type.getKey());
+ log.setParam1(param1);
+ log.setParam2(param2);
+ log.setContent(param2);
+ log.setTitle(type.getNoteinfo());
+ ywWorkorderLogMapper.insert(log);
+ }
@Override
public YwContract findById(Integer id) {
- return ywContractMapper.selectById(id);
+ MPJLambdaWrapper<YwContract> queryWrapper = new MPJLambdaWrapper<>();
+ queryWrapper.selectAll(YwContract.class )
+ .selectAs(Company::getName,YwContract::getCompanyName )
+ .selectAs(SystemUser::getRealname,YwContract::getUserName )
+ .selectAs(YwCustomer::getName,YwContract::getRenterName )
+ .selectAs(YwProject::getName,YwContract::getProjectName )
+ .select("t3.realname",YwContract::getCreatorName )
+ .select("(select sum(r.area) from yw_contract_room cr left join yw_room r on r.id = cr.room_id where r.isdeleted=0 and cr.contract_id =t.id)",YwContract::getTotalArea )
+ .leftJoin(Company.class,Company::getId,YwContract::getCompanyId)
+ .leftJoin(SystemUser.class,SystemUser::getId,YwContract::getUserId)
+ .leftJoin(SystemUser.class,SystemUser::getId,YwContract::getCreator)
+ .leftJoin(YwProject.class,YwProject::getId,YwContract::getProjectId)
+ .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
+ .eq( YwContract::getId,id);
+ YwContract model = ywContractMapper.selectJoinOne(YwContract.class,queryWrapper);
+ if(model != null){
+ //鍚堝悓闄勪欢
+ initFiles(model);
+ //鏌ヨ鎴挎簮淇℃伅鏁版嵁
+ MPJLambdaWrapper<YwRoom> rw = new MPJLambdaWrapper<>();
+ rw.selectAll(YwRoom.class )
+ .selectAs(YwProject::getName,YwRoom::getProjectName)
+ .selectAs(YwFloor::getName,YwRoom::getFloorName)
+ .selectAs(YwBuilding::getName,YwRoom::getBuildingName)
+ .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId)
+ .leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId)
+ .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor)
+ .eq(YwRoom::getIsdeleted,Constants.ZERO)
+ .exists("(select a.id from yw_contract_room a where a.isdeleted=0 and a.type=0 and a.room_id=t.id and a.contract_id="+model.getId()+")");
+ model.setRoomList(roomMapper.selectJoinList(YwRoom.class,rw));
+ model.setWyFirstCircleStr(Constants.getUnitTypeByNum(model.getWyFirstCircle()));
+ model.setZlFirstCircleStr(Constants.getUnitTypeByNum(model.getZlFirstCircle()));
+ //鏌ヨ绉熻硟鏉℃淇℃伅
+ MPJLambdaWrapper<YwContractDetail> dw = new MPJLambdaWrapper<>();
+ dw.selectAll(YwContractDetail.class )
+ .eq(YwContractDetail::getIsdeleted,Constants.ZERO)
+ .eq(YwContractDetail::getContractId,model.getId())
+ .in(YwContractDetail::getType,Constants.ZERO,Constants.TWO)
+ .orderByAsc(YwContractDetail::getSortnum);
+ model.setZlDetailList(ywContractDetailMapper.selectJoinList(YwContractDetail.class,dw));
+ //鏌ヨ鐗╂キ鏉℃淇℃伅
+ dw = new MPJLambdaWrapper<>();
+ dw.selectAll(YwContractDetail.class )
+ .eq(YwContractDetail::getIsdeleted,Constants.ZERO)
+ .eq(YwContractDetail::getContractId,model.getId())
+ .in(YwContractDetail::getType,Constants.ONE,Constants.THREE)
+ .orderByAsc(YwContractDetail::getSortnum);
+ model.setWyDetailList(ywContractDetailMapper.selectJoinList(YwContractDetail.class,dw));
+
+ //鏌ヨ鎿嶄綔鏃ュ織璁板綍
+ YwWorkorderLog log = new YwWorkorderLog();
+ log.setJobId(model.getId());
+ log.setIsdeleted(Constants.ZERO);
+ model.setLogList(ywWorkorderLogMapper.selectList(new QueryWrapper<YwWorkorderLog>(log)
+ .lambda()
+ .in(YwWorkorderLog::getObjType,Constants.YwLogType.CONTRACT_BACK.getKey()
+ ,Constants.YwLogType.CONTRACT_CREATE.getKey()
+ ,Constants.YwLogType.CONTRACT_UPDATE.getKey())
+ .orderByAsc(YwWorkorderLog::getCreateDate)));
+
+ //鏌ヨ璐﹀崟闆嗗悎
+ model.setBillList(ywContractBillMapper.selectJoinList(YwContractBill.class,new MPJLambdaWrapper<YwContractBill>()
+ .selectAll(YwContractBill.class )
+ .select(" ( select ifnull(sum(case when yw.REVENUE_TYPE = 0 then yw.ACT_RECEIVABLE_FEE else -yw.ACT_RECEIVABLE_FEE end),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ")
+ .eq( YwContractBill::getContractId,model.getId())
+ .eq(YwContractBill::getIsdeleted,Constants.ZERO)
+ .orderByAsc(YwContractBill::getSortnum,YwContractBill::getCreateDate)));
+
+ for (YwContractBill ywContractBill:model.getBillList()) {
+ ywContractBill.setNeedReceivableFee(ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee()));
+ }
+
+ model.setCanBackRentBills(new ArrayList<>());
+ long nowStart = Utils.Date.getStart(new Date()).getTime();
+ long nowEnd = Utils.Date.getEnd(new Date()).getTime();
+ if(model.getBillList()!=null && model.getBillList().size()>0){
+ for(YwContractBill bill: model.getBillList()){
+ //浠樻鐘舵�侊細0=寰呮敹娆撅紱1=宸茬粨娓咃紱2=閮ㄥ垎缁撴竻锛�3=寰呬粯娆撅紱4=寰呴��娆撅紱5=宸插叧闂�
+ if(Constants.equalsInteger(bill.getPayStatus(),Constants.ZERO)
+ ||Constants.equalsInteger(bill.getPayStatus(),Constants.THREE)){
+ if(bill.getStartDate().getTime()>nowEnd){
+ //濡傛灉杩樻病寮�濮嬶紝璐﹀崟鐩存帴鍏抽棴
+ continue;
+ }
+ model.getCanBackRentBills().add(bill);
+
+ }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.ONE) ){
+ if(bill.getEndDate().getTime()<nowStart){
+ //濡傛灉宸茬粨娓咃紝璐﹀崟鐩存帴鍏抽棴
+ continue;
+ }
+ model.getCanBackRentBills().add(bill);
+ }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.TWO) ){
+ model.getCanBackRentBills().add(bill);
+ }
+ }
+ }
+
+ }
+
+ return model;
}
@Override
@@ -81,119 +1279,142 @@
@Override
public List<YwContract> findList(YwContract ywContract) {
- QueryWrapper<YwContract> wrapper = new QueryWrapper<>(ywContract);
- return ywContractMapper.selectList(wrapper);
+ return ywContractMapper.selectJoinList(YwContract.class,new MPJLambdaWrapper<YwContract>().selectAll(YwContract.class )
+ .selectAs(Company::getName,YwContract::getCompanyName )
+ .selectAs(SystemUser::getRealname,YwContract::getUserName )
+ .selectAs(YwCustomer::getName,YwContract::getRenterName )
+ .selectAs(YwProject::getName,YwContract::getProjectName )
+ .leftJoin(Company.class,Company::getId,YwContract::getCompanyId)
+ .leftJoin(SystemUser.class,SystemUser::getId,YwContract::getUserId)
+ .leftJoin(SystemUser.class,SystemUser::getId,YwContract::getCreator)
+ .leftJoin(YwProject.class,YwProject::getId,YwContract::getProjectId)
+ .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
+ .eq(YwContract::getIsdeleted,Constants.ZERO)
+ .in(YwContract::getStatus,Constants.ZERO,Constants.ONE,Constants.TWO));
}
@Override
public PageData<YwContract> findPage(PageWrap<YwContract> pageWrap) {
IPage<YwContract> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
- QueryWrapper<YwContract> queryWrapper = new QueryWrapper<>();
+ MPJLambdaWrapper<YwContract> queryWrapper = new MPJLambdaWrapper<>();
+ queryWrapper.selectAll(YwContract.class )
+ .selectAs(Company::getName,YwContract::getCompanyName )
+ .selectAs(YwCustomer::getName,YwContract::getRenterName )
+ .select("(select sum(r.area) from yw_contract_room cr left join yw_room r on r.id = cr.room_id where r.isdeleted=0 and cr.contract_id =t.id)",YwContract::getTotalArea )
+ .leftJoin(Company.class,Company::getId,YwContract::getCompanyId)
+ .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId);
Utils.MP.blankToNull(pageWrap.getModel());
if (pageWrap.getModel().getId() != null) {
- queryWrapper.lambda().eq(YwContract::getId, pageWrap.getModel().getId());
+ queryWrapper.eq(YwContract::getId, pageWrap.getModel().getId());
}
if (pageWrap.getModel().getCreator() != null) {
- queryWrapper.lambda().eq(YwContract::getCreator, pageWrap.getModel().getCreator());
+ queryWrapper.eq(YwContract::getCreator, pageWrap.getModel().getCreator());
}
if (pageWrap.getModel().getCreateDate() != null) {
- queryWrapper.lambda().ge(YwContract::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
- queryWrapper.lambda().le(YwContract::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
+ queryWrapper.ge(YwContract::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
+ queryWrapper.le(YwContract::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
}
if (pageWrap.getModel().getEditor() != null) {
- queryWrapper.lambda().eq(YwContract::getEditor, pageWrap.getModel().getEditor());
+ queryWrapper.eq(YwContract::getEditor, pageWrap.getModel().getEditor());
}
if (pageWrap.getModel().getEditDate() != null) {
- queryWrapper.lambda().ge(YwContract::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
- queryWrapper.lambda().le(YwContract::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
+ queryWrapper.ge(YwContract::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
+ queryWrapper.le(YwContract::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
}
if (pageWrap.getModel().getIsdeleted() != null) {
- queryWrapper.lambda().eq(YwContract::getIsdeleted, pageWrap.getModel().getIsdeleted());
+ queryWrapper.eq(YwContract::getIsdeleted, pageWrap.getModel().getIsdeleted());
}
if (pageWrap.getModel().getRemark() != null) {
- queryWrapper.lambda().eq(YwContract::getRemark, pageWrap.getModel().getRemark());
+ queryWrapper.eq(YwContract::getRemark, pageWrap.getModel().getRemark());
}
if (pageWrap.getModel().getStatus() != null) {
- queryWrapper.lambda().eq(YwContract::getStatus, pageWrap.getModel().getStatus());
+ queryWrapper.eq(YwContract::getStatus, pageWrap.getModel().getStatus());
}
if (pageWrap.getModel().getType() != null) {
- queryWrapper.lambda().eq(YwContract::getType, pageWrap.getModel().getType());
+ queryWrapper.eq(YwContract::getType, pageWrap.getModel().getType());
}
if (pageWrap.getModel().getCode() != null) {
- queryWrapper.lambda().eq(YwContract::getCode, pageWrap.getModel().getCode());
+ queryWrapper.eq(YwContract::getCode, pageWrap.getModel().getCode());
}
if (pageWrap.getModel().getUserId() != null) {
- queryWrapper.lambda().eq(YwContract::getUserId, pageWrap.getModel().getUserId());
+ queryWrapper.eq(YwContract::getUserId, pageWrap.getModel().getUserId());
}
if (pageWrap.getModel().getSignDate() != null) {
- queryWrapper.lambda().ge(YwContract::getSignDate, Utils.Date.getStart(pageWrap.getModel().getSignDate()));
- queryWrapper.lambda().le(YwContract::getSignDate, Utils.Date.getEnd(pageWrap.getModel().getSignDate()));
+ queryWrapper.ge(YwContract::getSignDate, Utils.Date.getStart(pageWrap.getModel().getSignDate()));
+ queryWrapper.le(YwContract::getSignDate, Utils.Date.getEnd(pageWrap.getModel().getSignDate()));
}
if (pageWrap.getModel().getStartDate() != null) {
- queryWrapper.lambda().ge(YwContract::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()));
- queryWrapper.lambda().le(YwContract::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getStartDate()));
+ queryWrapper.ge(YwContract::getStartDate, Utils.Date.getStart(pageWrap.getModel().getStartDate()));
+ queryWrapper.le(YwContract::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getStartDate()));
}
if (pageWrap.getModel().getEndDate() != null) {
- queryWrapper.lambda().ge(YwContract::getEndDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()));
- queryWrapper.lambda().le(YwContract::getEndDate, Utils.Date.getEnd(pageWrap.getModel().getEndDate()));
+ queryWrapper.ge(YwContract::getEndDate, Utils.Date.getStart(pageWrap.getModel().getEndDate()));
+ queryWrapper.le(YwContract::getEndDate, Utils.Date.getEnd(pageWrap.getModel().getEndDate()));
}
if (pageWrap.getModel().getProjectId() != null) {
- queryWrapper.lambda().eq(YwContract::getProjectId, pageWrap.getModel().getProjectId());
+ queryWrapper.eq(YwContract::getProjectId, pageWrap.getModel().getProjectId());
}
if (pageWrap.getModel().getRoundedUp() != null) {
- queryWrapper.lambda().eq(YwContract::getRoundedUp, pageWrap.getModel().getRoundedUp());
+ queryWrapper.eq(YwContract::getRoundedUp, pageWrap.getModel().getRoundedUp());
}
if (pageWrap.getModel().getCompanyId() != null) {
- queryWrapper.lambda().eq(YwContract::getCompanyId, pageWrap.getModel().getCompanyId());
+ queryWrapper.eq(YwContract::getCompanyId, pageWrap.getModel().getCompanyId());
}
+
if (pageWrap.getModel().getRenterId() != null) {
- queryWrapper.lambda().eq(YwContract::getRenterId, pageWrap.getModel().getRenterId());
+ queryWrapper.eq(YwContract::getRenterId, pageWrap.getModel().getRenterId());
}
if (pageWrap.getModel().getMemberId() != null) {
- queryWrapper.lambda().eq(YwContract::getMemberId, pageWrap.getModel().getMemberId());
+ queryWrapper.eq(YwContract::getMemberId, pageWrap.getModel().getMemberId());
}
if (pageWrap.getModel().getZlDeposit() != null) {
- queryWrapper.lambda().eq(YwContract::getZlDeposit, pageWrap.getModel().getZlDeposit());
+ queryWrapper.eq(YwContract::getZlDeposit, pageWrap.getModel().getZlDeposit());
}
if (pageWrap.getModel().getZlPayType() != null) {
- queryWrapper.lambda().eq(YwContract::getZlPayType, pageWrap.getModel().getZlPayType());
+ queryWrapper.eq(YwContract::getZlPayType, pageWrap.getModel().getZlPayType());
}
if (pageWrap.getModel().getZlFreeStartDate() != null) {
- queryWrapper.lambda().ge(YwContract::getZlFreeStartDate, Utils.Date.getStart(pageWrap.getModel().getZlFreeStartDate()));
- queryWrapper.lambda().le(YwContract::getZlFreeStartDate, Utils.Date.getEnd(pageWrap.getModel().getZlFreeStartDate()));
+ queryWrapper.ge(YwContract::getZlFreeStartDate, Utils.Date.getStart(pageWrap.getModel().getZlFreeStartDate()));
+ queryWrapper.le(YwContract::getZlFreeStartDate, Utils.Date.getEnd(pageWrap.getModel().getZlFreeStartDate()));
}
if (pageWrap.getModel().getZlFreeEndDate() != null) {
- queryWrapper.lambda().ge(YwContract::getZlFreeEndDate, Utils.Date.getStart(pageWrap.getModel().getZlFreeEndDate()));
- queryWrapper.lambda().le(YwContract::getZlFreeEndDate, Utils.Date.getEnd(pageWrap.getModel().getZlFreeEndDate()));
+ queryWrapper.ge(YwContract::getZlFreeEndDate, Utils.Date.getStart(pageWrap.getModel().getZlFreeEndDate()));
+ queryWrapper.le(YwContract::getZlFreeEndDate, Utils.Date.getEnd(pageWrap.getModel().getZlFreeEndDate()));
}
if (pageWrap.getModel().getWyDeposit() != null) {
- queryWrapper.lambda().eq(YwContract::getWyDeposit, pageWrap.getModel().getWyDeposit());
+ queryWrapper.eq(YwContract::getWyDeposit, pageWrap.getModel().getWyDeposit());
}
if (pageWrap.getModel().getWyPayType() != null) {
- queryWrapper.lambda().eq(YwContract::getWyPayType, pageWrap.getModel().getWyPayType());
+ queryWrapper.eq(YwContract::getWyPayType, pageWrap.getModel().getWyPayType());
}
if (pageWrap.getModel().getWyFreeStartDate() != null) {
- queryWrapper.lambda().ge(YwContract::getWyFreeStartDate, Utils.Date.getStart(pageWrap.getModel().getWyFreeStartDate()));
- queryWrapper.lambda().le(YwContract::getWyFreeStartDate, Utils.Date.getEnd(pageWrap.getModel().getWyFreeStartDate()));
+ queryWrapper.ge(YwContract::getWyFreeStartDate, Utils.Date.getStart(pageWrap.getModel().getWyFreeStartDate()));
+ queryWrapper.le(YwContract::getWyFreeStartDate, Utils.Date.getEnd(pageWrap.getModel().getWyFreeStartDate()));
}
if (pageWrap.getModel().getWyFreeEndDate() != null) {
- queryWrapper.lambda().ge(YwContract::getWyFreeEndDate, Utils.Date.getStart(pageWrap.getModel().getWyFreeEndDate()));
- queryWrapper.lambda().le(YwContract::getWyFreeEndDate, Utils.Date.getEnd(pageWrap.getModel().getWyFreeEndDate()));
+ queryWrapper.ge(YwContract::getWyFreeEndDate, Utils.Date.getStart(pageWrap.getModel().getWyFreeEndDate()));
+ queryWrapper.le(YwContract::getWyFreeEndDate, Utils.Date.getEnd(pageWrap.getModel().getWyFreeEndDate()));
}
if (pageWrap.getModel().getZlTotalFee() != null) {
- queryWrapper.lambda().eq(YwContract::getZlTotalFee, pageWrap.getModel().getZlTotalFee());
+ queryWrapper.eq(YwContract::getZlTotalFee, pageWrap.getModel().getZlTotalFee());
}
if (pageWrap.getModel().getWyTotalFee() != null) {
- queryWrapper.lambda().eq(YwContract::getWyTotalFee, pageWrap.getModel().getWyTotalFee());
+ queryWrapper.eq(YwContract::getWyTotalFee, pageWrap.getModel().getWyTotalFee());
}
- for(PageWrap.SortData sortData: pageWrap.getSorts()) {
- if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
- queryWrapper.orderByDesc(sortData.getProperty());
- } else {
- queryWrapper.orderByAsc(sortData.getProperty());
+ if (pageWrap.getModel().getCompanyName() != null) {
+ queryWrapper.like(Company::getName, pageWrap.getModel().getCompanyName());
+ }
+ queryWrapper.ge(Objects.nonNull(pageWrap.getModel().getQueryStartTime()), YwContract::getStartDate, pageWrap.getModel().getQueryStartTime())
+ .le(Objects.nonNull(pageWrap.getModel().getQueryEndTime()), YwContract::getEndDate, pageWrap.getModel().getQueryEndTime());
+ queryWrapper.orderByDesc(YwContract::getCreateDate );
+ PageData<YwContract> data = PageData.from(ywContractMapper.selectJoinPage(page, YwContract.class,queryWrapper));
+ if(data!=null && data.getRecords()!=null){
+ for(YwContract model : data.getRecords()){
+ model.setWyFirstCircleStr(Constants.getUnitTypeByNum(model.getWyFirstCircle()));
+ model.setZlFirstCircleStr(Constants.getUnitTypeByNum(model.getZlFirstCircle()));
}
}
- return PageData.from(ywContractMapper.selectPage(page, queryWrapper));
+ return data;
}
@Override
--
Gitblit v1.9.3