winter 1 год назад
Родитель
Сommit
dd5e25dfe8
5 измененных файлов: 176 добавлений и 145 удалений
  1. +69
    -10
      mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java
  2. +5
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java
  3. +5
    -2
      mallinkService/src/main/java/com/iformall/service/WxPropertyContractService.java
  4. +88
    -133
      mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java
  5. +9
    -0
      mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml

+ 69
- 10
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);

}


+ 5
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxBillProperty.java Просмотреть файл

@@ -192,4 +192,9 @@ public class WxBillProperty extends WxBillBaseEntity {
@TableField(exist = false)
List<WxBillProperty> childList;
@TableField(exist = false)
private Integer hasParentBillId;
@TableField(exist = false)
private Integer hasFeesStardarsId;
}

+ 5
- 2
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删除实体
*


+ 88
- 133
mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java Просмотреть файл

@@ -248,11 +248,13 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService

@Override
public List<WxBillProperty> 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<WxBillProperty> 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<WxBillProperty> 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);
}
//跟租金合同保持逻辑一致


+ 9
- 0
mallinkService/src/main/resources/mapper/WxBillPropertyMapper.xml Просмотреть файл

@@ -88,6 +88,10 @@
<if test=" null != latePayStatus ">and `late_pay_status` = #{latePayStatus}</if>
<if test=" null != parentBillId ">and `parent_bill_id` = #{parentBillId}</if>
<if test=" null != feesStandarsId ">and `fees_standars_id` = #{feesStandarsId}</if>
<if test=" 1 == hasParentBillId ">and `parent_bill_id` is not null</if>
<if test=" 0 == hasParentBillId ">and `parent_bill_id` null</if>
<if test=" 1 == hasFeesStardarsId ">and `fees_standars_id` is not null</if>
<if test=" 0 == hasFeesStardarsId ">and `fees_standars_id` null</if>
<if test=" 1 == notifyed ">and (`last_owe_call_time` is not null and `receive_pay` - `pay` &gt; 0 and status not in (3,6,7) )</if>
<if test=" null != propertyContractIds ">
@@ -163,6 +167,11 @@
<if test=" null != latePayStatus ">and br.`late_pay_status` = #{latePayStatus}</if>
<if test=" null != parentBillId ">and br.`parent_bill_id` = #{parentBillId}</if>
<if test=" null != feesStandarsId ">and br.`fees_standars_id` = #{feesStandarsId}</if>
<if test=" 1 == hasParentBillId ">and br.`parent_bill_id` is not null</if>
<if test=" 0 == hasParentBillId ">and br.`parent_bill_id` null</if>
<if test=" 1 == hasFeesStardarsId ">and br.`fees_standars_id` is not null</if>
<if test=" 0 == hasFeesStardarsId ">and br.`fees_standars_id` null</if>
<if test=" 1 == notifyed ">and (br.`last_owe_call_time` is not null and br.`receive_pay` - br.`pay` &gt; 0 and br.status not in (3,6,7) )</if>
<if test=" null != propertyContractIds ">
and br.property_contract_id in


Загрузка…
Отмена
Сохранить