From d764a28d914571e7a6c62d85b6e81e70328ecfdb Mon Sep 17 00:00:00 2001 From: liukangdong <898885815@qq.com> Date: 星期六, 23 十一月 2024 17:32:51 +0800 Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/funingyunwei --- server/system_service/src/main/java/com/doumee/core/utils/Constants.java | 23 + server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java | 2 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwCustomerCloudController.java | 2 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java | 3 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwCustomer.java | 4 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/YwFloor.java | 5 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwCustomerService.java | 1 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/Member.java | 11 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractDetail.java | 3 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwFloorCloudController.java | 12 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRoom.java | 8 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java | 2 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java | 8 server/system_service/src/main/java/com/doumee/core/utils/DateCompare.java | 117 ++++++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java | 123 ++++++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java | 73 +++ 19 files changed, 962 insertions(+), 98 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..eca4a9b 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" ; @@ -209,6 +210,19 @@ public static final int depart = 3; public static final int custom = 4; public static final int self = -1; + } + + + + public interface BillPayStatus{ + //璁垮鐘舵��(0:鏈鍒�,1:宸茬鍒�,2:宸茬閫�,3:婊炵暀,4:鏈闂�,5:鑷姩绛剧,6:鏈閫�) + int waitSign = 0; + int signin= 1; + int signout = 2; + int noleave =3; + int novisit =4; + int autoOut =5; + int noSignout =6; } /** @@ -477,6 +491,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) { @@ -1226,6 +1248,7 @@ FN_DEVICE_FILE(5, "闃滃畞鏈嶅姟骞冲彴璁惧绫诲瀷鍥剧墖 ", "闃滃畞鏈嶅姟骞冲彴璁惧绫诲瀷鍥剧墖 "), FN_DEVICE_RECORD_FILE(6, "闃滃畞鏈嶅姟骞冲彴杩愮淮璁板綍鍥剧墖 ", "闃滃畞鏈嶅姟骞冲彴杩愮淮璁板綍鍥剧墖 "), FN_PATROL_POINT_FILE(7, "宸℃鐐归檮浠� ", "宸℃鐐归檮浠� "), + FN_CONTRACT_BILL_FILE(8, "鍚堝悓璐﹀崟闄勪欢 ", "鍚堝悓璐﹀崟闄勪欢 "), ; // 鎴愬憳鍙橀噺 private String name; 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_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java index bfcd847..3b928b1 100644 --- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java +++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/MemberCloudController.java @@ -382,7 +382,7 @@ @CloudRequiredPermission("business:member:create") public ApiResponse ywCreate(@RequestBody Member member,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { member.setLoginUserInfo(this.getLoginUser(token)); - memberService.create(member); + memberService.ywCreate(member); return ApiResponse.success("鎿嶄綔鎴愬姛锛�"); } diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwCustomerCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwCustomerCloudController.java index 36d61b4..7063422 100644 --- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwCustomerCloudController.java +++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwCustomerCloudController.java @@ -90,6 +90,6 @@ @GetMapping("/{id}") @CloudRequiredPermission("business:ywcustomer:query") public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { - return ApiResponse.success(ywCustomerService.findById(id)); + return ApiResponse.success(ywCustomerService.getDetail(id)); } } diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwFloorCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwFloorCloudController.java index 904306f..e503f64 100644 --- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwFloorCloudController.java +++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwFloorCloudController.java @@ -43,7 +43,7 @@ @ApiOperation("鏍规嵁ID鍒犻櫎") @GetMapping("/delete/{id}") - @RequiresPermissions("business:ywfloor:delete") + @CloudRequiredPermission("business:ywfloor:delete") public ApiResponse deleteById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { ywFloorService.deleteById(id,this.getLoginUser(token)); return ApiResponse.success(null); @@ -51,7 +51,7 @@ @ApiOperation("鎵归噺鍒犻櫎") @GetMapping("/delete/batch") - @RequiresPermissions("business:ywfloor:delete") + @CloudRequiredPermission("business:ywfloor:delete") public ApiResponse deleteByIdInBatch(@RequestParam String ids,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { String [] idArray = ids.split(","); List<Integer> idList = new ArrayList<>(); @@ -64,7 +64,7 @@ @ApiOperation("鏍规嵁ID淇敼") @PostMapping("/updateById") - @RequiresPermissions("business:ywfloor:update") + @CloudRequiredPermission("business:ywfloor:update") public ApiResponse updateById(@RequestBody YwFloor ywFloor,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { ywFloor.setLoginUserInfo(this.getLoginUser(token)); ywFloorService.updateById(ywFloor); @@ -73,7 +73,7 @@ @ApiOperation("鍒嗛〉鏌ヨ") @PostMapping("/page") - @RequiresPermissions("business:ywfloor:query") + @CloudRequiredPermission("business:ywfloor:query") public ApiResponse<PageData<YwFloor>> findPage (@RequestBody PageWrap<YwFloor> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token)); return ApiResponse.success(ywFloorService.findPage(pageWrap)); @@ -81,7 +81,7 @@ @ApiOperation("瀵煎嚭Excel") @PostMapping("/exportExcel") - @RequiresPermissions("business:ywfloor:exportExcel") + @CloudRequiredPermission("business:ywfloor:exportExcel") public void exportExcel (@RequestBody PageWrap<YwFloor> pageWrap, HttpServletResponse response,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token)); ExcelExporter.build(YwFloor.class).export(ywFloorService.findPage(pageWrap).getRecords(), "杩愮淮妤煎眰淇℃伅琛�", response); @@ -89,7 +89,7 @@ @ApiOperation("鏍规嵁ID鏌ヨ") @GetMapping("/{id}") - @RequiresPermissions("business:ywfloor:query") + @CloudRequiredPermission("business:ywfloor:query") public ApiResponse findById(@PathVariable Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { return ApiResponse.success(ywFloorService.findById(id)); } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java index c40d545..399570e 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java @@ -64,7 +64,7 @@ @ApiModelProperty(value = "绫诲瀷 0鍙告満浜哄憳 1鏅�氳瀹� 2鍐呴儴浜哄憳 3瀹㈡埛鑱旂郴浜�", example = "1") private Integer type; - @ApiModelProperty(value = "韬唤 0鑰佹澘 1瓒呯骇绠$悊鍛� 2鍛樺伐", example = "1") + @ApiModelProperty(value = "韬唤 0鑰佹澘/瓒呯骇绠$悊鍛� 1浜轰簨/绠$悊鍛� 2鍛樺伐/鏅�氬憳宸�", example = "1") @ExcelColumn(name="韬唤 0鑰佹澘 1瓒呯骇绠$悊鍛� 2鍛樺伐") private Integer highCheckor; @@ -130,7 +130,8 @@ private int memberCardCount; @ExcelColumn(name="宸ュ彿",index = 18,width = 8) private String code; - @ApiModelProperty(value = "璁垮骞撮緞") + @ApiModelProperty(value = "鐢熸棩") + @JsonFormat(pattern = "yyyy-MM-dd") private Date birthday; @@ -305,4 +306,10 @@ @ApiModelProperty(value = "鏄惁鏌ヨ鍥哄畾浜哄憳锛�0=鍚︼紱1=鏄�" ) @TableField(exist = false) private Integer querySpecial; + + + @ApiModelProperty(value = "瀹㈡埛鍚嶇О", example = "1") + @TableField(exist = false) + private String customerName; + } 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..121375e 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 @@ -1,7 +1,10 @@ package com.doumee.dao.business.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.doumee.core.annotation.excel.ExcelColumn; import com.doumee.core.model.LoginUserModel; +import com.doumee.core.utils.Constants; +import com.doumee.dao.system.model.Multifile; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import com.baomidou.mybatisplus.annotation.IdType; @@ -11,6 +14,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import java.util.Date; import java.math.BigDecimal; +import java.util.List; /** * 杩愮淮鍚堝悓璐﹀崟淇℃伅琛� @@ -33,7 +37,6 @@ @ApiModelProperty(value = "鍒涘缓鏃堕棿") @ExcelColumn(name="鍒涘缓鏃堕棿") - @JsonFormat(pattern = "yyyy-MM-dd") private Date createDate; @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1") @@ -42,7 +45,6 @@ @ApiModelProperty(value = "鏇存柊鏃堕棿") @ExcelColumn(name="鏇存柊鏃堕棿") - @JsonFormat(pattern = "yyyy-MM-dd") private Date editDate; @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1") @@ -52,20 +54,40 @@ @ApiModelProperty(value = "澶囨敞") @ExcelColumn(name="澶囨敞") private String remark; - - @ApiModelProperty(value = "鐘舵�� 0鏈紑濮嬶紱1杩涜涓紱2宸插畬鎴愶紱", example = "1") - @ExcelColumn(name="鐘舵�� 0鏈紑濮嬶紱1杩涜涓紱2宸插畬鎴愶紱") + @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鍏抽棴锛�", example = "1") + @ExcelColumn(name="鐘舵�� 0寮�濮嬶紱1鍏抽棴锛�") 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 = "璁″垝浠樻鏃�") + @ExcelColumn(name="璁″垝浠樻鏃�") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date planPayData; + + @ApiModelProperty(value = "瀹為檯浠樻鏃�") + @ExcelColumn(name="瀹為檯浠樻鏃�") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date actPayData; @ApiModelProperty(value = "鍚堝悓鏉℃缂栫爜锛堝叧鑱攜w_contract_detail)", example = "1") @ExcelColumn(name="鍚堝悓鏉℃缂栫爜锛堝叧鑱攜w_contract_detail)") @@ -83,4 +105,41 @@ @ExcelColumn(name="鎬婚噾棰�") private BigDecimal totleFee; + @ApiModelProperty(value = "璐圭敤绫诲瀷锛�0=绉熻祦璐癸紱1=鐗╀笟璐癸紱2=鎶奸噾锛�3=淇濊瘉閲戯紱4=姘寸數璐癸紱5=鏉傞」璐癸紱6=鍏朵粬", example = "1") + @ExcelColumn(name="璐圭敤绫诲瀷锛�0=绉熻祦璐癸紱1=鐗╀笟璐癸紱2=鎶奸噾锛�3=淇濊瘉閲戯紱4=姘寸數璐癸紱5=鏉傞」璐癸紱6=鍏朵粬") + private Integer costType; + + @ApiModelProperty(value = "璐﹀崟绫诲瀷锛�0=鏀舵锛�1=浠樻", example = "1") + @ExcelColumn(name="璐﹀崟绫诲瀷锛�0=鏀舵锛�1=浠樻") + private Integer billType; + + @ApiModelProperty(value = "鎵�灞炲叕鍙�", example = "1") + @ExcelColumn(name="鎵�灞炲叕鍙�") + private Integer companyId; + + @ApiModelProperty(value = "浠樻鐘舵�侊細0=寰呮敹娆撅紱1=宸茬粨娓咃紱2=閮ㄥ垎缁撴竻锛�3=寰呬粯娆�") + @ExcelColumn(name="浠樻鐘舵�侊細0=寰呮敹娆撅紱1=宸茬粨娓咃紱2=閮ㄥ垎缁撴竻锛�3=寰呬粯娆�") + private Integer payStatus; + + @ApiModelProperty(value = "瀹㈡埛鍚嶇О锛堜粯娆炬柟锛�", example = "1") + @TableField(exist = false) + private String customerName; + + @ApiModelProperty(value = "鍚堝悓鍚嶇О", example = "1") + @TableField(exist = false) + private String contractName; + + @ApiModelProperty(value = "鍏徃鍚嶇О", example = "1") + @TableField(exist = false) + private String companyName; + + @ApiModelProperty(value = "闄勪欢淇℃伅", example = "1") + @TableField(exist = false) + private List<Multifile> multifileList; + + + @ApiModelProperty(value = "闄勪欢淇℃伅", example = "1") + @TableField(exist = false) + private List<YwContractRoom> ywContractRoomList; + } 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/dao/business/model/YwContractRoom.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRoom.java index 798b054..43ac515 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRoom.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractRoom.java @@ -56,10 +56,14 @@ @ExcelColumn(name="鎴挎簮缂栫爜锛堝叧鑱攜w_room)") private Integer roomId; - @ApiModelProperty(value = "鍚堝悓缂栫爜锛堝叧鑱攜w_contract)", example = "1") - @ExcelColumn(name="鍚堝悓缂栫爜锛堝叧鑱攜w_contract)") + @ApiModelProperty(value = "鍚堝悓缂栫爜鎴栬处鍗曠紪鐮侊紙鍏宠仈yw_contract)", example = "1") + @ExcelColumn(name="鍚堝悓缂栫爜鎴栬处鍗曠紪鐮侊紙鍏宠仈yw_contract)") private Integer contractId; + @ApiModelProperty(value = "鍏宠仈绫诲瀷锛�0=鍚堝悓锛�1=鍚堝悓璐﹀崟", example = "1") + @ExcelColumn(name="鍏宠仈绫诲瀷锛�0=鍚堝悓锛�1=鍚堝悓璐﹀崟") + private Integer type; + @ApiModelProperty(value = "鎺掑簭鐮�", example = "1") @ExcelColumn(name="鎺掑簭鐮�") private Integer sortnum; diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwCustomer.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwCustomer.java index bfbd718..1ac6d72 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwCustomer.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwCustomer.java @@ -154,4 +154,8 @@ @ApiModelProperty(value = "鍛樺伐鍚嶇О") @TableField(exist = false) private String memberName; + + @ApiModelProperty(value = "鑱旂郴浜虹數璇�") + @TableField(exist = false) + private String memberPhone; } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwFloor.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwFloor.java index f479c08..8d46be4 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwFloor.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwFloor.java @@ -53,6 +53,11 @@ @ExcelColumn(name="鍚嶇О") private String name; + @ApiModelProperty(value = "缂栫爜") + @ExcelColumn(name="缂栫爜") + private String code; + + @ApiModelProperty(value = "澶囨敞") @ExcelColumn(name="澶囨敞") private String remark; diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwCustomerService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwCustomerService.java index 35ac418..8076116 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwCustomerService.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwCustomerService.java @@ -64,6 +64,7 @@ */ YwCustomer findById(Integer id); + YwCustomer getDetail(Integer id); /** * 鏉′欢鏌ヨ鍗曟潯璁板綍 * diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java index 12428ac..30f7408 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java @@ -2197,6 +2197,9 @@ Utils.MP.blankToNull(pageWrap.getModel()); Member model = pageWrap.getModel(); IPage iPage = memberMapper.selectJoinPage(page,Member.class,new MPJLambdaWrapper<Member>() + .selectAll(Member.class) + .selectAs(YwCustomer::getName,Member::getCustomerName) + .leftJoin(YwCustomer.class,YwCustomer::getId,Member::getCustomerId) .eq(Member::getIsdeleted,Constants.ZERO) .eq(Member::getType,Constants.memberType.customer) .eq(Objects.nonNull(model)&&Objects.nonNull(model.getCustomerId()),Member::getCustomerId,model.getCustomerId()) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java index 1764e4a..b5003c3 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwBuildingServiceImpl.java @@ -126,7 +126,7 @@ .leftJoin(YwProject.class,YwProject::getId,YwBuilding::getProjectId); Utils.MP.blankToNull(pageWrap.getModel()); pageWrap.getModel().setIsdeleted(Constants.ZERO); - queryWrapper.select("*,(select count(1) from yw_room a where a.isdeleted=0 and a.BUILDING_ID=t.id) as roomNum"+ + queryWrapper.select(" (select count(1) from yw_room a where a.isdeleted=0 and a.BUILDING_ID=t.id) as roomNum "+ ",(select count(1) from yw_room a where a.isdeleted=0 and a.BUILDING_ID=t.id and a.IS_INVESTMENT=1) as roomRentNum"); if (pageWrap.getModel().getId() != null) { queryWrapper.eq(YwBuilding::getId, pageWrap.getModel().getId()); diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java index 730db94..b3cdf03 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java @@ -1,21 +1,32 @@ package com.doumee.service.business.impl; +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.Utils; import com.doumee.dao.business.YwContractBillMapper; +import com.doumee.dao.business.YwContractRoomMapper; import com.doumee.dao.business.model.YwContractBill; +import com.doumee.dao.business.model.YwContractRoom; +import com.doumee.dao.system.MultifileMapper; +import com.doumee.dao.system.model.Multifile; import com.doumee.service.business.YwContractBillService; 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 org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; +import java.util.Date; import java.util.List; +import java.util.Objects; /** * 杩愮淮鍚堝悓璐﹀崟淇℃伅琛⊿ervice瀹炵幇 @@ -28,9 +39,65 @@ @Autowired private YwContractBillMapper ywContractBillMapper; + @Autowired + private YwContractRoomMapper ywContractRoomMapper; + + @Autowired + private MultifileMapper multifileMapper; + @Override public Integer create(YwContractBill ywContractBill) { + if(Objects.isNull(ywContractBill) + || Objects.isNull(ywContractBill.getContractId()) + || Objects.isNull(ywContractBill.getTotleFee()) + || Objects.isNull(ywContractBill.getPlanPayData()) + || Objects.isNull(ywContractBill.getCostType()) + || Objects.isNull(ywContractBill.getBillType()) + || Objects.isNull(ywContractBill.getCompanyId()) + || Objects.isNull(ywContractBill.getStartDate()) + || Objects.isNull(ywContractBill.getEndDate()) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + LoginUserInfo loginUserInfo = ywContractBill.getLoginUserInfo(); + ywContractBill.setCreateDate(new Date()); + ywContractBill.setCreator(loginUserInfo.getId()); + ywContractBill.setIsdeleted(Constants.ZERO); + ywContractBill.setStatus(Constants.ZERO); ywContractBillMapper.insert(ywContractBill); + + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBill.getYwContractRoomList())){ + for (YwContractRoom ywContractRoom:ywContractBill.getYwContractRoomList()) { + if(Objects.isNull(ywContractRoom) + || Objects.isNull(ywContractRoom.getRoomId())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"璇烽�夋嫨鎴挎簮鏁版嵁"); + } + ywContractRoom.setCreateDate(new Date()); + ywContractRoom.setCreator(loginUserInfo.getId()); + ywContractRoom.setIsdeleted(Constants.ZERO); + ywContractRoom.setContractId(ywContractBill.getId()); + ywContractRoom.setType(Constants.ONE); + + } + ywContractRoomMapper.insert(ywContractBill.getYwContractRoomList()); + } + + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBill.getMultifileList())){ + for (Multifile multifile:ywContractBill.getMultifileList()) { + if(Objects.isNull(multifile) + || StringUtils.isBlank(multifile.getFileurl()) + || StringUtils.isBlank(multifile.getName())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢淇℃伅閿欒"); + } + multifile.setCreator(loginUserInfo.getId()); + multifile.setCreateDate(new Date()); + multifile.setIsdeleted(Constants.ZERO); + multifile.setObjType(Constants.MultiFile.FN_PATROL_POINT_FILE.getKey()); + multifile.setObjId(ywContractBill.getId()); + } + multifileMapper.insert(ywContractBill.getMultifileList()); + } + return ywContractBill.getId(); } @@ -55,7 +122,61 @@ @Override public void updateById(YwContractBill ywContractBill) { - ywContractBillMapper.updateById(ywContractBill); + if(Objects.isNull(ywContractBill) + || Objects.isNull(ywContractBill.getId()) + || Objects.isNull(ywContractBill.getContractId()) + || Objects.isNull(ywContractBill.getTotleFee()) + || Objects.isNull(ywContractBill.getPlanPayData()) + || Objects.isNull(ywContractBill.getCostType()) + || Objects.isNull(ywContractBill.getBillType()) + || Objects.isNull(ywContractBill.getCompanyId()) + || Objects.isNull(ywContractBill.getStartDate()) + || Objects.isNull(ywContractBill.getEndDate()) + || ywContractBill.getTotleFee().compareTo(BigDecimal.ZERO)<=Constants.ZERO + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + LoginUserInfo loginUserInfo = ywContractBill.getLoginUserInfo(); + ywContractBill.setEditDate(new Date()); + ywContractBill.setEditor(loginUserInfo.getId()); + if(Constants.equalsInteger(ywContractBill.getBillType(),Constants.ZERO)){ + ywContractBill.setPayStatus(Constants.ZERO); + }else{ + ywContractBill.setPayStatus(Constants.THREE); + } + ywContractBillMapper.insert(ywContractBill); + + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBill.getYwContractRoomList())){ + for (YwContractRoom ywContractRoom:ywContractBill.getYwContractRoomList()) { + if(Objects.isNull(ywContractRoom) + || Objects.isNull(ywContractRoom.getRoomId())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"璇烽�夋嫨鎴挎簮鏁版嵁"); + } + ywContractRoom.setCreateDate(new Date()); + ywContractRoom.setCreator(loginUserInfo.getId()); + ywContractRoom.setIsdeleted(Constants.ZERO); + ywContractRoom.setContractId(ywContractBill.getId()); + ywContractRoom.setType(Constants.ONE); + + } + ywContractRoomMapper.insert(ywContractBill.getYwContractRoomList()); + } + + if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBill.getMultifileList())){ + for (Multifile multifile:ywContractBill.getMultifileList()) { + if(Objects.isNull(multifile) + || StringUtils.isBlank(multifile.getFileurl()) + || StringUtils.isBlank(multifile.getName())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"闄勪欢淇℃伅閿欒"); + } + multifile.setCreator(loginUserInfo.getId()); + multifile.setCreateDate(new Date()); + multifile.setIsdeleted(Constants.ZERO); + multifile.setObjType(Constants.MultiFile.FN_PATROL_POINT_FILE.getKey()); + multifile.setObjId(ywContractBill.getId()); + } + multifileMapper.insert(ywContractBill.getMultifileList()); + } } @Override 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 diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java index 8d5464e..6f7a36d 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwCustomerServiceImpl.java @@ -50,7 +50,7 @@ @Transactional(rollbackFor = {BusinessException.class,Exception.class}) public Integer create(YwCustomer ywCustomer) { if(Objects.isNull(ywCustomer) - || Objects.nonNull(ywCustomer.getType()) + || Objects.isNull(ywCustomer.getType()) || StringUtils.isBlank(ywCustomer.getName()) || Objects.isNull(ywCustomer.getMember()) || StringUtils.isBlank(ywCustomer.getMember().getName()) @@ -72,8 +72,8 @@ member.setCreateDate(new Date()); member.setIsdeleted(Constants.ZERO); member.setStatus(Constants.ZERO); - member.setCompanyType(ywCustomer.getId()); member.setType(Constants.memberType.customer); + member.setCustomerId(ywCustomer.getId()); this.checkMember(member); memberMapper.insert(member); @@ -128,7 +128,7 @@ @Override public void updateById(YwCustomer ywCustomer) { if(Objects.isNull(ywCustomer) - || Objects.nonNull(ywCustomer.getType()) + || Objects.isNull(ywCustomer.getType()) || StringUtils.isBlank(ywCustomer.getName()) || Objects.isNull(ywCustomer.getMemberId()) ){ @@ -156,6 +156,7 @@ return ywCustomerMapper.selectById(id); } + @Override public YwCustomer getDetail(Integer id) { YwCustomer ywCustomer = ywCustomerMapper.selectById(id); if(Objects.isNull(ywCustomer)){ @@ -189,6 +190,7 @@ queryWrapper .selectAll(YwCustomer.class) .selectAs(Member::getName,YwCustomer::getMemberName) + .selectAs(Member::getPhone,YwCustomer::getMemberPhone) .leftJoin(Member.class,Member::getId,YwCustomer::getMemberId) .eq(YwCustomer::getIsdeleted,Constants.ZERO) .like(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getName()),YwCustomer::getName,model.getName()) -- Gitblit v1.9.3