瀏覽代碼

[租赁合同][修改][正常到期合同自动停用商户]

release_toaliyun_real
gongbiao 7 年之前
父節點
當前提交
5fbf3e42b5
共有 4 個檔案被更改,包括 86 行新增63 行删除
  1. +49
    -53
      mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java
  2. +32
    -5
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java
  3. +3
    -3
      mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml
  4. +2
    -2
      mallinkService/src/main/resources/mapper/WxRentContractMapper.xml

+ 49
- 53
mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java 查看文件

@@ -68,14 +68,14 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
}

@Override
public ResultData getById(Long id){
public ResultData getById(Long id) {

Map<String, Object> result = new HashMap<>();
WxPropertyContract wxPropertyContract = wxPropertyContractMapper.selectByPrimaryKey(id);
if(wxPropertyContract==null){
if (wxPropertyContract == null) {
return new ResultData(ErrorCode.PROPERTY_CONTRACT_IS_NOT_FOUND);
}
wxPropertyContract.setPrice(wxPropertyContract.getPrice() != null ? wxPropertyContract.getPrice(): 0);
wxPropertyContract.setPrice(wxPropertyContract.getPrice() != null ? wxPropertyContract.getPrice() : 0);
wxPropertyContract.setDeposit(wxPropertyContract.getDeposit() != null ? wxPropertyContract.getDeposit() : 0);

result.put("wxPropertyContract", wxPropertyContract);
@@ -102,42 +102,43 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
@Override
public ResultData saveOrUpdate(WxPropertyContract record) {

if(null==record.getShopId()){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"shopId不能为空");
if (null == record.getShopId()) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "shopId不能为空");
}

WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(record.getRentContractId());
if(wxRentContract!=null){
if(wxRentContract.getStatus().equals(EnumRentContractStatus.CONTRACT_TERMINATE.getCode()) ||
if (wxRentContract != null) {
if (wxRentContract.getStatus().equals(EnumRentContractStatus.CONTRACT_END.getCode()) ||
wxRentContract.getStatus().equals(EnumRentContractStatus.CONTRACT_TERMINATE.getCode()) ||
wxRentContract.getStatus().equals(EnumRentContractStatus.WAIT_SIGN.getCode()) ||
wxRentContract.getStatus().equals(EnumRentContractStatus.INVALID.getCode())){
wxRentContract.getStatus().equals(EnumRentContractStatus.INVALID.getCode())) {
return new ResultData(ErrorCode.RENT_CONTRACT_IS_TERMINATED);
}
}
if(null==record.getMerchantId()){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"merchantId不能为空");
if (null == record.getMerchantId()) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "merchantId不能为空");
}
WxMerchant merchant = wxMerchantMapper.selectByPrimaryKey(record.getMerchantId());
if(merchant==null){
if (merchant == null) {
return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND);
}
if(null==record.getReceivePeriod()){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"付款周期不能为空");
if (null == record.getReceivePeriod()) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "付款周期不能为空");
}
if(null==record.getLease()){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"租期不能为空");
if (null == record.getLease()) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "租期不能为空");
}
if(null==record.getPrice()){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"物业费不能为空");
if (null == record.getPrice()) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "物业费不能为空");
}
if(null==record.getDeposit()){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"押金不能为空");
if (null == record.getDeposit()) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "押金不能为空");
}
if(record.getPrice().intValue()<=0){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"物业费要大于0");
if (record.getPrice().intValue() <= 0) {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "物业费要大于0");
}
if(record.getDeposit().intValue()<=0){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR,"押金要大于0");
if (record.getDeposit().intValue() <= 0) {
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR, "押金要大于0");
}

//保存物业合同信息
@@ -157,7 +158,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
wxPropertyContractMapper.insertSelective(record);
//建立账单
if (record.getMerchantId() != null && record.getStatus().equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode())
&& record.getReceivePeriod() != null && record.getDeposit()>0 && record.getPrice()>0) {
&& record.getReceivePeriod() != null && record.getDeposit() > 0 && record.getPrice() > 0) {
WxBillProperty wxBillProperty = new WxBillProperty();
wxBillProperty.setMerchantId(record.getMerchantId());
List<Map<String, Object>> billPropertyList = wxBillPropertyMapper.queryBillPropertyList(wxBillProperty);
@@ -178,7 +179,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
return new ResultData(Result.SUCCESS, "保存物业合同信息成功", record);
} else {//更新物业合同信息
WxPropertyContract wxPropertyContract = wxPropertyContractMapper.selectByPrimaryKey(record.getId());
if(wxPropertyContract==null){
if (wxPropertyContract == null) {
return new ResultData(ErrorCode.PROPERTY_CONTRACT_IS_NOT_FOUND);
}
Calendar instance = Calendar.getInstance();
@@ -186,8 +187,8 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
instance.add(Calendar.MONTH, record.getLease());
instance.add(Calendar.DAY_OF_MONTH, -1);
record.setRentalEndDate(instance.getTime());
record.setPrice(record.getPrice() != null ? record.getPrice(): 0);
record.setDeposit(record.getDeposit() != null ? record.getDeposit(): 0);
record.setPrice(record.getPrice() != null ? record.getPrice() : 0);
record.setDeposit(record.getDeposit() != null ? record.getDeposit() : 0);
record.setUpdatetime(new Date());
try {
wxPropertyContractMapper.updateByPrimaryKeySelective(record);
@@ -275,10 +276,10 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
wxPropertyContract = list.get(0);
int receivePeriod = wxPropertyContract.getReceivePeriod().intValue();
Integer lease = wxPropertyContract.getLease();
int extralease =lease%receivePeriod;
int extracount=extralease>0?1:0;
int paycount = lease / receivePeriod+extracount;
int index = paycount-1;
int extralease = lease % receivePeriod;
int extracount = extralease > 0 ? 1 : 0;
int paycount = lease / receivePeriod + extracount;
int index = paycount - 1;
final IdWorker idWorker = IdWorker.get();
for (int i = 0; i < paycount; i++) {
WxBillProperty wxBillRent = new WxBillProperty();
@@ -306,7 +307,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
instance.add(Calendar.DAY_OF_MONTH, 1);
instance.add(Calendar.MONTH, receivePeriod);
wxBillRent.setEndtime(instance.getTime());
int needpay = wxPropertyContract.getPrice()*receivePeriod;
int needpay = wxPropertyContract.getPrice() * receivePeriod;
if (extracount > 0 && i == index) {
//账单开始时间
instance.clear();
@@ -364,7 +365,6 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
}



@Override
public void deleteById(Long id) {
wxPropertyContractMapper.deleteByPrimaryKey(id);
@@ -416,11 +416,12 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
public ResultData endRentContract(Long id) {

WxPropertyContract wxPropertyContract = wxPropertyContractMapper.selectByPrimaryKey(id);
if(wxPropertyContract==null){
if (wxPropertyContract == null) {
return new ResultData(ErrorCode.PROPERTY_CONTRACT_IS_NOT_FOUND);
}
wxPropertyContract.setStatus(EnumRentContractStatus.CONTRACT_TERMINATE.getCode());
try {
wxPropertyContract.setUpdatetime(new Date());
wxPropertyContractMapper.updateByPrimaryKeySelective(wxPropertyContract);
} catch (MallinkException e) {
logger.info("终止合同失败:" + e.getMessage());
@@ -432,8 +433,8 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService

@Override
public Object getRentContractList(String tenantId) {
Map<String,Object> params =new HashMap<>();
params.put("tenantId",tenantId);
Map<String, Object> params = new HashMap<>();
params.put("tenantId", tenantId);
return wxPropertyContractMapper.getRentContractList(params);
}

@@ -442,7 +443,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
WxPropertyContract wxPropertyContractParam = new WxPropertyContract();
wxPropertyContractParam.setRentContractId(rentContractId);
List<Map<String, Object>> contractData = wxPropertyContractMapper.queryPropertyContractData(wxPropertyContractParam);
if(contractData.size()==0){
if (contractData.size() == 0) {
return new ResultData(ErrorCode.PROPERTY_CONTRACT_IS_NOT_FOUND);
}
Map<String, Object> contractMap = contractData.get(0);
@@ -459,21 +460,19 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService

@Override
public ResultData hasRentContract(Long rentContractId) {
if(null==rentContractId){
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL,"rentContractId不能为空");
if (null == rentContractId) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL, "rentContractId不能为空");
}

WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(rentContractId);
if(null==wxRentContract){
return new ResultData(ErrorCode.RENT_CONTRACT_IS_NOT_FOUND);
}

if(wxRentContract.getStatus().equals(EnumRentContractStatus.CONTRACT_TERMINATE.getCode()) ||
wxRentContract.getStatus().equals(EnumRentContractStatus.WAIT_SIGN.getCode()) ||
wxRentContract.getStatus().equals(EnumRentContractStatus.INVALID.getCode())){
return new ResultData(true);
if (wxRentContract != null) {
if (wxRentContract.getStatus().equals(EnumRentContractStatus.CONTRACT_END.getCode()) ||
wxRentContract.getStatus().equals(EnumRentContractStatus.CONTRACT_TERMINATE.getCode()) ||
wxRentContract.getStatus().equals(EnumRentContractStatus.WAIT_SIGN.getCode()) ||
wxRentContract.getStatus().equals(EnumRentContractStatus.INVALID.getCode())) {
return new ResultData(true);
}
}

return new ResultData(false);
}

@@ -580,9 +579,6 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
e.printStackTrace();
}
}


}

+ 32
- 5
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java 查看文件

@@ -7,10 +7,7 @@ import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.domain.po.*;
import com.iformall.enums.EnumBillRentStatus;
import com.iformall.enums.EnumDelStatus;
import com.iformall.enums.EnumRentContractStatus;
import com.iformall.enums.EnumShopStatus;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
import com.iformall.service.WxMerchantService;
@@ -55,6 +52,10 @@ public class WxRentContractServiceImpl implements WxRentContractService {
@Autowired
WxPropertyContractMapper wxPropertyContractMapper;

@Autowired
WxMerchantMapper wxMerchantMapper;


@Override
public Map<String, Object> listAsPage(WxRentContract record, Integer pageIndex, Integer pageSize) {
Object rentContractStatusInfo = getRentContractStatusInfo(record.getTenantId());
@@ -120,7 +121,8 @@ public class WxRentContractServiceImpl implements WxRentContractService {
long count = wxRentContractMapper.queryRentContractData(wxRentContract).stream().
filter(rc -> !rc.get("status").equals(EnumRentContractStatus.CONTRACT_TERMINATE.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.WAIT_SIGN.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.INVALID.getCode())).count();
&& !rc.get("status").equals(EnumRentContractStatus.INVALID.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.CONTRACT_END.getCode())).count();
if(count>0){
return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND);
}
@@ -154,6 +156,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
filter(rc -> !rc.get("status").equals(EnumRentContractStatus.CONTRACT_TERMINATE.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.WAIT_SIGN.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.INVALID.getCode())
&& !rc.get("status").equals(EnumRentContractStatus.CONTRACT_END.getCode())
&& !rc.get("id").equals(wxRentContract.getId())).count();
if(count>0){
return new ResultData(ErrorCode.RENT_CONTRACT_WITH_SHOP_IS_FOUND);
@@ -416,6 +419,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
}
wxRentContract.setStatus(EnumRentContractStatus.CONTRACT_TERMINATE.getCode());
try {
wxRentContract.setUpdatetime(new Date());
wxRentContractMapper.updateByPrimaryKeySelective(wxRentContract);
//停用商户
wxMerchantService.disable(wxRentContract.getMerchantId());
@@ -430,6 +434,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
if(propertyContract!=null && propertyContractId!=null){
WxPropertyContract propertyContractUpdate = wxPropertyContractMapper.selectByPrimaryKey(propertyContractId);
propertyContractUpdate.setStatus(EnumRentContractStatus.CONTRACT_TERMINATE.getCode());
propertyContractUpdate.setUpdatetime(new Date());
wxPropertyContractMapper.updateByPrimaryKeySelective(propertyContractUpdate);
}
}
@@ -496,9 +501,31 @@ public class WxRentContractServiceImpl implements WxRentContractService {
wxRentContractMapper.updateRentContractEndStatus(wxRentContract);
resultData.put("endCount", endCount);

//合同到期
contractEnd(tenantId);

return resultData;
}

private void contractEnd(String tenantId) {
//查询状态为合同正常到期的数据
WxRentContract wxRentContract = new WxRentContract();
wxRentContract.setTenantId(tenantId);
wxRentContract.setStatus(EnumRentContractStatus.CONTRACT_END.getCode());
List<Map<String, Object>> rentContractData = wxRentContractMapper.queryRentContractData(wxRentContract);
for(int i=0,size=rentContractData.size();i<size;i++){
Map<String, Object> contract = rentContractData.get(i);
Object merchantId = contract.get("merchantId");
if(merchantId!=null){
WxMerchant merchant = wxMerchantMapper.selectByPrimaryKey(merchantId);
Integer status = merchant.getStatus();
if(status.equals(EnumMerchantStatus.VALID.getCode())){
wxMerchantService.disable((Long)merchantId);
}
}
}
}

public static void downLoadFromUrl(String urlStr, String fileName, String savePath) throws IOException {
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();


+ 3
- 3
mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml 查看文件

@@ -147,10 +147,10 @@
</update>
<select id="getRentContractList" parameterType="hashmap" resultType="com.iformall.domain.po.WxRentContract">
select rc.*,s.shop_number from wx_rent_contract rc left join wx_shop s on rc.shop_id=s.id
where rc.status not in(1,6,7) and rc.tenant_id=#{tenantId}
select rc.*,s.shop_number from wx_rent_contract rc inner join wx_shop s on rc.shop_id=s.id
where rc.status not in(1,5,6,7) and rc.tenant_id=#{tenantId}
and rc.id not in (select pc.rent_contract_id from (
select rent_contract_id from wx_property_contract where status not in(1,6,7) and tenant_id=#{tenantId}
select rent_contract_id from wx_property_contract where status not in(1,5,6,7) and tenant_id=#{tenantId}
) pc)
</select>


+ 2
- 2
mallinkService/src/main/resources/mapper/WxRentContractMapper.xml 查看文件

@@ -84,7 +84,7 @@
<select id="queryRentContractData" resultType="hashmap" parameterType="com.iformall.domain.po.WxRentContract">
select rc.id,rc.merchant_name merchantName,rc.rental_start_date rentalStartDate,rc.rental_end_date rentalEndDate,rc.`status`,
rc.price,rc.contract_number contractNumber,s.shop_number shopNumber,f.floor_name floorName,b.building_name buildingName,
rc.lease,rc.filepath,rc.filename,rc.pay_account payAccount,rc.sign_date signDate
rc.lease,rc.filepath,rc.filename,rc.pay_account payAccount,rc.sign_date signDate,rc.merchant_id merchantId
from wx_rent_contract rc
left join wx_shop s on rc.shop_id=s.id
left join wx_mall_floor f on s.floor=f.id
@@ -143,7 +143,7 @@
left join wx_shop s on rc.shop_id=s.id
left join wx_mall_building b on s.building=b.id
left join wx_mall_floor f on s.floor=f.id
where rc.status not in(1,6,7) and rc.tenant_id=#{tenantId}
where rc.status not in(1,5,6,7) and rc.tenant_id=#{tenantId}
</select>

</mapper>

Loading…
取消
儲存