From dd5e25dfe886b3c249a47aea73d38fa5f0261f26 Mon Sep 17 00:00:00 2001 From: winter Date: Sun, 7 Jul 2024 19:28:35 +0800 Subject: [PATCH] fix --- .../WxPropertyContractController.java | 79 ++++++- .../iformall/domain/po/WxBillProperty.java | 5 + .../service/WxPropertyContractService.java | 7 +- .../impl/WxPropertyContractServiceImpl.java | 221 +++++++----------- .../resources/mapper/WxBillPropertyMapper.xml | 9 + 5 files changed, 176 insertions(+), 145 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java index 04647efde..d99bddcde 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java @@ -163,8 +163,73 @@ public class WxPropertyContractController extends WxContractBaseController { return new ResultData(result); } + + //第一步 + @PostMapping("addBasic") + public ResultData addBasic(@RequestBody WxPropertyContract wxPropertyContract) { + MallUserInfo user = getUser(); + wxPropertyContract.updateTenantInfo(user); + if (null == wxPropertyContract.getCreateType()) { + return new ResultData("createType参数不能为空"); + } + if (wxPropertyContract.getCreateType().intValue() == EnumPropertyCreateType.BY_SHOP.getCode().intValue()) { + if (StringUtils.isBlank(wxPropertyContract.getRentArea()) || StringUtils.isBlank(wxPropertyContract.getShopIds())) { + return new ResultData("rentArea,shopIds参数不能为空"); + } + if (null == wxPropertyContract.getRentalStartDate()) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "起租开始时间不能为空"); + } + if (null == wxPropertyContract.getRentalEndDate()) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "起租结束时间不能为空"); + } + if (null == wxPropertyContract.getStartDate()) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "计租日不能为空"); + } + if (null == wxPropertyContract.getMerchantId() && wxPropertyContract.getOperationType().equals(EnumContractOperationType.PART.getCode())) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantId不能为空"); + } + if (null == wxPropertyContract.getLease()) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "lease不能为空"); + } + if (null == wxPropertyContract.getOperationType()) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "operationType不能为空"); + } + if (null == wxPropertyContract.getAdjustPeriod()) { + return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "adjustPeriod不能为空"); + } + wxPropertyContract.setShopIds(","+wxPropertyContract.getShopIds()+","); + }else { + WxRentContract rentContract = rentContractService.getSimpleDeatil(wxPropertyContract.getRentContractId()); + if (null == rentContract) { + return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND); + } + if (rentContract.getStatus().equals(EnumRentContractStatus.OUT_DATE.getCode()) || + rentContract.getStatus().equals(EnumRentContractStatus.TERMINATE.getCode()) || + rentContract.getStatus().equals(EnumRentContractStatus.INVALID.getCode())) { + return new ResultData(ErrorCode.RENT_CONTRACT_IS_TERMINATED); + } + wxPropertyContract.setRentArea(rentContract.getRentArea()); + wxPropertyContract.setOperationType(rentContract.getOperationType()); + wxPropertyContract.setAdjustPeriod(rentContract.getAdjustPeriod()); + wxPropertyContract.setLease(rentContract.getLease()); + wxPropertyContract.setRentalStartDate(rentContract.getRentalStartDate()); + wxPropertyContract.setRentalEndDate(rentContract.getRentalEndDate()); + wxPropertyContract.setStartDate(rentContract.getStartDate()); + wxPropertyContract.setEndDate(rentContract.getEndDate()); + wxPropertyContract.setMerchantId(rentContract.getMerchantId()); + wxPropertyContract.setSignDate(rentContract.getSignDate()); + wxPropertyContract.setRentInfo(rentContract.getRentInfo()); + } + + Integer contractType = wxRentPropertyContractService.getContractType(wxPropertyContract.getRentShopType(), wxPropertyContract.getOperationType(), EnumContractType.PROPERTY.getCode()); + wxPropertyContract.setContractType(contractType); + wxPropertyContract.setRentStartType(EnumRentStartType.RENTTIME.getCode()); + return wxPropertyContractService.save(wxPropertyContract, user.getId(), user.getName(),false); + } + + //第二步,设置价格, @PostMapping("add") - public ResultData add(@RequestBody WxPropertyContract wxPropertyContract) { + public ResultData addMoney(@RequestBody WxPropertyContract wxPropertyContract) { logger.debug("[" + getIpAddr() + "] WxPropertyContractController::add"); MallUserInfo user = getUser(); wxPropertyContract.updateTenantInfo(user); @@ -190,7 +255,7 @@ public class WxPropertyContractController extends WxContractBaseController { if (null != wxPropertyContract.getFeeStandards() && wxPropertyContract.getFeeStandards().size() > 0 ) { wxPropertyContract.setFeesStandardsInfo(JSON.toJSONString(wxPropertyContract.getFeeStandards())); } - return wxPropertyContractService.saveOrUpdate(wxPropertyContract, user.getId(), user.getName(),false); + return wxPropertyContractService.updateMoney(wxPropertyContract, user.getId(), user.getName(),false); } //物业合同-最后一步切换 按什么日期生成账单 @@ -210,7 +275,7 @@ public class WxPropertyContractController extends WxContractBaseController { if (null != wxPropertyContract.getFeeStandards() && wxPropertyContract.getFeeStandards().size() > 0 ) { wxPropertyContract.setFeesStandardsInfo(JSON.toJSONString(wxPropertyContract.getFeeStandards())); } - return wxPropertyContractService.saveOrUpdate(propertyContract, user.getId(), user.getName(),false); + return wxPropertyContractService.updateMoney(propertyContract, user.getId(), user.getName(),false); } //第三步提交 @@ -220,13 +285,7 @@ public class WxPropertyContractController extends WxContractBaseController { MallUserInfo user = getUser(); wxPropertyContract.updateTenantInfo(user); wxPropertyContract.setAdjustPeriodHandle(); - //第三步提交 SWITCH - wxPropertyContract.setFixedPrice(null); - if (null != wxPropertyContract.getFeeStandards() && wxPropertyContract.getFeeStandards().size() > 0 ) { - wxPropertyContract.setFeesStandardsInfo(JSON.toJSONString(wxPropertyContract.getFeeStandards())); - } - wxPropertyContract.setPreviewBillRentList(null); - return wxPropertyContractService.saveOrUpdate(wxPropertyContract, user.getId(), user.getName(),true); + return wxPropertyContractService.updateFile(wxPropertyContract, user.getId(), user.getName(),true); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java index e9af49f52..e72d83cca 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java @@ -192,4 +192,9 @@ public class WxBillProperty extends WxBillBaseEntity { @TableField(exist = false) List childList; + @TableField(exist = false) + private Integer hasParentBillId; + @TableField(exist = false) + private Integer hasFeesStardarsId; + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxPropertyContractService.java b/mallinkService/src/main/java/com/iformall/service/WxPropertyContractService.java index 2952c92b7..c5368c696 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxPropertyContractService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxPropertyContractService.java @@ -43,8 +43,11 @@ public interface WxPropertyContractService { * @param userName * @return */ - ResultData saveOrUpdate(WxPropertyContract record, Long userId, String userName,boolean writeComplate); - + ResultData save(WxPropertyContract record, Long userId, String userName,boolean writeComplate); + + ResultData updateMoney(WxPropertyContract record, Long userId, String userName,boolean writeComplate); + + ResultData updateFile(WxPropertyContract record, Long userId, String userName,boolean writeComplate); /** * 根据Id删除实体 * diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java index dd9f2d181..9d83c3f56 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -248,11 +248,13 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService @Override public List getWxBillPropertyPreview(TenantEntity tenantEntity,Long id) { + //查询主账单列表,排除其他标砖费用,包括一次性费用,非一次性费用 WxBillProperty wxBillRent = new WxBillProperty(); wxBillRent.setPropertyContractId(id); wxBillRent.setSortColumns(BaseEntity.SortField.Period_ASC); wxBillRent.updateTenantInfo(tenantEntity); return wxBillPropertyMapper.findList(wxBillRent); + //TODO 111111111111 } /** @@ -301,152 +303,105 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService @Override //@Transactional(rollbackFor = {Exception.class}) - public ResultData saveOrUpdate(WxPropertyContract record, Long userId, String userName,boolean writeComplate) { + public ResultData save(WxPropertyContract record, Long userId, String userName,boolean writeComplate) { // 保存调整金额(预账单调整) - boolean haspreview = false; - if(!CollectionUtils.isEmpty(record.getPreviewBillRentList())){ - savePreviewBill(record); - haspreview = true; + WxMerchant merchant = wxMerchantMapper.selectById(record.getMerchantId()); + if (merchant == null) { + return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); } - -// if (record.getRentShopType().equals(EnumRentShopType.POINT.getCode()) && null == record.getShopId()) { -// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "shopId不能为空"); -// } - WxRentContract wxRentContract = null; - if (record.getCreateType().intValue() == EnumPropertyCreateType.BY_RENT.getCode().intValue()) { - wxRentContract = wxRentContractMapper.selectById(record.getRentContractId()); - if (wxRentContract != null) { - if (wxRentContract.getStatus().equals(EnumRentContractStatus.OUT_DATE.getCode()) || - wxRentContract.getStatus().equals(EnumRentContractStatus.TERMINATE.getCode()) || - wxRentContract.getStatus().equals(EnumRentContractStatus.INVALID.getCode())) { - return new ResultData(ErrorCode.RENT_CONTRACT_IS_TERMINATED); - } - } else { - return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND); - } - }else { - if (null == record.getRentalStartDate()) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "起租开始时间不能为空"); - } - if (null == record.getRentalEndDate()) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "起租结束时间不能为空"); - } - if (null == record.getStartDate()) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "计租日不能为空"); - } - } - if (null == record.getMerchantId() && record.getOperationType().equals(EnumContractOperationType.PART.getCode())) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantId不能为空"); - } - if (record.getOperationType().equals(EnumContractOperationType.PART.getCode())) { - WxMerchant merchant = wxMerchantMapper.selectById(record.getMerchantId()); - if (merchant == null) { - return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); - } + record.setBusinessId(merchant.getBusinessId()); + record.setBrand(merchant.getBrand()); + record.setMerchantName(merchant.getName()); + record.setShopType(merchant.getShopType()); + record.setLinkPerson(merchant.getLinkPerson()); + record.setLinkPhone(merchant.getLinkPhone()); + record.setRentShopType(merchant.getRentShopType()); + + //保存物业合同信息 + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + if (record.getCreateType().intValue() == EnumPropertyCreateType.BY_SHOP.getCode().intValue()) { + record.setEndDate(setEndDate(record.getStartDate(),record.getRentalStartDate())); } - if (null == record.getReceivePeriod()) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "付款周期不能为空"); + + Date date = new Date(); + record.setCreatetime(date); + record.setUpdatetime(date); + record.setStatus(EnumRentContractStatus.UNWRITE.getCode()); + record.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode()); + try { + wxPropertyContractMapper.insert(record); + } catch (Exception e) { + logger.error("保存物业合同信息失败,e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } - if (null == record.getLease()) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "租期不能为空"); + return new ResultData(Result.SUCCESS, "保存物业合同信息成功", record); + } + + + @Override + //@Transactional(rollbackFor = {Exception.class}) + public ResultData updateMoney(WxPropertyContract record, Long userId, String userName,boolean writeComplate) { + //保存物业合同信息 + WxPropertyContract wxPropertyContract = wxPropertyContractMapper.selectById(record.getId()); + if (wxPropertyContract == null) { + return new ResultData(ErrorCode.PROPERTY_CONTRACT_IS_NOT_FOUND); } - if (null == record.getPrice()) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "物业费不能为空"); + record.setPrice(StringUtils.isNotBlank(record.getPrice()) ? record.getPrice() : "0"); + record.setDeposit(StringUtils.isNotBlank(record.getDeposit()) ? record.getDeposit() : "0"); + record.setUpdatetime(new Date()); + + //如果是合并合同 物业合同的状态为 意向 + if (writeComplate) { + record.setStatus(EnumRentContractStatus.DRAFT.getCode()); + }else { + record.setStatus(wxPropertyContract.getStatus()); } - if (null == record.getDeposit()) { - return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "押金不能为空"); + record.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode()); + try { + wxPropertyContractMapper.updateById(record); + } catch (Exception e) { + logger.error("更新物业合同信息失败,e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } - //保存物业合同信息 - String message; - boolean hasFlow = true; - if (record.getId() == null) { - hasFlow = false; - final IdWorker idWorker = IdWorker.get(); - record.setId(idWorker.nextId()); - if (record.getCreateType().intValue() == EnumPropertyCreateType.BY_RENT.getCode().intValue()) { - record.setRentalStartDate(wxRentContract.getRentalStartDate()); - record.setRentalEndDate(wxRentContract.getRentalEndDate()); - record.setStartDate(wxRentContract.getStartDate()); - record.setEndDate(wxRentContract.getEndDate()); - }else { - record.setEndDate(setEndDate(record.getStartDate(),record.getRentalStartDate())); - } - - Date date = new Date(); - record.setCreatetime(date); - record.setUpdatetime(date); - record.setStatus(EnumRentContractStatus.UNWRITE.getCode()); - record.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode()); - try { - wxPropertyContractMapper.insert(record); - } catch (Exception e) { - logger.error("保存物业合同信息失败,e:" + e.getMessage()); - throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); - } - //生成预览账单 + record.setFeeStandards(record.getFeesStardarsList()); + + //更新物业合同信息 + if (record.getReceivePeriod() != null && record.getLease() != null && record.getPrice() != null + && !record.getReceivePeriod().equals(0) && !record.getLease().equals(0) && !record.getPrice().equals("0")) { + //删除预账单,重新生成 wxBillPropertyMapper.deleteBillByContract(record); //重新生成 List billList = buildProperty(new WxMerchant(),userId,record,EnumIsPreview.YES.getCode(),true); record.setPreviewBillRentList(billList); + } + + return new ResultData(Result.SUCCESS, "更新物业合同信息成功", record); + } + + @Override + //@Transactional(rollbackFor = {Exception.class}) + public ResultData updateFile(WxPropertyContract record, Long userId, String userName,boolean writeComplate) { + WxPropertyContract wxPropertyContract = wxPropertyContractMapper.selectById(record.getId()); + if (wxPropertyContract == null) { + return new ResultData(ErrorCode.PROPERTY_CONTRACT_IS_NOT_FOUND); + } + record.setUpdatetime(new Date()); - message = "保存物业合同信息成功"; - } else {//更新物业合同信息 - //查询预账单用于展示 - WxBillProperty wxBillRent = new WxBillProperty(); - wxBillRent.setPropertyContractId(record.getId()); - wxBillRent.setSortColumns(BaseEntity.SortField.Period_ASC); - wxBillRent.setIsPreview(EnumIsPreview.YES.getCode()); - wxBillRent.updateTenantInfo(record); - List billList = wxBillPropertyMapper.findList(wxBillRent); - record.setPreviewBillRentList(billList); - - if(!haspreview){ - if (record.getReceivePeriod() != null && record.getLease() != null && record.getPrice() != null - && !record.getReceivePeriod().equals(0) && !record.getLease().equals(0) && !record.getPrice().equals("0")) { - //删除预账单,重新生成 - wxBillPropertyMapper.deleteBillByContract(record); - //重新生成 - billList = buildProperty(new WxMerchant(),userId,record,EnumIsPreview.YES.getCode(),true); - record.setPreviewBillRentList(billList); - } - } - - WxPropertyContract wxPropertyContract = wxPropertyContractMapper.selectById(record.getId()); - if (wxPropertyContract == null) { - return new ResultData(ErrorCode.PROPERTY_CONTRACT_IS_NOT_FOUND); - } - if (record.getCreateType().intValue() == EnumPropertyCreateType.BY_RENT.getCode().intValue()) { - record.setRentalStartDate(wxRentContract.getRentalStartDate()); - record.setRentalEndDate(wxRentContract.getRentalEndDate()); - record.setStartDate(wxRentContract.getStartDate()); - record.setEndDate(wxRentContract.getEndDate()); - }else { - record.setEndDate(setEndDate(record.getStartDate(),record.getRentalStartDate())); - } - - - record.setPrice(StringUtils.isNotBlank(record.getPrice()) ? record.getPrice() : "0"); - record.setDeposit(StringUtils.isNotBlank(record.getDeposit()) ? record.getDeposit() : "0"); - record.setUpdatetime(new Date()); - - //如果是合并合同 物业合同的状态为 意向 - if (writeComplate) { - record.setStatus(EnumRentContractStatus.DRAFT.getCode()); - }else { - record.setStatus(wxPropertyContract.getStatus()); - } - record.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode()); - try { - wxPropertyContractMapper.updateById(record); - } catch (Exception e) { - logger.error("更新物业合同信息失败,e:" + e.getMessage()); - throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); - } - - message = "更新物业合同信息成功"; + //如果是合并合同 物业合同的状态为 意向 + if (writeComplate) { + record.setStatus(EnumRentContractStatus.DRAFT.getCode()); + }else { + record.setStatus(wxPropertyContract.getStatus()); } - record.setFeeStandards(record.getFeesStardarsList()); - return new ResultData(Result.SUCCESS, message, record); + record.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode()); + try { + wxPropertyContractMapper.updateById(record); + } catch (Exception e) { + logger.error("更新物业合同信息失败,e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + return new ResultData(Result.SUCCESS, "更新物业合同信息成功", record); } //跟租金合同保持逻辑一致 diff --git a/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml b/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml index 53ccb9650..eca9b12d9 100644 --- a/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml @@ -88,6 +88,10 @@ and `late_pay_status` = #{latePayStatus} and `parent_bill_id` = #{parentBillId} and `fees_standars_id` = #{feesStandarsId} + and `parent_bill_id` is not null + and `parent_bill_id` null + and `fees_standars_id` is not null + and `fees_standars_id` null and (`last_owe_call_time` is not null and `receive_pay` - `pay` > 0 and status not in (3,6,7) ) @@ -163,6 +167,11 @@ and br.`late_pay_status` = #{latePayStatus} and br.`parent_bill_id` = #{parentBillId} and br.`fees_standars_id` = #{feesStandarsId} + and br.`parent_bill_id` is not null + and br.`parent_bill_id` null + and br.`fees_standars_id` is not null + and br.`fees_standars_id` null + and (br.`last_owe_call_time` is not null and br.`receive_pay` - br.`pay` > 0 and br.status not in (3,6,7) ) and br.property_contract_id in