winter 1 год назад
Родитель
Сommit
5300049615
7 измененных файлов: 93 добавлений и 50 удалений
  1. +6
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java
  2. +3
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java
  3. +36
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumBillExtraCreateFrom.java
  4. +1
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxAllBillMapper.java
  5. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxRentContractService.java
  6. +36
    -46
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java
  7. +10
    -2
      mallinkService/src/main/resources/mapper/WxAllBillMapper.xml

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

@@ -909,7 +909,12 @@ public class WxRentContractController extends WxContractBaseController {
if(rentContract.getRentStartType()!=null &&rentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){
rentContract.setRentalStartDate(rentContract.getStartDate());
}
List<Date> yearList = wxRentContractService.getYearList(years, 12, rentContract.getRentalStartDate());
//如果有撤铺日
Date endcontract = rentContract.getEndContractTime();
if (null != endcontract) {
endcontract = DateUtils.getDayEnd(endcontract);
}
List<Date> yearList = wxRentContractService.getYearList(years, 12, rentContract.getRentalStartDate(),endcontract);
if (null != yearList && yearList.size() > 0) {
List<WxRentContractYearsVo> retList = new ArrayList<WxRentContractYearsVo>();
Date begin = null;


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

@@ -246,6 +246,9 @@ public class WxAllBill extends TenantEntity {
@io.swagger.annotations.ApiModelProperty(value = "能源抄表ID", name = "energyReadingId")
private Long energyReadingId;
@io.swagger.annotations.ApiModelProperty(value = "账单额外生成来源EnumBillExtraCreateFrom", name = "extraCreateFrom")
private Integer extraCreateFrom;
@io.swagger.annotations.ApiModelProperty(value="楼座号",name="building")
@TableField(exist = false)
public Long building;


+ 36
- 0
mallinkService/src/main/java/com/iformall/enums/EnumBillExtraCreateFrom.java Просмотреть файл

@@ -0,0 +1,36 @@
package com.iformall.enums;


/**
* 账单额外创建来源
*/

public enum EnumBillExtraCreateFrom {
RNET_TIAODIAN_HUISUAN(1,"跳点租金合同汇算差额自动生成")
;

public static EnumBillExtraCreateFrom getEnum(Integer code) {
for (EnumBillExtraCreateFrom value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumBillExtraCreateFrom(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 1
- 0
mallinkService/src/main/java/com/iformall/mapper/WxAllBillMapper.java Просмотреть файл

@@ -23,6 +23,7 @@ public interface WxAllBillMapper extends CommonMapper<WxAllBill, Long> {
void deleteBillByPropertyContract(WxPropertyContract wxPropertyContract);
void deletePreviewBill(WxAllBill wxBillRent);
void deleteNoNeedPayBill(WxAllBill wxBillRent);
void deleteByRentHuiSuan(WxAllBill wxBillRent);
void updatePreviewStatus(WxAllBill record);



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

@@ -85,7 +85,7 @@ public interface WxRentContractService {

void updateApplyStatus(WxRentContract wxRentContract);

public List<Date> getYearList(int years,int month,Date rentalStartDate );
public List<Date> getYearList(int years,int month,Date rentalStartDate,Date endContractTime );
List<WxAllBill> buildRent(MallUserInfo user,WxRentContract rentContract,Integer isPreview,boolean saveDb);

void buildDeposit( TenantEntity tenantEntity,MallUserInfo user,Long rentContractId);


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

@@ -32,6 +32,7 @@ import com.iformall.domain.vo.WxBillSum;
import com.iformall.domain.vo.WxRentContractRevenueSetSalesVo;
import com.iformall.domain.vo.WxRentContractYearsSumVo;
import com.iformall.enums.EnumBillAllType;
import com.iformall.enums.EnumBillExtraCreateFrom;
import com.iformall.enums.EnumBillStatus;
import com.iformall.enums.EnumContractOperationType;
import com.iformall.enums.EnumContractReceivePeriodUnit;
@@ -1023,26 +1024,18 @@ public class WxRentContractServiceImpl implements WxRentContractService {
}
@Override
public List<Date> getYearList(int years,int month,Date rentalStartDate ) {
public List<Date> getYearList(int years,int month,Date rentalStartDate,Date endContractTime ) {
List<Date> yearList = new ArrayList<>();
for (int i = 0; i < years; i++) {
Calendar instance = Calendar.getInstance();
Date startDate;
// //自然月
// if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){
// if(i == 0){ //第一期
// startDate = rentalStartDate;
// }else{
// instance.setTime(rentalStartDate);
// instance.add(Calendar.MONTH, month * i);
// startDate = DateUtils.getFirstDayForCurrMonth(instance.getTime());
// }
// }else{
instance.setTime(rentalStartDate);
instance.add(Calendar.MONTH, month * i);
startDate = instance.getTime();
// }
yearList.add(startDate);
instance.setTime(rentalStartDate);
instance.add(Calendar.MONTH, month * i);
Date startDate = instance.getTime();
if (null != endContractTime && endContractTime.before(startDate)) {
yearList.add(endContractTime);
}else {
yearList.add(startDate);
}
}
return yearList;
}
@@ -1059,7 +1052,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
int billcount = 0;
List<WxAllBill> resultList = new ArrayList<WxAllBill>();
years = priceArrs.length;
List<Date> yearList = getYearList(years,month,rentalStartDate);
List<Date> yearList = getYearList(years,month,rentalStartDate,null);
String shopInfoStr = getShopInfoStr(wxRentContract);
Map<String, Object> resultMap = buildRent(receivePeriod, priceArrs,bussinessManagerPriceArrs,operationManagerPriceArrs, yearList, wxRentContract.getReceivePeriodUnit(), wxRentContract, user, billcount, isPreview, shopInfoStr,saveDb);
@@ -2529,7 +2522,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
}
//计算每一年的基数
String[] priceArrs = WxRentContractHelper.calcuteRentPrice(rentcontract);
List<Date> yearList = this.getYearList(priceArrs.length, 12, rentcontract.getRentalStartDate());
List<Date> yearList = this.getYearList(priceArrs.length, 12, rentcontract.getRentalStartDate(),null);
int yearIndex = 0;
for( int i = 0 ; i < yearList.size() ; i ++) {
Date yearEndDate = yearList.get(i);
@@ -2635,25 +2628,6 @@ public class WxRentContractServiceImpl implements WxRentContractService {
WxRentContractRevenueSales rsq = new WxRentContractRevenueSales();
rsq.updateTenantInfo(rentcontract);
rsq.setRentContractId(rentcontract.getId());
//BigDecimal sum = wxRentContractRevenueSalesMapper.findSumSalesMoney(rsq);
List<Long> billIdList = wxRentContractRevenueSalesMapper.findBillId(rsq);
Date realStartTime = null;
Date realEndTime = null;
if (null != billIdList && billIdList.size() > 0 ) {
WxAllBill abq = new WxAllBill();
abq.updateTenantInfo(rentcontract);
abq.setIds(billIdList);
abq.setStarttime(rentcontract.getYearsBegin());
abq.setEndtime(rentcontract.getYearsEnd());
abq.setSortColumn(" starttime asc");
List<WxAllBill> billList = wxAllBillMapper.findList(abq);
if (null == billList || billList.size() <= 0 ){
return null;
}
realStartTime = billList.get(0).getStarttime();
realEndTime = billList.get(billList.size()-1).getEndtime();
}
BigDecimal sum = wxRentContractRevenueSalesMapper.findSumSalesMoney(rsq);
if (null == sum || sum.compareTo(new BigDecimal(0)) <= 0 ) {
WxRentContractYearsSumVo vo = new WxRentContractYearsSumVo();
@@ -2662,20 +2636,29 @@ public class WxRentContractServiceImpl implements WxRentContractService {
vo.setBillReceivePay("0");
return vo;
}
//删除未支付,未冲抵,未退款的之前的账单
WxAllBill billd = new WxAllBill();
billd.updateTenantInfo(rentcontract);
billd.setRentContractId(rentcontract.getId());
//删除这个时间的,因为可能之前有了账单。,然后撤铺,结束时间虽然不一样,开始时间是一致的。
billd.setStarttimeEqual(rentcontract.getYearsBegin());
billd.setExtraCreateFrom(EnumBillExtraCreateFrom.RNET_TIAODIAN_HUISUAN.getCode());
wxAllBillMapper.deleteByRentHuiSuan(billd);
//计算跳点。
BigDecimal[] jumppays = calcuteReveneuJump(sum, rentcontract,rentcontract.getYearsBegin(), rentcontract.getYearsEnd(),null);
BigDecimal jumpRevenuePay = jumppays[0];
//BigDecimal jumpRentPay = jumppays[1];
//销售收入不满足一年怎么算。
if (realStartTime.equals(rentcontract.getYearsBegin()) && realEndTime.equals(rentcontract.getYearsEnd())) {
int yearDays = DateUtils.daysBetween(rentcontract.getYearsBegin(), rentcontract.getYearsEnd())+1;
if (yearDays == 365) {
}else {
int days = DateUtils.daysBetween(realStartTime, realEndTime)+1;
if (rentcontract.getDayPriceCalcute().intValue() == EnumRentDayPriceCalcute.AVERAGE_DAYS.getCode()) {
jumpRevenuePay = jumpRevenuePay.multiply(new BigDecimal(days)).divide(new BigDecimal(12*rentcontract.getMonthAverageDays()),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
jumpRevenuePay = jumpRevenuePay.multiply(new BigDecimal(yearDays)).divide(new BigDecimal(12*rentcontract.getMonthAverageDays()),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
}else {
jumpRevenuePay = jumpRevenuePay.multiply(new BigDecimal(days)).divide(new BigDecimal(365),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
jumpRevenuePay = jumpRevenuePay.multiply(new BigDecimal(yearDays)).divide(new BigDecimal(365),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP);
}
}
@@ -2687,8 +2670,14 @@ public class WxRentContractServiceImpl implements WxRentContractService {
rentBillq.setBillType(EnumBillAllType.RENT.getCode());
rentBillq.setEnergyFeesId(EnumBillAllType.RENT.getEnergyFeesId());
rentBillq.setIsPreview(EnumYesOrNo.NO.getCode());
rentBillq.setStarttimeEqual(rentcontract.getYearsBegin());
rentBillq.setEndtimeEqual(rentcontract.getYearsEnd());
rentBillq.setStarttime(rentcontract.getYearsBegin());
rentBillq.setEndtime(rentcontract.getYearsEnd());
List<Integer> status = new ArrayList<Integer>();
status.add(EnumBillStatus.WAIT_PAY.getCode());
status.add(EnumBillStatus.PAID.getCode());
status.add(EnumBillStatus.BAD.getCode());
status.add(EnumBillStatus.STOP_TO_SETTLE.getCode());
rentBillq.setStatusList(status);
WxBillSum rentBillSum = wxAllBillMapper.getBillMonthSum(rentBillq);
if (null != rentBillSum) {
receivepay = receivepay.add(rentBillSum.getNeedPayNumber());
@@ -2738,12 +2727,13 @@ public class WxRentContractServiceImpl implements WxRentContractService {
createBillq.setPay("0");
createBillq.setBillType(EnumBillAllType.RENT.getCode());
createBillq.setStarttime(rentcontract.getYearsBegin());
createBillq.setEndtime(rentcontract.getYearsEnd());
createBillq.setEndtime(DateUtils.getDayEnd(rentcontract.getYearsBegin()));
createBillq.setStatus(EnumBillStatus.WAIT_PAY.getCode());
createBillq.setEnergyFeesId(EnumBillAllType.RENT.getEnergyFeesId());
createBillq.setBillRemark("扣点年度汇算自动生成");
createBillq.setIsPreview(EnumYesOrNo.NO.getCode());
createBillq.setRentContractId(rentcontract.getId());
createBillq.setExtraCreateFrom(EnumBillExtraCreateFrom.RNET_TIAODIAN_HUISUAN.getCode());
wxAllBillMapper.insert(createBillq);
}


+ 10
- 2
mallinkService/src/main/resources/mapper/WxAllBillMapper.xml Просмотреть файл

@@ -41,6 +41,7 @@
<result column="parent_bill_id" jdbcType="BIGINT" property="parentBillId"/>
<result column="energy_reading_calcuteId" jdbcType="BIGINT" property="energyReadingCalcuteId" />
<result column="energy_reading_id" jdbcType="BIGINT" property="energyReadingId" />
<result column="extra_create_from" jdbcType="INTEGER" property="extraCreateFrom" />
</resultMap>

@@ -48,7 +49,7 @@
`id`,`tenant_id`,`parent_tenant_id`,`merchant_id`,`rent_shop_type`,`createtime`,`create_by`,`create_by_name`,`updatetime`,`update_by`,`update_by_name`,
`price_detail`,`need_pay`,`receive_pay`,`pay`,`bill_type`,`pay_way`,`pay_date`,`set_off`,`starttime`,`endtime`,`status`,`energy_fees_id`,`return_pay`,
`bill_remark`,`last_owe_call_time`,`last_owe_call_user`,`bussiness_manage_fee_need_pay`,`operating_manage_fee_need_pay`,`shop_id`,`shop_number`,
`is_preview`,`shop_info`,`rent_contract_id`,`property_contract_id`,`parent_bill_id`,`energy_reading_calcuteId`,`energy_reading_id`
`is_preview`,`shop_info`,`rent_contract_id`,`property_contract_id`,`parent_bill_id`,`energy_reading_calcuteId`,`energy_reading_id`,`extra_create_from`
</sql>

<sql id="dynamicWhereConditions">
@@ -71,6 +72,7 @@
<if test=" null != endtime">and `endtime` &lt;= #{endtime}</if>
<if test=" null != starttimeEqual">and `starttime` = #{starttimeEqual}</if>
<if test=" null != endtimeEqual">and `endtime` = #{endtimeEqual}</if>
<if test=" null != extraCreateFrom">and `extra_create_from` = #{extraCreateFrom}</if>
<if test=" null != month and '' != month">
and date_format(starttime,'%Y-%m') &lt;= #{month} and date_format(endtime,'%Y-%m') &gt;= #{month}
</if>
@@ -278,6 +280,12 @@
</if>
</delete>
<delete id="deleteByRentHuiSuan" parameterType="com.iformall.domain.po.WxAllBill">
delete from wx_all_bill where rent_contract_id = #{rentContractId}
and IFNULL(`pay`,'0') &lt;= 0 AND IFNULL(`set_off`,'0') &lt;= 0 and IFNULL(`return_pay`,'0') &lt;= 0
and extra_create_from = #{extraCreateFrom} and `starttime` = #{starttimeEqual}
</delete>

<update id="updatePreviewStatus" parameterType="com.iformall.domain.po.WxAllBill">
update wx_all_bill set is_preview = #{isPreview}
@@ -302,7 +310,7 @@
#{item.starttime},#{item.endtime},#{item.status},#{item.energyFeesId},#{item.returnPay},#{item.billRemark},
#{item.lastOweCallTime},#{item.lastOweCallUser},#{item.bussinessManageFeeNeedPay},#{item.operatingManageFeeNeedPay},
#{item.shopId},#{item.shopNumber},#{item.isPreview},#{item.shopInfo},#{item.rentContractId},#{item.propertyContractId},
#{item.parentBillId},#{item.energyReadingCalcuteId},#{item.energyReadingId}
#{item.parentBillId},#{item.energyReadingCalcuteId},#{item.energyReadingId},#{item.extraCreateFrom}
)
</foreach>
</insert>


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