From aefd11c7a68c88d3dff9e105d3bee72e7f8d9f07 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期六, 23 十一月 2024 17:06:27 +0800 Subject: [PATCH] 开发更新 --- server/system_service/src/main/java/com/doumee/core/utils/Constants.java | 9 server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java | 117 ++++++++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContract.java | 40 ++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java | 17 server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java | 12 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractServiceImpl.java | 611 +++++++++++++++++++++++++++++++++++++++---- server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractDetail.java | 3 7 files changed, 730 insertions(+), 79 deletions(-) diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java index 43c1651..555a93a 100644 --- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java +++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java @@ -33,6 +33,7 @@ public static final String HK_TOKEN_VALIDITY = "HK_TOKEN_VALIDITY"; public static final String[] ALL_SPELL_LIST_FIRST = new String[]{"A", "B", "C", "D", "E", "F", "G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}; public static final int ZERO = 0 ; + public static final int SIX = 6 ; public static final int ONE = 1 ; public static final int TWO = 2 ; public static final String HK_PARAM ="HK_PARAM" ; @@ -479,6 +480,14 @@ d = d.setScale(4, BigDecimal.ROUND_HALF_UP); return d; } + public static BigDecimal formatBigdecimal0Float(BigDecimal d) { + if (d == null) { + d = new BigDecimal(0.0); + } + //淇濈暀涓や綅灏忔暟涓斿洓鑸嶄簲鍏� + d = d.setScale(0, BigDecimal.ROUND_HALF_UP); + return d; + } public static BigDecimal formatBigdecimal2Float(BigDecimal d) { if (d == null) { d = new BigDecimal(0.0); diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java b/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java new file mode 100644 index 0000000..1335d95 --- /dev/null +++ b/server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java @@ -0,0 +1,117 @@ +package com.doumee.core.utils; + + +import lombok.Builder; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.DateFormatSymbols; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.*; +import java.time.temporal.ChronoUnit; +import java.time.temporal.TemporalAdjusters; +import java.util.Date; +import java.util.*; + +/** + * 鏃ユ湡宸ュ叿绫� + * @author: jiangping + * @date: 2021骞�7鏈�21鏃�09:27:13 + */ +@Builder +@Data +public class DateCompare { + private int year; + private int month; + private int day; + private BigDecimal yearFloat; + private BigDecimal monthFloat; + private int yearDays ; + private int monthDays ; + /** + * 璁$畻2涓棩鏈熶箣闂寸浉宸殑 浠ュ勾銆佹湀銆佹棩涓哄崟浣嶏紝鍚勮嚜璁$畻缁撴灉鏄灏� + * 姣斿锛�2011-02-02 鍒� 2017-03-02 + * 浠ュ勾涓哄崟浣嶇浉宸负锛�6骞� + * 浠ユ湀涓哄崟浣嶇浉宸负锛�73涓湀 + * 浠ユ棩涓哄崟浣嶇浉宸负锛�2220澶� + * @param fromDate + * @param toDate + * @return + */ + public static DateCompare dayCompare(Date fromDate,Date toDate,Date freeStart,Date freeEnd){ + //寮�濮嬫椂闂村線鍚庡欢浼革紝闄ゅ幓鏈夋晥鏃舵湡 + fromDate = DateUtil.addDaysToDate(fromDate,getIntersectingDays(fromDate,toDate,freeStart,freeEnd)); + if(toDate.getTime()<= fromDate.getTime()){ + return DateCompare.builder().day(0).month(0).year(0).yearFloat(new BigDecimal(0)).monthFloat(new BigDecimal(0)).build(); + } + Calendar from = Calendar.getInstance(); + from.setTime(fromDate); + Calendar to = Calendar.getInstance(); + to.setTime(toDate); + //鍙骞存湀 + int fromYear = from.get(Calendar.YEAR); + int fromMonth = from.get(Calendar.MONTH); + + int toYear = to.get(Calendar.YEAR); + int toMonth = to.get(Calendar.MONTH); + + int year = toYear - fromYear; + int month = toYear * 12 + toMonth - (fromYear * 12 + fromMonth); + int day = (int) ((to.getTimeInMillis() - from.getTimeInMillis()) / (24 * 3600 * 1000)); + BigDecimal yearFloat = new BigDecimal(year) ; + BigDecimal monthFloat = new BigDecimal(month) ; + + int yearDays = day - DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate) ; + if(yearDays>0){ + yearFloat = yearFloat.add(new BigDecimal(yearDays).divide(new BigDecimal(365), 2,RoundingMode.FLOOR)); + } + int monthDays = day - DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate) ; + if(monthDays>0){ + monthFloat = monthFloat.add(new BigDecimal(monthDays).divide(new BigDecimal(30), 2,RoundingMode.FLOOR)); + } + return DateCompare.builder().day(day).month(month).year(year).yearFloat(yearFloat).monthFloat(monthFloat).yearDays(yearDays).monthDays(monthDays).build(); + } + public static DateCompare monthYearCompare(Date fromDate,Date toDate ){ + //寮�濮嬫椂闂村線鍚庡欢浼革紝闄ゅ幓鏈夋晥鏃舵湡 + Calendar from = Calendar.getInstance(); + from.setTime(fromDate); + Calendar to = Calendar.getInstance(); + to.setTime(toDate); + //鍙骞存湀 + int fromYear = from.get(Calendar.YEAR); + int fromMonth = from.get(Calendar.MONTH); + + int toYear = to.get(Calendar.YEAR); + int toMonth = to.get(Calendar.MONTH); + + int year = toYear - fromYear; + int month = toYear * 12 + toMonth - (fromYear * 12 + fromMonth); + int day = (int) ((to.getTimeInMillis() - from.getTimeInMillis()) / (24 * 3600 * 1000)); + BigDecimal yearFloat = new BigDecimal(year) ; + BigDecimal monthFloat = new BigDecimal(month) ; + + int yearDays = day - DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate) ; + if(yearDays>0){ + yearFloat = yearFloat.add(new BigDecimal(yearDays).divide(new BigDecimal(365), 2,RoundingMode.FLOOR)); + } + int monthDays = day - DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate) ; + if(monthDays>0){ + monthFloat = monthFloat.add(new BigDecimal(monthDays).divide(new BigDecimal(30), 2,RoundingMode.FLOOR)); + } + return DateCompare.builder().day(day).month(month).year(year).yearFloat(yearFloat).monthFloat(monthFloat).yearDays(yearDays).monthDays(monthDays).build(); + } + + public static int getIntersectingDays(Date start1, Date end1, Date start2, Date end2) { + Date earlierStart = DateUtil.daysBetweenDates(start1,start2)>0? start1 : start2; + Date laterEnd = DateUtil.daysBetweenDates(end2,end1)>0 ? end1 : end2; + + int days =DateUtil.daysBetweenDates(laterEnd,earlierStart ); + return days>0?days:0 ; + } + +} \ No newline at end of file diff --git a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java index be6a72a..3e39c9f 100644 --- a/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java +++ b/server/system_service/src/main/java/com/doumee/core/utils/DateUtil.java @@ -3055,6 +3055,18 @@ calendar.add(Calendar.DATE, days);// return calendar.getTime(); } + public static Date addYearToDate(Date date, int yeas) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.YEAR, yeas);// + return calendar.getTime(); + } + public static Date addMonthToDate(Date date, int num) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + calendar.add(Calendar.MONTH, num);// + return calendar.getTime(); + } public static String afterDateToStr(Integer days){ Date date = new Date(); diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContract.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContract.java index a2faed2..bc6981a 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContract.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContract.java @@ -36,7 +36,6 @@ @ApiModelProperty(value = "鍒涘缓鏃堕棿") @ExcelColumn(name="鍒涘缓鏃堕棿") - @JsonFormat(pattern = "yyyy-MM-dd") private Date createDate; @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1") @@ -45,7 +44,6 @@ @ApiModelProperty(value = "鏇存柊鏃堕棿") @ExcelColumn(name="鏇存柊鏃堕棿") - @JsonFormat(pattern = "yyyy-MM-dd") private Date editDate; @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1") @@ -56,8 +54,8 @@ @ExcelColumn(name="澶囨敞") private String remark; - @ApiModelProperty(value = "鐘舵�� 0姝e父 1鎹熷潖 2鎶ュ簾", example = "1") - @ExcelColumn(name="鐘舵�� 0姝e父 1鎹熷潖 2鎶ュ簾") + @ApiModelProperty(value = "鐘舵�� 0寰呮墽琛� 1鎵ц涓� 2宸插埌鏈� 3宸查��绉�", example = "1") + @ExcelColumn(name="鐘舵�� 0寰呮墽琛� 1鎵ц涓� 2宸插埌鏈� 3宸查��绉�") private Integer status; @ApiModelProperty(value = "绫诲瀷 0鐗╀笟绉熻祦 1鐗╀笟 2绉熻祦", example = "1") @@ -66,7 +64,7 @@ @ApiModelProperty(value = "缂栧彿", example = "1") @ExcelColumn(name="缂栧彿") - private Integer code; + private String code; @ApiModelProperty(value = "缁忓姙浜虹紪鐮�(鍏宠仈system_user)", example = "1") @ExcelColumn(name="缁忓姙浜虹紪鐮�(鍏宠仈system_user)") @@ -74,17 +72,14 @@ @ApiModelProperty(value = "绛捐鏃ユ湡") @ExcelColumn(name="绛捐鏃ユ湡") - @JsonFormat(pattern = "yyyy-MM-dd") private Date signDate; @ApiModelProperty(value = "寮�濮嬫棩鏈�") @ExcelColumn(name="寮�濮嬫棩鏈�") - @JsonFormat(pattern = "yyyy-MM-dd") private Date startDate; @ApiModelProperty(value = "缁撴潫鏃ユ湡") @ExcelColumn(name="缁撴潫鏃ユ湡") - @JsonFormat(pattern = "yyyy-MM-dd") private Date endDate; @ApiModelProperty(value = "椤圭洰缂栫爜锛堝叧鑱攜w_project)", example = "1") @@ -117,12 +112,10 @@ @ApiModelProperty(value = "绉熻祦鍏嶇鏈熷紑濮嬫棩鏈�") @ExcelColumn(name="绉熻祦鍏嶇鏈熷紑濮嬫棩鏈�") - @JsonFormat(pattern = "yyyy-MM-dd") private Date zlFreeStartDate; @ApiModelProperty(value = "绉熻祦鍏嶇鏈熺粨鏉熸棩鏈�") @ExcelColumn(name="绉熻祦鍏嶇鏈熺粨鏉熸棩鏈�") - @JsonFormat(pattern = "yyyy-MM-dd") private Date zlFreeEndDate; @ApiModelProperty(value = "鐗╀笟鎶奸噾锛堝厓锛�", example = "1") @@ -135,17 +128,16 @@ @ApiModelProperty(value = "鐗╀笟鍏嶇鏈熷紑濮嬫棩鏈�") @ExcelColumn(name="鐗╀笟鍏嶇鏈熷紑濮嬫棩鏈�") - @JsonFormat(pattern = "yyyy-MM-dd") private Date wyFreeStartDate; @ApiModelProperty(value = "鐗╀笟鍏嶇鏈熺粨鏉熸棩鏈�") @ExcelColumn(name="鐗╀笟鍏嶇鏈熺粨鏉熸棩鏈�") - @JsonFormat(pattern = "yyyy-MM-dd") private Date wyFreeEndDate; @ApiModelProperty(value = "绉熻祦鎬婚噾棰�", example = "1") @ExcelColumn(name="绉熻祦鎬婚噾棰�") private BigDecimal zlTotalFee; + @ApiModelProperty(value = "鐗╀笟璐规�婚噾棰�", example = "1") @ExcelColumn(name="鐗╀笟璐规�婚噾棰�") @@ -154,5 +146,29 @@ @ApiModelProperty(value = "闄勪欢闆嗗悎") @TableField(exist = false) private List<Multifile> fileList; + @ApiModelProperty(value = "鎴挎簮缂栫爜闆嗗悎") + @TableField(exist = false) + private List<Integer> roomIds; + @ApiModelProperty(value = "绉熻祦鏉℃闆嗗悎") + @TableField(exist = false) + private List<YwContractDetail> zlDetailList; + @ApiModelProperty(value = "鎴挎簮瀵硅薄闆嗗悎") + @TableField(exist = false) + private List<YwRoom> roomList; + @ApiModelProperty(value = "鍏徃鍚嶇О") + @TableField(exist = false) + private String companyName; + @ApiModelProperty(value = "绉熻祦鎬婚潰绉�", example = "1") + @TableField(exist = false) + private BigDecimal totalArea; + @ApiModelProperty(value = "鐗╀笟鏉℃闆嗗悎") + @TableField(exist = false) + private List<YwContractDetail> wyDetailList; + @ApiModelProperty(value = "閲嶆柊寮�濮嬫椂闂�") + @TableField(exist = false) + private Date queryStartTime; + @ApiModelProperty(value = "鏌ヨ缁撴潫鏃堕棿") + @TableField(exist = false) + private Date queryEndTime; } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java index 212580b..017e3be 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java @@ -33,7 +33,6 @@ @ApiModelProperty(value = "鍒涘缓鏃堕棿") @ExcelColumn(name="鍒涘缓鏃堕棿") - @JsonFormat(pattern = "yyyy-MM-dd") private Date createDate; @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1") @@ -42,7 +41,6 @@ @ApiModelProperty(value = "鏇存柊鏃堕棿") @ExcelColumn(name="鏇存柊鏃堕棿") - @JsonFormat(pattern = "yyyy-MM-dd") private Date editDate; @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1") @@ -52,19 +50,28 @@ @ApiModelProperty(value = "澶囨敞") @ExcelColumn(name="澶囨敞") private String remark; - + @ApiModelProperty(value = "璐﹀崟鍚嶇О") + @ExcelColumn(name="璐﹀崟鍚嶇О") + private String title; + @ApiModelProperty(value = "绫诲瀷 0绉熻祦鏉℃ 1鐗╀笟鏉℃ 2绉熻祦鎶奸噾 3鐗╀笟鎶奸噾", example = "1") + @ExcelColumn(name="绫诲瀷 0绉熻祦鏉℃ 1鐗╀笟鏉℃ 2绉熻祦鎶奸噾 3鐗╀笟鎶奸噾") + private Integer type; @ApiModelProperty(value = "鐘舵�� 0鏈紑濮嬶紱1杩涜涓紱2宸插畬鎴愶紱", example = "1") @ExcelColumn(name="鐘舵�� 0鏈紑濮嬶紱1杩涜涓紱2宸插畬鎴愶紱") private Integer status; @ApiModelProperty(value = "寮�濮嬫椂闂�") @ExcelColumn(name="寮�濮嬫椂闂�") - @JsonFormat(pattern = "yyyy-MM-dd") private Date startDate; + @ApiModelProperty(value = "瀹為檯浠樻鏃�") + @ExcelColumn(name="瀹為檯浠樻鏃�") + private Date actPayDate; + @ApiModelProperty(value = "璁″垝浠樻鏃�") + @ExcelColumn(name="璁″垝浠樻鏃�") + private Date planPayDate; @ApiModelProperty(value = "缁撴潫鏃堕棿") @ExcelColumn(name="缁撴潫鏃堕棿") - @JsonFormat(pattern = "yyyy-MM-dd") private Date endDate; @ApiModelProperty(value = "鍚堝悓鏉℃缂栫爜锛堝叧鑱攜w_contract_detail)", example = "1") diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractDetail.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractDetail.java index 57b6b6c..1b265aa 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractDetail.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractDetail.java @@ -86,6 +86,9 @@ @ApiModelProperty(value = "鎺掑簭鐮�", example = "1") @ExcelColumn(name="鎺掑簭鐮�") private Integer sortnum; + @ApiModelProperty(value = "绫诲瀷 0绉熻祦鏉℃ 1鐗╀笟鏉℃", example = "1") + @ExcelColumn(name="绫诲瀷 0绉熻祦鏉℃ 1鐗╀笟鏉℃") + private Integer type; @ApiModelProperty(value = "鎬婚噾棰�", example = "1") @ExcelColumn(name="鎬婚噾棰�") 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 40bd2b7..15da9a9 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 @@ -6,27 +6,32 @@ 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.YwCustomerMapper; -import com.doumee.dao.business.YwProjectMapper; -import com.doumee.dao.business.YwRoomMapper; +import com.doumee.dao.business.*; import com.doumee.dao.business.dao.CompanyMapper; -import com.doumee.dao.business.model.Company; -import com.doumee.dao.business.model.YwContract; +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.Date; -import java.util.List; +import java.math.BigDecimal; +import java.time.temporal.ChronoUnit; +import java.util.*; /** * 杩愮淮鍚堝悓淇℃伅琛⊿ervice瀹炵幇 @@ -39,6 +44,12 @@ @Autowired private YwContractMapper ywContractMapper; @Autowired + private YwContractDetailMapper ywContractDetailMapper; + @Autowired + private YwContractBillMapper ywContractBillMapper; + @Autowired + private MultifileMapper multifileMapper; + @Autowired private CompanyMapper companyMapper; @Autowired private YwProjectMapper projectMapper; @@ -48,6 +59,8 @@ private SystemUserMapper systemUserMapper; @Autowired private YwCustomerMapper customerMapper; + @Autowired + private MemberMapper memberMapper; @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) @@ -60,20 +73,490 @@ model.setStatus(Constants.ZERO); model.setEditDate(model.getCreateDate()); model.setEditor(model.getCreator()); - + model.setStatus(Constants.ZERO);//寰呮墽琛� ywContractMapper.insert(model); - + dealDetailListBiz(model);//澶勭悊鏉℃淇℃伅 + dealMultifileBiz(model);//澶勭悊闄勪欢淇℃伅 return model.getId(); } - private void isParamValidCreated(YwContract model) { - if(model.getCompanyId()==null){ - throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勫叕鍙镐俊鎭�"); + private void dealDetailListBiz(YwContract model) { + List<YwContractDetail> details = new ArrayList<>(); + int num = 0; + if(Constants.equalsInteger(model.getType(),Constants.ZERO ) + || Constants.equalsInteger(model.getType(),Constants.ONE)){ + 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); + details.add(d); + } } - Company ywProject = companyMapper.selectById(model.getCompanyId()); - if(ywProject ==null || Constants.equalsInteger(ywProject.getIsdeleted(),Constants.ONE) - || !Constants.equalsInteger(ywProject.getType(),Constants.TWO)){ + num = 0; + if(Constants.equalsInteger(model.getType(),Constants.ZERO ) + || Constants.equalsInteger(model.getType(),Constants.TWO)){ + 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); + details.add(d); + } + } + ywContractDetailMapper.insert(details);//鎵归噺鎻掑叆鏉℃淇℃伅淇℃伅 + //澶勭悊璐﹀崟淇℃伅 + dealBillListBiz(model,details); + } + + /** + * 鏀粯鏂瑰紡 0=涓�娆℃�т粯娆撅紱1=姣忎笁涓湀涓�浠橈紱2=鍏釜鏈堜竴浠橈紱3=涓�骞翠竴浠� + * @param model + * @param details + */ + private void dealBillListBiz(YwContract model, List<YwContractDetail> details) { + List<YwContractBill> billList = new ArrayList<>(); + if(Constants.equalsInteger(model.getType(),Constants.ZERO ) + || Constants.equalsInteger(model.getType(),Constants.ONE)){ + //濡傛灉鏈夌璧佹潯娆� + if(Constants.formatBigdecimal(model.getZlDeposit()).compareTo(new BigDecimal(0))>0){ + //濡傛灉鏈夌璧佹娂閲� + billList.add(initDepoistBill(Constants.THREE,model)); + } + if(Constants.equalsInteger(model.getZlPayType(), Constants.ZERO)){ + //濡傛灉鏄竴娆℃�т粯娓� + billList.addAll(getBillsByParamOnce(model,details,model.getZlFreeStartDate(),model.getZlFreeEndDate())); + }else if(Constants.equalsInteger(model.getZlPayType(), Constants.ONE)){ + //濡傛灉姣忎笁涓湀涓�浠� + billList.addAll(getBillsByParam3Months(model,details,model.getZlFreeStartDate(),model.getZlFreeEndDate())); + }else if(Constants.equalsInteger(model.getZlPayType(), Constants.TWO)){ + //濡傛灉鍏釜鏈堜竴浠� + billList.addAll(getBillsByParam6Months(model,details,model.getZlFreeStartDate(),model.getZlFreeEndDate())); + }else if(Constants.equalsInteger(model.getZlPayType(), Constants.THREE)){ + //濡傛灉涓�骞翠竴浠� + billList.addAll(getBillsByParam1Year(model,details,model.getZlFreeStartDate(),model.getZlFreeEndDate())); + } + } + if(Constants.equalsInteger(model.getType(),Constants.ZERO ) + || Constants.equalsInteger(model.getType(),Constants.TWO)){ + //濡傛灉鐗╀笟鏉℃ + if(Constants.formatBigdecimal(model.getWyDeposit()).compareTo(new BigDecimal(0))>0){ + //濡傛灉鏈夌璧佹娂閲� + billList.add(initDepoistBill(Constants.FOUR,model)); + } + if(Constants.equalsInteger(model.getWyPayType(), Constants.ZERO)){ + //濡傛灉鏄竴娆℃�т粯娓� + billList.addAll(getBillsByParamOnce(model,details,model.getWyFreeStartDate(),model.getWyFreeEndDate())); + }else if(Constants.equalsInteger(model.getWyPayType(), Constants.ONE)){ + //濡傛灉姣忎笁涓湀涓�浠� + billList.addAll(getBillsByParam3Months(model,details,model.getWyFreeStartDate(),model.getWyFreeEndDate())); + }else if(Constants.equalsInteger(model.getWyPayType(), Constants.TWO)){ + //濡傛灉鍏釜鏈堜竴浠� + billList.addAll(getBillsByParam6Months(model,details,model.getWyFreeStartDate(),model.getWyFreeEndDate())); + }else if(Constants.equalsInteger(model.getWyPayType(), Constants.THREE)){ + //濡傛灉涓�骞翠竴浠� + billList.addAll(getBillsByParam1Year(model,details,model.getWyFreeStartDate(),model.getWyFreeEndDate())); + } + } + for(int i=0;i<billList.size();i++){ + billList.get(i).setSortnum(i+1); + } + ywContractBillMapper.insert(billList); + + } + + 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(type); + bill.setTotleFee(type==Constants.THREE?model.getZlDeposit():model.getWyDeposit());//鎶奸噾璐圭敤 + bill.setSortnum(0); + bill.setTitle(type==Constants.THREE?"绉熻祦鎶奸噾":"鐗╀笟鎶奸噾" ); + 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();//涓嶆弧涓�涓湀鐨勫ぉ鏁� + Date date = new Date(); + List<Date> list = new ArrayList<>(); + for (int i = 0; i < monthSix; i++) { + list.add(DateUtil.addMonthToDate(date,i*6)); + } + if(restMonth>0 || monthDays>0){ + list.add(DateUtil.addDaysToDate(date,monthSix)); + } + 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();//涓嶆弧涓�涓湀鐨勫ぉ鏁� + Date date = new Date(); + List<Date> list = new ArrayList<>(); + for (int i = 0; i < monthThree; i++) { + list.add(DateUtil.addMonthToDate(date,i*3)); + } + if(restMonth>0 || monthDays>0){ + list.add(DateUtil.addDaysToDate(date,monthThree)); + } + 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 ) { + for(Date start : dateList){ + Date end = DateUtil.addDaysToDate(DateUtil.addYearToDate(start,1),-1);//缁撴潫鏃ユ湡涓轰笅涓�涓懆鏈熺殑鍓嶄竴澶� + if(end.getTime()> d.getEndDate().getTime() ){ + end = d.getEndDate(); + } + YwContractBill bill = initCreateBillModel(model,d ); + bill.setStartDate(start);//璐﹀崟寮�濮� + bill.setEndDate(end);//璐﹀崟缁撴潫 + bill.setPlanPayDate(DateUtil.addDaysToDate(d.getStartDate(),Constants.formatIntegerNum(d.getAdvanceDays()) * -1)); + BigDecimal totalFee =getTotalFeeByStartEnd(model,d,freeStart,freeEnd); + bill.setTotleFee(totalFee); + + list.add(bill); + } + } + + + + private BigDecimal getTotalFeeByStartEnd(YwContract model, YwContractDetail d,Date freeStart,Date freeEnd) { + BigDecimal totalFee = new BigDecimal(0); + DateCompare dateCompare = DateCompare.dayCompare(d.getStartDate(),d.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(); + Date date = new Date(); + List<Date> list = new ArrayList<>(); + for (int i = 0; i < years; i++) { + list.add(DateUtil.addYearToDate(date,i)); + } + if(yeardays>0){ + list.add(DateUtil.addYearToDate(date,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(d.getStartDate(),Constants.formatIntegerNum(d.getAdvanceDays()) * -1)); + bill.setTotleFee(getTotalFeeByStartEnd(model,d,freeStart,freeEnd)); + 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.setDetailId(d.getId()); + bill.setType(d.getType()); + return bill; + } + + + private BigDecimal getAreasNumBYRooms(List<YwRoom> roomList) { + BigDecimal data= new BigDecimal(0); + for(YwRoom r :roomList){ + data = data.add(Constants.formatBigdecimal(r.getArea())); + } + return data; + } + + + + + 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_WORKORDER_PROBLEM.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.ONE)){ + 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‘鐨勭璧佹潯娆惧厤绉熸湡淇℃伅锛�"); + } + 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(Constants.equalsInteger(model.getType(),Constants.ZERO ) + || Constants.equalsInteger(model.getType(),Constants.TWO)){ + 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‘鐨勭墿涓氭潯娆惧厤绉熸湡淇℃伅锛�"); + } + for(YwContractDetail d :model.getWyDetailList()){ + if( d.getStartDate() == null + ||d.getEditDate() == 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.getCompanyId()); + 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(),"瀵逛笉璧凤紝瀛樺湪鏃犳晥鐨勬埧婧愪俊鎭紒"); + } + 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(),"瀵逛笉璧凤紝缁忓姙浜轰俊鎭笉瀛樺湪锛岃灏濊瘯鍒锋柊椤甸潰閲嶈瘯锛�"); } } @@ -132,112 +615,116 @@ @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 ) + .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); 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()); } - return PageData.from(ywContractMapper.selectPage(page, queryWrapper)); + 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 ); + return PageData.from(ywContractMapper.selectJoinPage(page, YwContract.class,queryWrapper)); } @Override -- Gitblit v1.9.3