| | |
| | | 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.*; |
| | | |
| | | /** |
| | | * è¿ç»´ååä¿¡æ¯è¡¨Serviceå®ç° |
| | |
| | | @Autowired |
| | | private YwContractMapper ywContractMapper; |
| | | @Autowired |
| | | private YwContractDetailMapper ywContractDetailMapper; |
| | | @Autowired |
| | | private YwContractBillMapper ywContractBillMapper; |
| | | @Autowired |
| | | private MultifileMapper multifileMapper; |
| | | @Autowired |
| | | private CompanyMapper companyMapper; |
| | | @Autowired |
| | | private YwProjectMapper projectMapper; |
| | |
| | | private SystemUserMapper systemUserMapper; |
| | | @Autowired |
| | | private YwCustomerMapper customerMapper; |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | |
| | | 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(),"对ä¸èµ·ï¼è¯·éæ©æ£ç¡®çå
¬å¸ä¿¡æ¯"); |
| | | 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(),"对ä¸èµ·ï¼è¯·éæ©æ£ç¡®çç§èµæ¡æ¬¾å
ç§æä¿¡æ¯ï¼"); |
| | | } |
| | | 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(),"对ä¸èµ·ï¼è¯·éæ©æ£ç¡®çç©ä¸æ¡æ¬¾å
ç§æä¿¡æ¯ï¼"); |
| | | } |
| | | 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(),"对ä¸èµ·ï¼è¯·éæ©æ£ç¡®ç项ç®ä¿¡æ¯ï¼"); |
| | | } |
| | | 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(),"对ä¸èµ·ï¼è¯·éæ©æ£ç¡®çå
¬å¸ä¿¡æ¯ï¼"); |
| | | } |
| | | SystemUser user = systemUserMapper.selectById(model.getUserId()); |
| | | if(user ==null || (user.getDeleted()!=null && user.getDeleted()) ){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对ä¸èµ·ï¼ç»å人信æ¯ä¸åå¨ï¼è¯·å°è¯å·æ°é¡µé¢éè¯ï¼"); |
| | | } |
| | | |
| | | } |
| | |
| | | @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 |