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 4feb556fa..27ec32122 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java @@ -161,7 +161,7 @@ public class WxPropertyContractController extends WxContractBaseController { result.put("pageInfo", pageInfo); return new ResultData(result); } - + @PostMapping("add") public ResultData add(@RequestBody WxPropertyContract wxPropertyContract) { logger.debug("[" + getIpAddr() + "] WxPropertyContractController::add"); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFeesStandardsController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFeesStandardsController.java index 03166d3f0..95fc22120 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFeesStandardsController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFeesStandardsController.java @@ -1,14 +1,24 @@ package com.iformall.controller.market; import com.github.pagehelper.PageInfo; +import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.WxFeesStandards; import com.iformall.domain.po.base.BaseEntity; +import com.iformall.enums.EnumFeesStandardsCalcuteUnit; +import com.iformall.enums.EnumFeesStandardsTimeUnit; +import com.iformall.enums.EnumFeesStandardsType; import com.iformall.service.WxFeesStandardsService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -50,5 +60,52 @@ public class WxFeesStandardsController extends BaseController { WxFeesStandards record = wxFeesStandardsService.getById(id,getTenantInfo().getTenantId()); return new ResultData(record); } - + + @ApiOperation("查询某一个类型费用标砖列表") + @GetMapping("typeList") + public ResultData typeList(Integer type) { + if (null == type) { + return new ResultData(Result.ERROR,"参数错误"); + } + WxFeesStandards record = new WxFeesStandards(); + record.updateTenantInfo(getTenantInfo()); + record.setType(type); + return new ResultData(wxFeesStandardsService.list(record)); + } + + @ApiOperation("查询某一个类型计量单位列表") + @GetMapping("typeCalcuteUnitList") + public ResultData typeCalcuteUnitList(Integer type) { + if (null == type) { + return new ResultData(Result.ERROR,"参数错误"); + } + List enumList = EnumFeesStandardsType.getCalucuteUnites(type); + if (null != enumList) { + Map retMap = new HashMap(); + for (int i = 0 ; i < enumList.size(); i++) { + EnumFeesStandardsCalcuteUnit cu = enumList.get(i); + retMap.put(cu.getCode(), cu.getMessage()); + } + return new ResultData(retMap); + } + return new ResultData(); + } + + @ApiOperation("查询某一个类型时间单位列表") + @GetMapping("typeTimeUnitList") + public ResultData typeTimeUnitList(Integer type) { + if (null == type) { + return new ResultData(Result.ERROR,"参数错误"); + } + List enumList = EnumFeesStandardsType.getTimeUnites(type); + if (null != enumList) { + Map retMap = new HashMap(); + for (int i = 0 ; i < enumList.size(); i++) { + EnumFeesStandardsTimeUnit cu = enumList.get(i); + retMap.put(cu.getCode(), cu.getMessage()); + } + return new ResultData(retMap); + } + return new ResultData(); + } } diff --git a/mallinkAdmin/src/main/resources/db/migration/V202405010.sql b/mallinkAdmin/src/main/resources/db/migration/V202405010.sql new file mode 100644 index 000000000..6b442e3b2 --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V202405010.sql @@ -0,0 +1,7 @@ +ALTER TABLE wx_property_contract ADD COLUMN create_type INT(1) NOT NULL DEFAULT 1 COMMENT '创建方式' ; +ALTER TABLE wx_property_contract ADD COLUMN shop_ids VARCHAR(100) COMMENT '店铺ids,根据店铺创建' ; +ALTER TABLE wx_property_contract ADD COLUMN shop_numbers VARCHAR(100) COMMENT '店铺ids,根据店铺创建' ; +ALTER TABLE wx_rent_contract ADD COLUMN price_detail TEXT COMMENT '费用详细说明' AFTER rent_price; +ALTER TABLE wx_property_contract ADD COLUMN price_detail TEXT COMMENT '费用详细说明' AFTER rent_price; +ALTER TABLE wx_property_contract ADD COLUMN fees_standards_info TEXT COMMENT '其他标准费用信息' ; + diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxFeesStandards.java b/mallinkService/src/main/java/com/iformall/domain/po/WxFeesStandards.java index f5334fb9a..490ecb4de 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxFeesStandards.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxFeesStandards.java @@ -1,7 +1,12 @@ package com.iformall.domain.po; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumFeesStandardsCalcuteUnit; +import com.iformall.enums.EnumFeesStandardsTimeUnit; +import com.iformall.enums.EnumYesOrNo; + import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; @@ -30,12 +35,44 @@ public class WxFeesStandards extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "单价", name = "price") private String price; @io.swagger.annotations.ApiModelProperty(value = "类型EnumFeesStandardsType", name = "type") - private Integer type; + private Integer type; + @io.swagger.annotations.ApiModelProperty(value = "是否一次性费用EnumYesOrNo", name = "fixedPrice") private Integer fixedPrice; + @TableField(exist = false) + private String fixedPriceName; + public String getFixedPriceName() { + if (null != fixedPrice) { + if (fixedPrice.intValue() == EnumYesOrNo.YES.getCode().intValue()) { + return "一次性费用"; + }else { + return "非一次性费用"; + } + } + return ""; + } + @io.swagger.annotations.ApiModelProperty(value = "计量单位EnumFeesStandardsCalcuteUnit【非固定费用使用】", name = "calcuteUnit") private Integer calcuteUnit; + @TableField(exist = false) + private String calcuteUnitName; + public String getCalcuteUnitName() { + if (null != calcuteUnit) { + EnumFeesStandardsCalcuteUnit.getEnum(calcuteUnit).getMessage(); + } + return ""; + } + @io.swagger.annotations.ApiModelProperty(value = "时间单位EnumFeesStandardsTimeUnit【非固定费用使用】", name = "timeUnit") private Integer timeUnit; + @TableField(exist = false) + private String timeUnitName; + public String getTimeUnitName() { + if (null != timeUnit) { + EnumFeesStandardsTimeUnit.getEnum(timeUnit).getMessage(); + } + return ""; + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java index cb27d1b74..8dae42c96 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java @@ -1,5 +1,6 @@ package com.iformall.domain.po; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; @@ -215,6 +216,9 @@ public class WxPropertyContract extends TenantEntity { @TableField(exist = false) private Integer flowHas; + @io.swagger.annotations.ApiModelProperty(value = "其他标准费用信息", name = "feesStandardsInfo") + private String feesStandardsInfo; + @io.swagger.annotations.ApiModelProperty(value = "到期提醒提前天数", name = "outDateNotifyDays") private Integer outDateNotifyDays; @@ -297,11 +301,22 @@ public class WxPropertyContract extends TenantEntity { } return shopList; } + + public List getFeesStardarsList() { + if (StringUtils.isNotBlank(feesStandardsInfo)) { + return JSON.parseArray(feesStandardsInfo, WxFeesStandards.class); + } + return null; + } + @io.swagger.annotations.ApiModelProperty(value = "合同类型", name = "contractType") private Integer contractType; @TableField(exist = false) private List merchantIds; + + @TableField(exist = false) + List feeStandards; } diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumContractReceivePeriodUnit.java b/mallinkService/src/main/java/com/iformall/enums/EnumContractReceivePeriodUnit.java index 5e237147d..e62fa8497 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumContractReceivePeriodUnit.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumContractReceivePeriodUnit.java @@ -41,7 +41,8 @@ public enum EnumContractReceivePeriodUnit { public static Calendar getAfterCalendarDay(Calendar instance,int period,int unit) { if (unit == MONTH.getCode().intValue()) { instance.add(Calendar.MONTH, period); - instance.add(Calendar.DATE, -1); + //instance.add(Calendar.DATE, -1); + instance.add(Calendar.SECOND, -1); //几个季度之后 }else if (unit == QUARTER.getCode().intValue()) { instance = DateUtils.getAfterQuaterStartDay(instance.getTime(), period); @@ -60,7 +61,8 @@ public enum EnumContractReceivePeriodUnit { Calendar instance = Calendar.getInstance(); instance.setTime(firstDay); instance.add(Calendar.MONTH, period); - instance.add(Calendar.DAY_OF_MONTH, -1); + //instance.add(Calendar.DAY_OF_MONTH, -1); + instance.add(Calendar.SECOND, -1); } //几个季度之后 }else if (unit == QUARTER.getCode().intValue()) { @@ -71,4 +73,13 @@ public enum EnumContractReceivePeriodUnit { return date; } + public static void main(String[] args) { + Date date = DateUtils.stringToDate("2024-02-03 00:00:00", DateUtils.DATE_TIME_PATTERN); + Calendar instance = Calendar.getInstance(); + instance.setTime(date); + System.out.println(DateUtils.format(getAfterCalendarDay(instance, 3, 1).getTime(),DateUtils.DATE_TIME_PATTERN)); + System.out.println(DateUtils.format(getAfterCalendarDay(instance, 3, 2).getTime(),DateUtils.DATE_TIME_PATTERN)); + System.out.println(DateUtils.getLastDayForMonth(date)); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxFeesStandardsService.java b/mallinkService/src/main/java/com/iformall/service/WxFeesStandardsService.java index f34649f7f..793f74fc1 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxFeesStandardsService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxFeesStandardsService.java @@ -1,5 +1,7 @@ package com.iformall.service; +import java.util.List; + import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxFeesStandards; @@ -15,6 +17,8 @@ public interface WxFeesStandardsService { * @return */ PageInfo listAsPage(WxFeesStandards record, Integer pageIndex, Integer pageSize); + + List list(WxFeesStandards record); /** * id+tenantId @@ -22,4 +26,6 @@ public interface WxFeesStandardsService { * @return */ WxFeesStandards getById(Long id, String tenantId); + + } diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java index 75713f491..755709504 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractHelper.java @@ -421,8 +421,9 @@ public class WxRentContractHelper { //判断是否满足整月 Calendar instance = Calendar.getInstance(); instance.setTime(startDate); - instance.add(dayType, receivePeriod); - instance.add(Calendar.DATE, -1); +// instance.add(dayType, receivePeriod); +// instance.add(Calendar.DATE, -1); + instance = EnumContractReceivePeriodUnit.getAfterCalendarDay(instance, receivePeriod, dayType); if(sd.format(instance.getTime()).equals(sd.format(endDate))){ int months = WxRentContractHelper.getMonths(sdM.format(startDate)+"-01",sdM.format(DateUtils.getDaySet(endDate,Calendar.DATE,1))+"-01"); needpay = new BigDecimal(months).multiply(priceD).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); @@ -522,8 +523,9 @@ public class WxRentContractHelper { }else{ Calendar instance = Calendar.getInstance(); instance.setTime(start); - instance.add(dayType, receivePeriod); - instance.add(Calendar.DATE, -1); +// instance.add(dayType, receivePeriod); +// instance.add(Calendar.DATE, -1); + instance = EnumContractReceivePeriodUnit.getAfterCalendarDay(instance, receivePeriod, receivePeriod); if(sd.format(instance.getTime()).equals(sd.format(end))){ isFullMonth = true; } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxFeesStandardsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxFeesStandardsServiceImpl.java index e644778f4..b23ea87e3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFeesStandardsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFeesStandardsServiceImpl.java @@ -5,6 +5,9 @@ import com.github.pagehelper.PageInfo; import com.iformall.domain.po.*; import com.iformall.mapper.WxFeesStandardsMapper; import com.iformall.service.*; + +import java.util.List; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -30,5 +33,10 @@ public class WxFeesStandardsServiceImpl implements WxFeesStandardsService { recordQ.setTenantId(tenantId); return wxFeesStandardsMapper.getById(recordQ); } + + @Override + public List list(WxFeesStandards record) { + return wxFeesStandardsMapper.findList(record); + } } 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 4bf590522..14a93fc99 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -669,6 +669,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService BillTimeVo billTimeVo = billTimeVoList.get(i); //计算金额 String needpay = "0"; + //结算其他金额 boolean flag = false; if(yearList.size() > 1) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index b01fe8443..5d2978a0e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -3042,7 +3042,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { list.add(timeVo); //next - start = DateUtils.getDaySet(timeVo.getEndDate(),Calendar.DATE,1); + //start = DateUtils.getDaySet(timeVo.getEndDate(),Calendar.DATE,1); + start = DateUtils.getDaySet(timeVo.getEndDate(),Calendar.SECOND,1); if(start.after(end)) { break; diff --git a/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml b/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml index dfcebaca5..e277e4057 100644 --- a/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxPropertyContractMapper.xml @@ -60,13 +60,14 @@ + `id`,`merchant_id`,`decimal_size`,`price`,`rental_start_date`,`rental_end_date`,`create_type`,`shop_ids`,`shop_numbers`, `sign_date`,`receive_period`,`tenant_id`,`parent_tenant_id`,`filepath`,`status`,`contract_number`,`price_detail`, `deposit`,`pay_date`,`is_del`,`merchant_name`,`brand`,`business_id`,`receive_period_unit`, - `shop_type`,`updatetime`,`createtime`,`rent_area`,`rent_shop_type`, + `shop_type`,`updatetime`,`createtime`,`rent_area`,`rent_shop_type`,`fees_standards_info`, `link_person`,`link_phone`,`pay_account`,`filename`,`lease`,`rent_contract_id`, `start_date`,`end_date`,`apply_status`,`adjust_period`,`business_type`,adjust_ratio,`rent_info`,fixed_price, `file_names`,price_unit,rent_price,subject_name,rent_start_type,`operation_type`,late_pay_ratio,late_pay_day,end_contract_time,out_date_notify_days,out_date_notify_phone