Просмотр исходного кода

Merge branch 'aliyun_real_xhxu' of https://git.youlane.cn/server/formallProject into aliyun_real_xhxu

release_toaliyun_real
xhxu 5 лет назад
Родитель
Сommit
e27ec6b9c4
4 измененных файлов: 317 добавлений и 2 удалений
  1. +20
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractExtensionController.java
  2. +2
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumRentContractStatus.java
  3. +4
    -0
      mallinkService/src/main/java/com/iformall/service/WxRentContractService.java
  4. +291
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java

+ 20
- 1
mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractExtensionController.java Просмотреть файл

@@ -9,6 +9,7 @@ import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxRentContract;
import com.iformall.domain.po.WxShop;
import com.iformall.enums.EnumContractType;
import com.iformall.enums.EnumFromType;
import com.iformall.enums.EnumRentStartType;
import com.iformall.service.WxRentContractService;
import com.iformall.service.WxRentPropertyContractService;
@@ -102,6 +103,24 @@ public class WxRentContractExtensionController extends BaseController {
if(wxRentContract.getRentStartType()!=null &&wxRentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){
wxRentContract.setRentalStartDate(wxRentContract.getStartDate());
}
return wxRentContractService.save(wxRentContract, user.getId(),user.getName(),oldDate);
return wxRentContractService.extension(wxRentContract, user.getId(),user.getName(),oldDate);
}

@PostMapping("updateMoney")
@SystemControllerLog(description = "租赁合同续签-更新金额")
public ResultData updateMoney(@RequestBody WxRentContract wxRentContract) {
log.debug("[" + getIpAddr() + "] WxRentContractExtensionController::updateMoney");
if(StringUtils.isBlank(wxRentContract.getBusDiscountRatio())){
wxRentContract.setBusDiscountTime(new Integer(0));
}
MallUserInfo user = getUser();
wxRentContract.updateTenantInfo(user);
wxRentContract.setAdjustPeriodHandle();
wxRentContract.setRentPriceHandle();
Date oldDate = wxRentContract.getRentalStartDate();
if(wxRentContract.getRentStartType()!=null &&wxRentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){
wxRentContract.setRentalStartDate(wxRentContract.getStartDate());
}
return wxRentContractService.extensionUpdate(wxRentContract, user.getId(),user.getName(), EnumFromType.OTHER.getCode(),oldDate);
}
}

+ 2
- 1
mallinkService/src/main/java/com/iformall/enums/EnumRentContractStatus.java Просмотреть файл

@@ -15,7 +15,8 @@ public enum EnumRentContractStatus {
CONTRACT_END(5, "正常到期"),
CONTRACT_TERMINATE(6, "提前终止"),
INVALID(7, "作废"),
SUPPLE(8, "补录")
SUPPLE(8, "补录"),
EXTENSION(9,"续签")
;

public static EnumRentContractStatus getEnum(Integer code) {


+ 4
- 0
mallinkService/src/main/java/com/iformall/service/WxRentContractService.java Просмотреть файл

@@ -106,4 +106,8 @@ public interface WxRentContractService {
WxRentContract getByMerchantId(WxRentContract wxRentContract);

List<WxRentContract> getAllContractByMerchantId(WxRentContract wxRentContract);

ResultData extension(WxRentContract record,Long userId,String userName,Date oldRentStartDate);

ResultData extensionUpdate(WxRentContract record, Long userId,String userName,int from,Date oldRentStartDate);
}

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

@@ -2555,4 +2555,295 @@ public class WxRentContractServiceImpl implements WxRentContractService {
public List<WxRentContract> getAllContractByMerchantId(WxRentContract wxRentContract) {
return wxRentContractMapper.getAllContractBymerchantId(wxRentContract);
}

@Transactional(rollbackFor = {Exception.class})
@Override
public ResultData extension(WxRentContract record, Long userId, String userName, Date oldRentStartDate) {
//保存租赁合同信息
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());
int dayType = record.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode()) ? Calendar.DAY_OF_MONTH : Calendar.MONTH;
//计租开始时间
Calendar instance = Calendar.getInstance();
instance.setTime(record.getRentalStartDate());
instance.add(dayType, record.getLease());
instance.add(Calendar.DAY_OF_MONTH, -1);
//起租结束时间
if (!record.getStartDate().equals(record.getRentalStartDate())) {
instance.clear();
instance.setTime(record.getRentalStartDate());
instance.add(Calendar.DAY_OF_MONTH, -1);
record.setEndDate(instance.getTime());
} else {
record.setEndDate(record.getStartDate());
}

if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) {
if(record.getRevenue() == null || record.getRevenue().longValue() <= 0){
record.setPrice(0l);
}else{
if(record.getPayRatio()!=null && record.getPayRatio().intValue() > 0){
record.setPrice(countPrice(record.getPayRatio(),record.getRevenue(),EnumMissTimeType.OTHER.getCode(),record.getAdjustPeriod(),EnumGetRatioFrom.RENT.getCode()));
}else{
int dayCount = record.getReceivePeriod() * 30;
RatioVo ratioVo = getPayRatio(EnumGetRatioFrom.RENT.getCode(),record.getRevenue(),record.getBusDiscountRatio(),record.getBusDiscountTime(),dayCount,record.getReceivePeriod());
//record.setPayRatio(ratioVo.getRatio());
record.setPrice(ratioVo.getPrice());
}
}
} else {
if (StringUtils.isNotEmpty(record.getPriceStr())) {
record.setPrice(new BigDecimal(record.getPriceStr()).multiply(new BigDecimal(100)).longValue());
} else {
record.setPrice(0L);
}
}
if (StringUtils.isNotEmpty(record.getDepositStr())) {
record.setDeposit(new BigDecimal(record.getDepositStr()).multiply(new BigDecimal(100)).longValue());
} else {
record.setDeposit(0L);
}

Date date = new Date();
record.setCreatetime(date);
record.setUpdatetime(date);

List<Long> shopList = Lists.newArrayList();
if (record.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) {
String rentInfo = record.getRentInfo();
JSONArray rentInfoArray = JSONArray.parseArray(rentInfo);
int size = rentInfoArray.size();
if (size == 0) {
return new ResultData(ErrorCode.SHOP_NOT_SELECTED);
}
//查询rent_info 包括 shopId
for (int i = 0; i < size; i++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(i);
WxRentContract wxRentContract = new WxRentContract();
wxRentContract.updateTenantInfo(record);
Long shopId = rentInfoObject.getLong("shopId");
String shopNumber = rentInfoObject.getString("shopNumber");
WxShop wxShop = wxShopMapper.selectById(shopId);
if (wxShop == null) {
return new ResultData(ErrorCode.SHOP_IS_NOT_FOUND.getCode(), "店铺 " + shopNumber + " 已删除");
}
shopList.add(shopId);
}
} else {
WxRentContract wxRentContract = new WxRentContract();
wxRentContract.updateTenantInfo(record);
wxRentContract.setShopId(record.getShopId());
long count = wxRentContractMapper.queryRentContractData(wxRentContract).stream().
filter(rc -> rc.get("status").equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode())
|| rc.get("status").equals(EnumRentContractStatus.RENT_PAID.getCode())
|| rc.get("status").equals(EnumRentContractStatus.CONTRACT_END_SOON.getCode())).count();
if (count > 0) {
return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND);
}
shopList.add(record.getShopId());
}

try {
record.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode());

Date tempDate = record.getRentalStartDate();
record.setRentalStartDate(oldRentStartDate);
wxRentContractMapper.insert(record);
record.setRentalStartDate(tempDate);
} catch (Exception e) {
logger.error("保存租赁合同信息失败,e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}

//有模板,启动审批流,没有,直接生产账单
if (!CollectionUtils.isEmpty(record.getFlowParams())){
if (wxFlowService.getModelByType((Integer) record.getFlowParams().get("businessType"), record) == null
&& record.getMerchantId() != null) {
updateRentContractStatus(record.getId());
}else{
record.getFlowParams().put("businessId", record.getId().toString());
if (record.getMerchantId() != null) {
record.getFlowParams().put("supplement", true); //设置补录
}
wxFlowService.start(record.getFlowParams(), userId, userName, record);

// 合同状态改成续签合同状态
WxRentContract updateRentContract = new WxRentContract();
updateRentContract.setId(record.getId());
updateRentContract.setStatus(EnumRentContractStatus.EXTENSION.getCode());
wxRentContractMapper.updateStatus(updateRentContract);
logger.info("id:{},启动审批流成功, 是否补录:{}", record.getId().toString(), record.getMerchantId() != null);
}
}else{
//审批状态重置
WxRentContract updateRentContract = new WxRentContract();
updateRentContract.setId(record.getId());
updateRentContract.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode());
updateApplyStatus(updateRentContract);
}

//生成预览账单(补录第二步,第三步走编辑)
if (record.getReceivePeriod() != null && record.getLease() != null && record.getPrice() != null
&& !record.getReceivePeriod().equals(0) && !record.getLease().equals(0) && !record.getPrice().equals(0l)) {
wxBillRentMapper.deletePreviewBill(record);
//重新生成
List<WxBillRent> resultList = buildRent(new WxMerchant(), null, record, EnumIsPreview.YES.getCode(),true);
record.setPreviewBillRentList(resultList);
}

EventUtil.publistRentEvent(this, record);
return new ResultData(Result.SUCCESS, "保存租赁合同信息成功", record);
}

@Transactional(rollbackFor = {Exception.class})
@Override
public ResultData extensionUpdate(WxRentContract record, Long userId, String userName, int from, Date oldRentStartDate) {
//查询预账单用于展示
WxBillRent wxBillRent = new WxBillRent();
wxBillRent.setRentContractId(record.getId());
wxBillRent.setSortColumns(BaseEntity.SortField.Period_ASC);
wxBillRent.setIsPreview(EnumIsPreview.YES.getCode());
List<WxBillRent> resultList = wxBillRentMapper.findList(wxBillRent);

//更新
ResultData resultData = getResultDataForExtensionUpdate(record, userId,from,oldRentStartDate);
if (resultData.code != Result.SUCCESS) {
return resultData;
}

if(CollectionUtils.isEmpty(record.getPreviewBillRentList())) {
if (record.getReceivePeriod() != null && record.getLease() != null
&& !record.getReceivePeriod().equals(0) && !record.getLease().equals(0)) {
//删除预账单,重新生成
wxBillRentMapper.deletePreviewBill(record);
resultList = buildRent(new WxMerchant(), null, record, EnumIsPreview.YES.getCode(),true);
}
}

//有模板,启动审批流,没有,直接生产账单
if (!CollectionUtils.isEmpty(record.getFlowParams())) {
if (wxFlowService.getModelByType((Integer) record.getFlowParams().get("businessType"), record) == null
&& record.getMerchantId() != null) {
updateRentContractStatus(record.getId());
}else{
//补录
record.getFlowParams().put("businessId", record.getId().toString());
if (record.getMerchantId() != null) {
record.getFlowParams().put("supplement", true); //设置补录
}
wxFlowService.start(record.getFlowParams(), userId, userName, record);

//合同状态改成补录状态
WxRentContract updateRentContract = new WxRentContract();
updateRentContract.setId(record.getId());
updateRentContract.setStatus(EnumRentContractStatus.SUPPLE.getCode());
wxRentContractMapper.updateStatus(updateRentContract);
logger.info("id:{},启动审批流成功 ,是否补录:{}", record.getId().toString(), record.getMerchantId() != null);
}
}else{
//审批状态重置
WxRentContract updateRentContract = new WxRentContract();
updateRentContract.setId(record.getId());
updateRentContract.setApplyStatus(EnumRentContractAppStatus.DEFAULT.getCode());
updateApplyStatus(updateRentContract);
}

//保存调整金额(预账单调整)
savePreviewBill(record);

WxRentContract wxRentContract = (WxRentContract)resultData.data;
wxRentContract.setPreviewBillRentList(resultList);
return new ResultData(wxRentContract);
}

public ResultData getResultDataForExtensionUpdate(WxRentContract record, Long userId,int from,Date oldRentStartDate) {
//更新租赁合同信息
WxRentContract wxRentContract = wxRentContractMapper.selectById(record.getId());
if (wxRentContract == null) {
return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND);
}
wxRentContract.setBusDiscountTime(record.getBusDiscountTime());
wxRentContract.setBusDiscountRatio(record.getBusDiscountRatio());
wxRentContract.setPayRatio(record.getPayRatio());

int dayType = wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode()) ? Calendar.DAY_OF_MONTH : Calendar.MONTH;

Calendar instance = Calendar.getInstance();
instance.setTime(record.getRentalStartDate());
instance.add(dayType, record.getLease());
instance.add(Calendar.DAY_OF_MONTH, -1);

if(!EnumFromType.SWITCH.getCode().equals(from)){
if (record.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) {
if(record.getPayRatio()!=null && record.getPayRatio().intValue() > 0){
record.setPrice(countPrice(record.getPayRatio(),record.getRevenue(),EnumMissTimeType.OTHER.getCode(),record.getAdjustPeriod(),from));
}else{
int dayCount = record.getReceivePeriod() * 30;
RatioVo ratioVo = getPayRatio(EnumGetRatioFrom.RENT.getCode(),record.getRevenue(),record.getBusDiscountRatio(),record.getBusDiscountTime(),dayCount,record.getReceivePeriod());
//record.setPayRatio(ratioVo.getRatio());
record.setPrice(ratioVo.getPrice());
}
} else {
if (StringUtils.isNotEmpty(record.getPriceStr())) {
record.setPrice(new BigDecimal(record.getPriceStr()).multiply(new BigDecimal(100)).longValue());
} else {
record.setPrice(0L);
}
}
}

if (StringUtils.isNotEmpty(record.getDepositStr())) {
record.setDeposit(new BigDecimal(record.getDepositStr()).multiply(new BigDecimal(100)).longValue());
} else {
record.setDeposit(0L);
}

record.setUpdatetime(new Date());

if (record.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) {
String rentInfo = record.getRentInfo();
JSONArray rentInfoArray = JSONArray.parseArray(rentInfo);
int size = rentInfoArray.size();
if (size == 0) {
return new ResultData(ErrorCode.SHOP_NOT_SELECTED);
}
//查询rent_info 包括 shopId
for (int i = 0; i < size; i++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(i);
WxRentContract wxRentContractQuery = new WxRentContract();
wxRentContractQuery.updateTenantInfo(record);
Long shopId = rentInfoObject.getLong("shopId");
String shopNumber = rentInfoObject.getString("shopNumber");
if (shopId == null) {
return new ResultData(ErrorCode.SHOP_IS_NOT_FOUND.getCode(), "店铺 " + shopNumber + " 已删除");
}
WxShop wxShop = wxShopMapper.selectById(shopId);
if (wxShop == null) {
return new ResultData(ErrorCode.SHOP_IS_NOT_FOUND.getCode(), "店铺 " + shopNumber + " 已删除");
}
}
} else {
WxRentContract wxRentContractQuery = new WxRentContract();
wxRentContractQuery.updateTenantInfo(record);
wxRentContractQuery.setShopId(record.getShopId());
long count = wxRentContractMapper.queryRentContractData(wxRentContract).stream().
filter(rc -> rc.get("status").equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode())
|| rc.get("status").equals(EnumRentContractStatus.RENT_PAID.getCode())
|| rc.get("status").equals(EnumRentContractStatus.CONTRACT_END_SOON.getCode())).count();
if (count > 0) {
return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND);
}
}

try {
Date tempDate = record.getRentalStartDate();
record.setRentalStartDate(oldRentStartDate);
wxRentContractMapper.updateById(record);
record.setRentalStartDate(tempDate);
} catch (Exception e) {
logger.error("更新租赁合同信息失败,e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
return new ResultData(Result.SUCCESS, "保存租赁合同信息成功", wxRentContract);
}
}

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