Merge branch 'master' of http://139.186.142.91:10010/r/productDev/funingyunwei
| | |
| | | return ApiResponse.success(ywAccountService.findPage(pageWrap)); |
| | | } |
| | | |
| | | |
| | | @ApiOperation("列表") |
| | | @PostMapping("/list") |
| | | @CloudRequiredPermission("business:ywaccount:query") |
| | | public ApiResponse<List<YwAccount>> list (@RequestBody YwAccount model,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(ywAccountService.findList(model)); |
| | | } |
| | | |
| | | @ApiOperation("导出Excel") |
| | | @PostMapping("/exportExcel") |
| | | @CloudRequiredPermission("business:ywaccount:exportExcel") |
| | |
| | | return ApiResponse.success(ywCustomerService.findPage(pageWrap)); |
| | | } |
| | | |
| | | @ApiOperation("列表") |
| | | @PostMapping("/list") |
| | | @CloudRequiredPermission("business:ywcustomer:query") |
| | | public ApiResponse<List<YwCustomer>> list (@RequestBody YwCustomer model,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(ywCustomerService.findList(model)); |
| | | } |
| | | |
| | | @ApiOperation("导出Excel") |
| | | @PostMapping("/exportExcel") |
| | | @CloudRequiredPermission("business:ywcustomer:exportExcel") |
| | |
| | | |
| | | @ApiModelProperty(value = "开始时间") |
| | | @ExcelColumn(name="计费开始日期",index = 10,width = 6,dateFormat = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date startDate; |
| | | |
| | | @ApiModelProperty(value = "结束时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @ExcelColumn(name="计费结束日期",index = 11,width = 6,dateFormat = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date endDate; |
| | | |
| | | @ApiModelProperty(value = "实际付款日") |
| | |
| | | |
| | | @ApiModelProperty(value = "计划付款日") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd") |
| | | private Date planPayDate; |
| | | |
| | | @ApiModelProperty(value = "合同条款编码(关联yw_contract_detail)", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "创建人名称") |
| | | @ExcelColumn(name="创建人",index = 9,width = 10) |
| | | @TableField(exist = false) |
| | | private String realname; |
| | | |
| | | @ApiModelProperty(value = "关联房间数据", example = "1") |
| | |
| | | queryWrapper.le(Company::getFsDate, Utils.Date.getEnd(pageWrap.getModel().getFsDate())); |
| | | } |
| | | queryWrapper.orderByDesc(Company::getCreateDate); |
| | | queryWrapper.leftJoin("company t1 on t1.id=t.parant_id"); |
| | | queryWrapper.leftJoin("company t1 on t1.id=t.parent_id"); |
| | | queryWrapper.selectAll(Company.class) |
| | | .select("(select count(m.id) from member m where m.COMPANY_ID=t.id and m.ISDELETED=0) ",Company::getCountNum) |
| | | .select("(select count(m.id) from yw_account m where m.COMPANY_ID=t.id and m.ISDELETED=0)",Company::getAccountNum) ; |
| | |
| | | || Objects.isNull(ywContractBill.getBillType()) |
| | | || Objects.isNull(ywContractBill.getCompanyId()) |
| | | || com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(ywContractBill.getYwContractRoomList()) |
| | | || Objects.nonNull(ywContractBill.getFeeType()) |
| | | || Objects.isNull(ywContractBill.getFeeType()) |
| | | || (Constants.equalsInteger(ywContractBill.getFeeType(),Constants.ZERO)&& (Objects.isNull(ywContractBill.getStartDate()) |
| | | || Objects.isNull(ywContractBill.getEndDate()))) |
| | | ){ |
| | |
| | | ywContractBill.setIsdeleted(Constants.ZERO); |
| | | ywContractBill.setType(Constants.ONE); |
| | | ywContractBill.setStatus(Constants.ZERO); |
| | | if(Constants.equalsInteger(ywContractBill.getBillType(),Constants.ZERO)){ |
| | | ywContractBill.setPayStatus(Constants.ZERO); |
| | | }else{ |
| | | ywContractBill.setPayStatus(Constants.THREE); |
| | | } |
| | | |
| | | if(Constants.equalsInteger(ywContractBill.getFeeType(),Constants.ONE)){ |
| | | ywContractBill.setStartDate(ywContractBill.getPlanPayDate()); |
| | | ywContractBill.setEndDate(ywContractBill.getPlanPayDate()); |
| | | } |
| | | //查询合同下的最大的序号 |
| | | List<YwContractBill> ywContractBillList = ywContractBillMapper.selectList(new QueryWrapper<YwContractBill>().lambda().eq(YwContractBill::getContractId,ywContract.getId()).orderByDesc(YwContractBill::getId)); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBillList)){ |
| | | ywContractBill.setSortnum(ywContractBillList.size() + 1 ); |
| | | }else{ |
| | | ywContractBill.setSortnum(Constants.ZERO); |
| | | } |
| | | ywContractBillMapper.insert(ywContractBill); |
| | | |
| | | //房源数据 |
| | |
| | | .select(" ( select ifnull(sum(yw.ACT_RECEIVABLE_FEE),0) from yw_contract_revenue yw where yw.bill_id = t.id and yw.status = 0 and yw.isdeleted = 0 ) as actReceivableFee ") |
| | | .selectAs(YwContract::getCode,YwContractBill::getContractCode) |
| | | .selectAs(YwCustomer::getName,YwContractBill::getCustomerName) |
| | | .selectAs(Company::getName,YwContractBill::getCompanyName) |
| | | .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId) |
| | | .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId) |
| | | .leftJoin(Company.class,Company::getId,YwContract::getCompanyId) |
| | | .eq(YwContractBill::getIsdeleted,Constants.ZERO) |
| | | .eq(YwContractBill::getId,id)); |
| | | if(Objects.isNull(ywContractBill)){ |
| | |
| | | YwCustomer::getName,model.getCustomerName()) |
| | | .eq(Objects.nonNull(model)&&Objects.nonNull(model.getStatus()), |
| | | YwContractBill::getStatus,model.getStatus()) |
| | | .eq(Objects.nonNull(model)&&Objects.nonNull(model.getBillType()), |
| | | YwContractBill::getBillType,model.getBillType()) |
| | | .eq(Objects.nonNull(model)&&Objects.nonNull(model.getPayStatus()), |
| | | YwContractBill::getPayStatus,model.getPayStatus()) |
| | | .eq(Objects.nonNull(model)&&Objects.nonNull(model.getType()), |
| | |
| | | ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee()) |
| | | ); |
| | | //是否逾期 |
| | | if(Constants.equalsInteger(ywContractBill.getStatus(),Constants.ZERO) && (Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.ZERO) |
| | | || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.TWO) |
| | | || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.THREE) |
| | | || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.FOUR)) |
| | | && ywContractBill.getEndDate().getTime() < System.currentTimeMillis()){ |
| | | if(Constants.equalsInteger(ywContractBill.getStatus(),Constants.ZERO) |
| | | && (Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.ZERO) |
| | | || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.TWO) |
| | | || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.THREE) |
| | | || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.FOUR)) |
| | | && ywContractBill.getPlanPayDate().getTime() < System.currentTimeMillis()){ |
| | | ywContractBill.setIsOverdue(Constants.ONE); |
| | | }else{ |
| | | ywContractBill.setIsOverdue(Constants.ZERO); |
| | |
| | | package com.doumee.service.business.impl; |
| | | |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.core.constants.ResponseStatus; |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.LoginUserInfo; |
| | |
| | | @Autowired |
| | | private SystemUserMapper systemUserMapper; |
| | | |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class,BusinessException.class}) |
| | |
| | | ywContractRevenue.setContractId(ywContractBill.getContractId()); |
| | | //根据收支情况 更新账单数据 |
| | | //查询当前账单下 已支付的费用 |
| | | List<YwContractRevenue> ywContractRevenueList = ywContractRevenueMapper.selectList(new QueryWrapper<YwContractRevenue>().lambda().eq(YwContractRevenue::getIsdeleted,Constants.ZERO) |
| | | List<YwContractRevenue> ywContractRevenueList = ywContractRevenueMapper.selectList(new QueryWrapper<YwContractRevenue>() |
| | | .lambda().eq(YwContractRevenue::getIsdeleted,Constants.ZERO) |
| | | .eq(YwContractRevenue::getStatus,Constants.ZERO) |
| | | .eq(YwContractRevenue::getBillId,ywContractRevenue.getBillId()) |
| | | ); |
| | | //已支付金额 |
| | | BigDecimal payTotal = BigDecimal.ZERO; |
| | |
| | | //待支付的流水 如果为收入 则比对 金额值 如果是支出 则获取绝对值 进行对比 |
| | | if(Constants.equalsInteger(ywContractRevenue.getRevenueType(),Constants.ZERO)){ |
| | | //如果支付金额 大于 待支付金额 则提示异常 如果支付金额小于 待支付金额 则状态不变化 其他状态 异常 |
| | | if(waitPayTotal.compareTo(ywContractRevenue.getActReceivableFee())>Constants.ZERO){ |
| | | if(waitPayTotal.compareTo(ywContractRevenue.getActReceivableFee())<Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"请输入正确的金额!"); |
| | | }else if(waitPayTotal.compareTo(ywContractRevenue.getActReceivableFee())==Constants.ZERO){ |
| | | ywContractBill.setPayStatus(Constants.ONE); |
| | | } |
| | | }else{ |
| | | waitPayTotal = waitPayTotal.abs(); |
| | | if(waitPayTotal.compareTo(ywContractRevenue.getActReceivableFee())>Constants.ZERO){ |
| | | if(waitPayTotal.compareTo(ywContractRevenue.getActReceivableFee())<Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"请输入正确的金额!"); |
| | | }else if(waitPayTotal.compareTo(ywContractRevenue.getActReceivableFee())==Constants.ZERO){ |
| | | ywContractBill.setPayStatus(Constants.ONE); |
| | |
| | | |
| | | this.getRecordData(ywContractRevenue); |
| | | |
| | | //附件数据 |
| | | List<Multifile> multifileList = multifileMapper.selectJoinList(Multifile.class,new MPJLambdaWrapper<Multifile>() |
| | | .selectAll(Multifile.class) |
| | | .selectAs(SystemUser::getRealname,Multifile::getUserName) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,Multifile::getCreator) |
| | | .eq(Multifile::getObjId,id) |
| | | .eq(Multifile::getIsdeleted,Constants.ZERO) |
| | | .eq(Multifile::getObjType,Constants.MultiFile.FN_CONTRACT_REVENUE_FILE.getKey())); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){ |
| | | String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() |
| | | +systemDictDataBiz.queryByCode(Constants.FTP,Constants.YW_CONTRACT_BILL).getCode(); |
| | | for (Multifile multifile:multifileList) { |
| | | if(StringUtils.isNotBlank(multifile.getFileurl())){ |
| | | multifile.setFileurlFull(path + multifile.getFileurl()); |
| | | } |
| | | } |
| | | ywContractRevenue.setMultifileList(multifileList); |
| | | } |
| | | |
| | | |
| | | return ywContractRevenue; |
| | | } |
| | | |
| | |
| | | if(Objects.isNull(ywContract)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | if(Constants.equalsInteger(ywContract.getStatus(),Constants.THREE)){ |
| | | if(Constants.equalsInteger(ywContract.getStatus(),Constants.FOUR)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"合同状态已流转,无法操作"); |
| | | } |
| | | if(Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.ONE) |
| | | || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.TWO)){ |
| | | || Constants.equalsInteger(ywContractBill.getPayStatus(),Constants.FIVE)){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"账单状态已流转,无法操作"); |
| | | } |
| | | //查询账单下 所有的账单 |
| | |
| | | .selectAs(YwProject::getName, YwRoom::getProjectName) |
| | | .selectAs(YwFloor::getName,YwRoom::getFloorName) |
| | | .selectAs(YwBuilding::getName,YwRoom::getBuildingName) |
| | | .selectAs(YwRoom::getName,YwContractRoom::getRoomName) |
| | | .selectAs(YwRoom::getCode,YwContractRoom::getRoomName) |
| | | .leftJoin(YwRoom.class,YwRoom::getId,YwContractRoom::getRoomId) |
| | | .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor) |
| | | .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId) |
| | |
| | | ywContractBillMapper.updateById(b); |
| | | } |
| | | } |
| | | int yjNoBills =0; |
| | | if(yjBills.size()>0){ |
| | | // 如果是押金或者保证金,不支持退款,保持原来的状态, 0=租赁费;1=物业费;2=租赁押金;3=物业押金;4=水电费;5=杂项费;6=其他;7=保证金 |
| | | for(YwContractBill bill : yjBills){ |
| | | if(!Constants.equalsInteger(bill.getPayStatus(),Constants.ONE) ){ |
| | | //如果是未结清押金 |
| | | yjNoBills ++; |
| | | } |
| | | } |
| | | } |
| | | |
| | | BigDecimal totalBackFee = new BigDecimal(0); |
| | | if(canBills.size()>0){ |
| | | //直接关闭关闭账单 |
| | |
| | | fee = Constants.formatBigdecimal(b.getActReceivableFee()).subtract(editBill.getReceivableFee()); |
| | | if(fee.compareTo(new BigDecimal(0))== 0){ |
| | | //如果费用正好,则修改账单信息为已结清 |
| | | b.setStatus(Constants.ONE); |
| | | b.setPayStatus(Constants.ONE); |
| | | }else if(fee.compareTo(new BigDecimal(0))> 0){ |
| | | //如果需要进行退款,更新账单信息为待退款 |
| | | b.setStatus(Constants.FOUR); |
| | | b.setPayStatus(Constants.FOUR); |
| | | }else if(fee.compareTo(new BigDecimal(0)) < 0){ |
| | | //如果账单还有款待收,则保持状态不变 |
| | | } |
| | |
| | | addBill.setContractId(param.getId()); |
| | | addBill.setType(Constants.ONE); |
| | | addBill.setStatus(Constants.ZERO); |
| | | if(Constants.equalsInteger(addBill.getFeeType(),Constants.ONE)){ |
| | | addBill.setStartDate(addBill.getPlanPayDate()); |
| | | addBill.setEndDate(addBill.getPlanPayDate()); |
| | | } |
| | | if(Constants.equalsInteger(addBill.getBillType(),Constants.ZERO)){ |
| | | //如果是收款 |
| | | totalBackFee = totalBackFee.add(Constants.formatBigdecimal(addBill.getActReceivableFee())); |
| | |
| | | newBills.add(addBill); |
| | | } |
| | | ywContractBillMapper.insert(param.getAddBillList());//批量插入数据 |
| | | } |
| | | |
| | | int yjNoBills =0; |
| | | if(yjBills.size()>0){ |
| | | // 如果是押金或者保证金,不支持退款,保持原来的状态, 0=租赁费;1=物业费;2=租赁押金;3=物业押金;4=水电费;5=杂项费;6=其他;7=保证金 |
| | | for(YwContractBill bill : yjBills){ |
| | | if(!Constants.equalsInteger(bill.getPayStatus(),Constants.ONE) ){ |
| | | // YwContractBill b = new YwContractBill(); |
| | | // //付款状态:0=待收款;1=已结清;2=部分结清;3=待付款;4=待退款;5=已关闭 |
| | | // //如果账单信息做了编辑,金额计算 实收金额 和 修改后应收金额作对比,判断是否应该退款 |
| | | // BigDecimal fee = Constants.formatBigdecimal(bill.getActReceivableFee()).subtract(bill.getReceivableFee()); |
| | | // if(fee.compareTo(new BigDecimal(0))== 0){ |
| | | // //如果费用正好,则修改账单信息为已结清 |
| | | // b.setPayStatus(Constants.ONE); |
| | | // }else if(fee.compareTo(new BigDecimal(0))> 0){ |
| | | // //如果需要进行退款,更新账单信息为待退款 |
| | | // b.setPayStatus(Constants.FOUR); |
| | | // } |
| | | // b.setId(bill.getId()); |
| | | // b.setEditDate(param.getEditDate()); |
| | | // b.setEditor(param.getEditor()); |
| | | // b.setReceivableFee(BigDecimal.ZERO); |
| | | // ywContractBillMapper.updateById(b); |
| | | //如果是未结清押金 |
| | | yjNoBills ++; |
| | | } |
| | | } |
| | | } |
| | | param.setBtWaitBill(canBills.size() + newBills.size()+yjNoBills);//未清算的账单数量 |
| | | param.setBtCLoseBill(closeBills.size()); |
| | |
| | | bill.setType(Constants.ZERO); |
| | | bill.setCostType(type); |
| | | bill.setPlanPayDate(bill.getStartDate()); |
| | | bill.setTotleFee(type==Constants.THREE?model.getZlDeposit():model.getWyDeposit());//押金费用 |
| | | bill.setTotleFee(type==Constants.TWO? |
| | | Objects.isNull(model.getZlDeposit())?BigDecimal.ZERO:model.getZlDeposit() |
| | | : |
| | | Objects.isNull(model.getWyDeposit())?BigDecimal.ZERO:model.getWyDeposit());//押金费用 |
| | | bill.setReceivableFee(bill.getTotleFee()); |
| | | bill.setBillType(Constants.ZERO); |
| | | bill.setPayStatus(Constants.ZERO); |
| | |
| | | }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.ONE) ){ |
| | | if(bill.getEndDate().getTime()<nowStart){ |
| | | //如果已结清,账单直接关闭 |
| | | continue; |
| | | continue; |
| | | } |
| | | model.getCanBackRentBills().add(bill); |
| | | }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.TWO) ){ |
| | |
| | | |
| | | @Override |
| | | public List<YwContract> findList(YwContract ywContract) { |
| | | QueryWrapper<YwContract> wrapper = new QueryWrapper<>(); |
| | | wrapper.lambda().eq(YwContract::getIsdeleted,Constants.ZERO); |
| | | wrapper.lambda().in(YwContract::getStatus,Constants.ZERO,Constants.ONE,Constants.TWO); |
| | | return ywContractMapper.selectList(wrapper); |
| | | return ywContractMapper.selectJoinList(YwContract.class,new MPJLambdaWrapper<YwContract>().selectAll(YwContract.class ) |
| | | .selectAs(Company::getName,YwContract::getCompanyName ) |
| | | .selectAs(SystemUser::getRealname,YwContract::getUserName ) |
| | | .selectAs(YwCustomer::getName,YwContract::getRenterName ) |
| | | .selectAs(YwProject::getName,YwContract::getProjectName ) |
| | | .leftJoin(Company.class,Company::getId,YwContract::getCompanyId) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,YwContract::getUserId) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,YwContract::getCreator) |
| | | .leftJoin(YwProject.class,YwProject::getId,YwContract::getProjectId) |
| | | .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId) |
| | | .eq(YwContract::getIsdeleted,Constants.ZERO) |
| | | .in(YwContract::getStatus,Constants.ZERO,Constants.ONE,Constants.TWO)); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<YwCustomer> findList(YwCustomer ywCustomer) { |
| | | QueryWrapper<YwCustomer> wrapper = new QueryWrapper<>(ywCustomer); |
| | | return ywCustomerMapper.selectList(wrapper); |
| | | public List<YwCustomer> findList(YwCustomer model) { |
| | | return ywCustomerMapper.selectJoinList(YwCustomer.class, |
| | | new MPJLambdaWrapper<YwCustomer>() |
| | | .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()) |
| | | .orderByDesc(YwCustomer::getCreateDate)) ; |
| | | } |
| | | |
| | | @Override |