chengf
2025-08-13 f44187822ea6217070c0f6fc585c3feadea03cb1
折扣逻辑修改2025/08/13
22个文件已修改
448 ■■■■ 已修改文件
java110-bean/src/main/java/com/java110/dto/fee/FeeDto.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/owner/OwnerCarDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/po/fee/PayFeePo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/vo/api/fee/ApiFeeDataVo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/fee/FeeServiceDaoImplMapper.xml 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/fee/PayFeeConfigDiscountServiceDaoImplMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/store/ContractServiceDaoImplMapper.xml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-acct/src/main/java/com/java110/acct/cmd/account/QueryCommunityOwnerAccountCmd.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-acct/src/main/java/com/java110/acct/cmd/payment/NativeQrcodePaymentCmd.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/importData/adapt/ImportOwnerCarDataCleaningAdapt.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/api/FeeDiscountApi.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/api/PayFeeConfigDiscountApi.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/bmo/feeDiscountRuleSpec/impl/ComputeFeeDiscountBMOImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/cmd/fee/SaveContractCreateFeeCmd.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/discount/impl/VacantHousingDiscountImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-fee/src/main/java/com/java110/fee/smo/impl/FeeDiscountInnerServiceSMOImpl.java 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-job/src/main/java/com/java110/job/cmd/importCarInout/CarInout.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-job/src/main/java/com/java110/job/importData/adapt/ImportOwnerCarQueueDataAdapt.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-store/src/main/java/com/java110/store/api/ContractApi.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-user/src/main/java/com/java110/user/cmd/owner/QueryOwnerCarsCmd.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot/src/main/java/com/java110/boot/BootApplicationStart.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/fee/FeeDto.java
@@ -49,7 +49,7 @@
    private String[] feeTypeCds;
    private String configId;
    private String[] configIds;
    private String isContractFee;
    //映射关系开关值
    private String val;
@@ -895,4 +895,12 @@
    public void setTargetEndTime(String targetEndTime) {
        this.targetEndTime = targetEndTime;
    }
    public String getIsContractFee() {
        return isContractFee;
    }
    public void setIsContractFee(String isContractFee) {
        this.isContractFee = isContractFee;
    }
}
java110-bean/src/main/java/com/java110/dto/owner/OwnerCarDto.java
@@ -27,7 +27,7 @@
    public static final String CAR_TYPE_CD_TEMP = "1003";
    // public static final String LEASE_TYPE_MONTH = "H"; // 月租车
    public static final String LEASE_TYPE_MONTH = "H"; // 月租车
    // public static final String LEASE_TYPE_SALE = "S"; // 出售车
    // public static final String LEASE_TYPE_INNER = "I"; //内部车
    // public static final String LEASE_TYPE_NO_MONEY = "NM"; //免费车
@@ -35,7 +35,7 @@
    public static final String LEASE_TYPE_TEMP = "T";//临时车
    public static final String LEASE_TYPE_STORE = "S"; // 商铺车
    public static final String LEASE_TYPE_STORE = "SP"; // 商铺车
    public static final String LEASE_TYPE_INNER = "I"; //业委会照顾车
    public static final String LEASE_TYPE_NO_MONEY = "NM"; //小业主产权车
    public static final String LEASE_TYPE_RESERVE = "R"; //租客车
java110-bean/src/main/java/com/java110/po/fee/PayFeePo.java
@@ -38,6 +38,8 @@
    private String ruleId;
    private String isContractFee;
    public String getFeeId() {
        return feeId;
    }
@@ -210,4 +212,12 @@
    public void setRuleId(String ruleId) {
        this.ruleId = ruleId;
    }
    public String getIsContractFee() {
        return isContractFee;
    }
    public void setIsContractFee(String isContractFee) {
        this.isContractFee = isContractFee;
    }
}
java110-bean/src/main/java/com/java110/vo/api/fee/ApiFeeDataVo.java
@@ -57,7 +57,7 @@
    private String preReadingTime;
    private String curReadingTime;
    private String mwPrice;
    private String isContractFee;
    private String carTypeCd;
    private String batchId;
@@ -486,4 +486,12 @@
    public void setUnits(String units) {
        this.units = units;
    }
    public String getIsContractFee() {
        return isContractFee;
    }
    public void setIsContractFee(String isContractFee) {
        this.isContractFee = isContractFee;
    }
}
java110-db/src/main/resources/mapper/fee/FeeServiceDaoImplMapper.xml
@@ -136,7 +136,7 @@
        pfa2.`value` ownerName,t.batch_id,t.batch_id batchId,
        pfc.pay_online payOnline,pfc.scale,pfc.decimal_place decimalPlace,pfc.units,pfc.prepayment_period
        prepaymentPeriod,
        pfrb.rule_id ruleId,pfrb.month_cycle monthCycle
        pfrb.rule_id ruleId,pfrb.month_cycle monthCycle,t.is_contract_fee isContractFee
        from pay_fee t
        INNER join pay_fee_config pfc on t.config_id = pfc.config_id and
        pfc.status_cd = '0'
@@ -235,6 +235,13 @@
        <if test="curYear !=null and curYear != ''">
            and DATE_FORMAT(t.end_time,'%Y') = #{curYear}
        </if>
        <if test="isContractFee != null">
            and t.is_contract_fee = #{isContractFee}
        </if>
        <if test="isContractFee == null">
            and t.is_contract_fee IS NULL
        </if>
        order by t.create_time desc
        <if test="page != -1 and page != null ">
            limit #{page}, #{row}
@@ -274,6 +281,13 @@
        <if test="payerObjId != null and payerObjId != ''">  <!-- 修正原条件中的变量错误 -->
            and t.payer_obj_id = #{payerObjId}
        </if>
        <if test="isContractFee != null">
            and t.is_contract_fee = #{isContractFee}
        </if>
        <if test="isContractFee == null">
            and t.is_contract_fee IS NULL
        </if>
    </select>
    <!-- 修改费用信息 add by wuxw 2018-07-03 -->
@@ -314,6 +328,9 @@
        </if>
        <if test="feeFlag !=null and feeFlag != ''">
            , t.fee_flag= #{feeFlag}
        </if>
        <if test="isContractFee !=null and isContractFee != ''">
            , t.is_contract_fee = #{isContractFee}
        </if>
        where 1=1
        <if test="bId !=null and bId != ''">
@@ -383,6 +400,14 @@
            and t.community_id= #{communityId}
            and pfc.community_id in (#{communityId},'9999')
        </if>
        <if test="isContractFee != null">
            and is_contract_fee = #{isContractFee}
        </if>
        <if test="isContractFee == null">
            and is_contract_fee IS NULL
        </if>
        <if test="bId !=null and bId != ''">
            and t.b_id= #{bId}
        </if>
@@ -814,11 +839,11 @@
    <!-- 批量插入费用 -->
    <insert id="insertFees" parameterType="Map">
        insert into pay_fee (amount,status_cd,income_obj_id,fee_type_cd,secondary_fee_type_cd,start_time,end_time,community_id,b_id,fee_id,
        user_id,payer_obj_id,fee_flag,state,config_id,payer_obj_type,batch_id)
        user_id,payer_obj_id,fee_flag,state,config_id,payer_obj_type,batch_id,is_contract_fee)
        VALUES
        <foreach collection="payFeePos" item="item" separator=",">
            (#{item.amount},'0',#{item.incomeObjId},#{item.feeTypeCd},#{item.secondaryFeeTypeCd},#{item.startTime},#{item.endTime},#{item.communityId},
            '-1',#{item.feeId},#{item.userId},#{item.payerObjId},#{item.feeFlag},#{item.state},#{item.configId},#{item.payerObjType},#{item.batchId})
            '-1',#{item.feeId},#{item.userId},#{item.payerObjId},#{item.feeFlag},#{item.state},#{item.configId},#{item.payerObjType},#{item.batchId},#{item.isContractFee})
        </foreach>
    </insert>
java110-db/src/main/resources/mapper/fee/PayFeeConfigDiscountServiceDaoImplMapper.xml
@@ -9,7 +9,21 @@
        insert into pay_fee_config_discount(
        config_discount_id,config_id,discount_id,community_id,start_time,end_time,paymax_end_time
        ) values (
        #{configDiscountId},#{configId},#{discountId},#{communityId},#{startTime},#{endTime},#{payMaxEndTime}
        #{configDiscountId},#{configId},#{discountId},#{communityId},
                  <if test="startTime == ''">
                      NULL
                  </if>
                    <if test="startTime != ''">
                        #{startTime}
                    </if>
                  ,
                  <if test="endTime == ''">
                      NULL
                  </if>
                    <if test="endTime != ''">
                        #{endTime}
                    </if>
                  ,#{payMaxEndTime}
        )
    </insert>
java110-db/src/main/resources/mapper/store/ContractServiceDaoImplMapper.xml
@@ -157,10 +157,10 @@
        <if test="newBId != null and newBId != ''">
            ,t.b_id = #{newBId}
        </if>
        <if test="aLink !=null and aLink != ''">
        <if test="aLink !=null">
            , t.a_link= #{aLink}
        </if>
        <if test="aContacts !=null and aContacts != ''">
        <if test="aContacts !=null">
            , t.a_contacts= #{aContacts}
        </if>
        <if test="amount !=null and amount != ''">
@@ -178,13 +178,13 @@
        <if test="signingTime !=null and signingTime != ''">
            , t.signing_time= #{signingTime}
        </if>
        <if test="bContacts !=null and bContacts != ''">
        <if test="bContacts !=null">
            , t.b_contacts= #{bContacts}
        </if>
        <if test="partyA !=null and partyA != ''">
            , t.party_a= #{partyA}
        </if>
        <if test="bLink !=null and bLink != ''">
        <if test="bLink !=null">
            , t.b_link= #{bLink}
        </if>
        <if test="partyB !=null and partyB != ''">
@@ -229,10 +229,10 @@
        <if test="partyC !=null and partyC != ''">
            , t.party_c= #{partyC}
        </if>
        <if test="cLink !=null and cLink != ''">
        <if test="cLink !=null">
            , t.c_link= #{cLink}
        </if>
        <if test="cContacts !=null and cContacts != ''">
        <if test="cContacts !=null">
            , t.c_contacts= #{cContacts}
        </if>
        where 1=1
service-acct/src/main/java/com/java110/acct/cmd/account/QueryCommunityOwnerAccountCmd.java
@@ -112,6 +112,9 @@
        String ownerId = "";
        FeeDto feeDto = new FeeDto();
        feeDto.setFeeId(feeId);
        if(reqJson.containsKey("isContractFee")){
            feeDto.setIsContractFee(reqJson.getString("isContractFee").equals("O") ? reqJson.getString("isContractFee"):null);
        }
        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
        Assert.listOnlyOne(feeDtos, "查询费用信息错误!");
        //获取付费对象类型(3333 房屋 6666 是车位)
service-acct/src/main/java/com/java110/acct/cmd/payment/NativeQrcodePaymentCmd.java
@@ -82,7 +82,8 @@
        CommonCache.setValue("nativeQrcodePayment_" + token, reqJson.toJSONString(), CommonCache.PAY_DEFAULT_EXPIRE_TIME);
        JSONObject result = new JSONObject();
//        result.put("codeUrl", UrlCache.getOwnerUrl() + "/#/pages/fee/qrCodeCashier?qrToken=" + token);
        result.put("codeUrl", UrlCache.getOwnerUrl() + "/#/pages/fee/qrCodeCashier");
        result.put("codeUrl", "https://ccloud.fuioupay.com/decca/native?token=20250812201258114913");
//        result.put("codeUrl", UrlCache.getOwnerUrl() + "/#/pages/fee/qrCodeCashier");
        ResponseEntity<String> responseEntity = ResultVo.createResponseEntity(result);
service-api/src/main/java/com/java110/api/importData/adapt/ImportOwnerCarDataCleaningAdapt.java
@@ -62,32 +62,38 @@
//            Assert.hasValue(os[2], (osIndex + 1) + "手机号不能为空");
//            Assert.hasValue(os[3], (osIndex + 1) + "车辆品牌不能为空");
//            Assert.hasValue(os[4], (osIndex + 1) + "车辆类型不能为空");
//            Assert.hasValue(os[5], (osIndex + 1) + "颜色不能为空");
//            Assert.hasValue(os[6], (osIndex + 1) + "停车场不能为空");
//            Assert.hasValue(os[7], (osIndex + 1) + "车位不能为空");
            Assert.hasValue(os[8], (osIndex + 1) + "起租时间不能为空");
            Assert.hasValue(os[9], (osIndex + 1) + "截止时间不能为空");
//            Assert.hasValue(os[10], (osIndex + 1) + "停车场类型不能为空");
            Assert.hasValue(os[11], (osIndex + 1) + "车位类型不能为空");
            String startTime = excelDoubleToDate(os[8].toString());
            String endTime = excelDoubleToDate(os[9].toString());
            Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行开始时间格式错误 请填写YYYY-MM-DD文本格式");
            Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD文本格式");
//            Assert.hasValue(os[5], (osIndex + 1) + "车牌类型不能为空");
//            Assert.hasValue(os[6], (osIndex + 1) + "颜色不能为空");
//            Assert.hasValue(os[7], (osIndex + 1) + "停车场不能为空");
//            Assert.hasValue(os[8], (osIndex + 1) + "车位不能为空");
            if(os.length > 8) {
                Assert.hasValue(os[9], (osIndex + 1) + "起租时间不能为空");
            }else if(os.length > 9) {
                Assert.hasValue(os[10], (osIndex + 1) + "截止时间不能为空");
            }else if(os.length > 11) {
                Assert.hasValue(os[12], (osIndex + 1) + "车位类型不能为空");
            }
//            Assert.hasValue(os[11], (osIndex + 1) + "停车场类型不能为空");
            String startTime = os.length >= 9 && os[9] != null ? excelDoubleToDate(os[9].toString()):"";
            String endTime = os.length >= 10 && os[10] != null ? excelDoubleToDate(os[10].toString()):"";
//            Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行开始时间格式错误 请填写YYYY-MM-DD文本格式");
//            Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD文本格式");
            importOwnerCar = new OwnerCarDto();
            importOwnerCar.setCarNum(os[0].toString().trim());
            importOwnerCar.setOwnerName(os[1].toString().trim());
            importOwnerCar.setLink(os[2] == null ? "" : os[2].toString().trim());
            importOwnerCar.setCarBrand(os[3] == null ? "" : os[3].toString().trim());
            importOwnerCar.setCarType(os[4] == null ? "" : os[4].toString().trim());
            importOwnerCar.setCarColor(os[5] == null ? "" : os[5].toString().trim());
            importOwnerCar.setAreaNum(os[6] == null ? "" : os[6].toString().trim());
            importOwnerCar.setLink(os.length <= 2 || os[2] == null ? "" : os[2].toString().trim());
            importOwnerCar.setCarBrand(os.length <= 3 || os[3] == null ? "" : os[3].toString().trim());
            importOwnerCar.setCarType(os.length <= 4 || os[4] == null ? "" : os[4].toString().trim());
            importOwnerCar.setLeaseType(os.length <= 5 || os[5] == null ? "" : os[5].toString().trim());
            importOwnerCar.setCarColor(os.length <= 6 || os[6] == null ? "" : os[6].toString().trim());
            importOwnerCar.setAreaNum(os.length <= 7 || os[7] == null ? "" : os[7].toString().trim());
            //获取车位
            String parkingLot = os[7] == null ? "" : os[7].toString().trim();
            String parkingLot = os.length <= 8 || os[8] == null ? "" : os[8].toString().trim();
            importOwnerCar.setNum(parkingLot);
            importOwnerCar.setLogStartTime(startTime);
            importOwnerCar.setLogEndTime(endTime);
            importOwnerCar.setTypeCd(os[10] == null ? "" : os[10].toString().trim());
            importOwnerCar.setSpaceSate(os[11].toString().trim());
            importOwnerCar.setTypeCd(os.length <= 11 || os[11] == null ? "" : os[11].toString().trim());
            importOwnerCar.setSpaceSate(os.length <= 12 || os[12] == null ? "" : os[12].toString().trim());
            importOwnerCar.setCommunityId(result.getCommunityId());
            importOwnerCar.setUserId(result.getUserId());
            ownerCars.add(importOwnerCar);
service-fee/src/main/java/com/java110/fee/api/FeeDiscountApi.java
@@ -27,6 +27,8 @@
import org.springframework.web.bind.annotation.RestController;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
@RestController
@@ -199,16 +201,25 @@
//        custEndTime = "2025-12-20";
//        custStartTime = "2025-12-11";
        if (cycles == 105){
            if(custStartTime == null){
                throw new IllegalArgumentException("请选择开始时间");
            if(custStartTime == null || custEndTime == null){
                throw new IllegalArgumentException("请选择时间段");
            }
            if(custEndTime == null){
                throw new IllegalArgumentException("请选择结束时间");
            }
            cycles = DateUtil.dayCompare(DateUtil.getDateFromStringB(custStartTime), DateUtil.getDateFromStringB(custEndTime));
            return computeFeeDiscountBMOImpl.compute(feeId, communityId, cycles, payerObjId, payerObjType, custStartTime, page, row, custEndTime);
        }
        return computeFeeDiscountBMOImpl.compute(feeId, communityId, cycles, payerObjId, payerObjType, endTime, page, row);
        if(cycles == 103){
            return computeFeeDiscountBMOImpl.compute(feeId, communityId, 105, payerObjId, payerObjType, endTime.split(" ")[0], page, row, custEndTime);
        }
        Calendar c = Calendar.getInstance();
        if(endTime == null){
            c.setTime(DateUtil.getDateFromStringB(endTime));
            c.add(Calendar.MONTH, 1);
        }else{
            c.setTime(DateUtil.getDateFromStringB(endTime));
            c.add(Calendar.MONTH, (int) cycles);
        }
        custStartTime = endTime;
        custEndTime = DateUtil.getFormatTimeStringB(c.getTime());
        return computeFeeDiscountBMOImpl.compute(feeId, communityId, 105, payerObjId, payerObjType, custStartTime, page, row, custEndTime);
    }
service-fee/src/main/java/com/java110/fee/api/PayFeeConfigDiscountApi.java
@@ -44,8 +44,8 @@
        Assert.hasKeyAndValue(reqJson, "configId", "请求报文中未包含configId");
        Assert.hasKeyAndValue(reqJson, "discountId", "请求报文中未包含discountId");
        Assert.hasKeyAndValue(reqJson, "communityId", "请求报文中未包含communityId");
        Assert.hasKeyAndValue(reqJson, "startTime", "请求报文中未包含startTime");
        Assert.hasKeyAndValue(reqJson, "endTime", "请求报文中未包含endTime");
//        Assert.hasKeyAndValue(reqJson, "startTime", "请求报文中未包含startTime");
//        Assert.hasKeyAndValue(reqJson, "endTime", "请求报文中未包含endTime");
        PayFeeConfigDiscountPo payFeeConfigDiscountPo = BeanConvertUtil.covertBean(reqJson, PayFeeConfigDiscountPo.class);
        String paymaxEndTime = reqJson.getString("payMaxEndTime");
service-fee/src/main/java/com/java110/fee/bmo/feeDiscountRuleSpec/impl/ComputeFeeDiscountBMOImpl.java
@@ -68,6 +68,16 @@
        //缴费开始时间为上月到期时间
        feeDetailDto.setStartTime(DateUtil.getDateFromStringB(endTime));
        feeDetailDto.setEndTime(DateUtil.getDateFromStringB(custEndTime));
        if(Double.parseDouble(feeDetailDto.getCycles())==105){
            double cycle = (DateUtil.dayCompare(
                    feeDetailDto.getStartTime(),
                    feeDetailDto.getEndTime()
            ));
            feeDetailDto.setRow(row);
            feeDetailDto.setPage(page);
            List<ComputeDiscountDto> computeDiscountDtos = feeDiscountInnerServiceSMOImpl.computeDiscount(feeDetailDto,cycle);
            return ResultVo.createResponseEntity(computeDiscountDtos);
        }
        feeDetailDto.setRow(row);
        feeDetailDto.setPage(page);
        List<ComputeDiscountDto> computeDiscountDtos = feeDiscountInnerServiceSMOImpl.computeDiscount(feeDetailDto);
service-fee/src/main/java/com/java110/fee/cmd/fee/SaveContractCreateFeeCmd.java
@@ -179,7 +179,10 @@
        int saveFlag = 0;
        for (int roomIndex = 0; roomIndex < contractDtos.size(); roomIndex++) {
            curFailRoomCount++;
            feePos.add(BeanConvertUtil.covertBean(feeBMOImpl.addContractFee(contractDtos.get(roomIndex), reqJson, context), PayFeePo.class));
            PayFeePo payFeePo = BeanConvertUtil.covertBean(feeBMOImpl.addContractFee(contractDtos.get(roomIndex), reqJson, context), PayFeePo.class);
            payFeePo.setIsContractFee("O");
            payFeePo.setSecondaryFeeTypeCd(reqJson.getString("secondaryFeeTypeCd"));
            feePos.add(payFeePo);
            feeAttrsPos.add(feeBMOImpl.addFeeAttr(reqJson, context, FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME,
                    reqJson.getString("endTime")));
            if (!StringUtil.isEmpty(contractDtos.get(roomIndex).getObjId())) {
service-fee/src/main/java/com/java110/fee/discount/impl/VacantHousingDiscountImpl.java
@@ -62,7 +62,7 @@
            }
        }
        //缴费周期小于空置房打折规则至少应缴月份,就不享受打折优惠
        if (feeDiscountDto.getCycles() < month) {
        if (Double.parseDouble(feeDiscountDto.getDiscountDesc()) < month) {
            ComputeDiscountDto computeDiscountDto = new ComputeDiscountDto();
            computeDiscountDto.setDiscountId(feeDiscountDto.getDiscountId());
            computeDiscountDto.setDiscountType(FeeDiscountDto.DISCOUNT_TYPE_DV);
service-fee/src/main/java/com/java110/fee/smo/impl/FeeDiscountInnerServiceSMOImpl.java
@@ -256,6 +256,136 @@
        return computeDiscountDtoList;
    }
    public List<ComputeDiscountDto> computeDiscount(@RequestBody FeeDetailDto feeDetailDto,double useCycle) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Calendar c = Calendar.getInstance();
        List<ComputeDiscountDto> computeDiscountDtos = new ArrayList<>();
        FeeDto feeDto = new FeeDto();
        feeDto.setFeeId(feeDetailDto.getFeeId());
        feeDto.setCommunityId(feeDetailDto.getCommunityId());
        feeDto.setState(FeeDto.STATE_DOING);
        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
        Assert.listOnlyOne(feeDtos, "费用不存在");
        PayFeeConfigDiscountDto payFeeConfigDiscountDto = new PayFeeConfigDiscountDto();
        payFeeConfigDiscountDto.setConfigId(feeDtos.get(0).getConfigId());
        payFeeConfigDiscountDto.setRow(feeDetailDto.getRow());
        payFeeConfigDiscountDto.setPage(feeDetailDto.getPage());
        payFeeConfigDiscountDto.setCommunityId(feeDetailDto.getCommunityId());
        payFeeConfigDiscountDto.setStatusCd("0");
        Date currentTime = new Date();
        payFeeConfigDiscountDto.setCurrentTime(currentTime);
        //根据房屋ID,去折扣申请表查询是否有折扣
        ApplyRoomDiscountDto applyRoomDiscountDto = new ApplyRoomDiscountDto();
        //审核已通过
        applyRoomDiscountDto.setState("4");
        //是否可用状态标识(0表示在用;1表示不可用)
        applyRoomDiscountDto.setInUse("0");
        //小区ID
        applyRoomDiscountDto.setCommunityId(feeDetailDto.getCommunityId());
        //房屋id
        applyRoomDiscountDto.setRoomId(feeDetailDto.getPayerObjId());
        applyRoomDiscountDto.setFeeId(feeDetailDto.getFeeId());
        List<ApplyRoomDiscountDto> applyRoomDiscountDtos = applyRoomDiscountInnerServiceSMOImpl.queryApplyRoomDiscounts(applyRoomDiscountDto);
        if (!ListUtil.isNull(applyRoomDiscountDtos)) {
            computeApplyRoomDiscount(feeDetailDto, simpleDateFormat, c, computeDiscountDtos,useCycle);
            //取出开关映射的值
            String value = MappingCache.getValue(DOMAIN_COMMON, DISCOUNT_MODE);
            List<ComputeDiscountDto> computeDiscountDtoList = new ArrayList<>();
            for (ComputeDiscountDto computeDiscountDto : computeDiscountDtos) {
                computeDiscountDto.setValue(value);
                computeDiscountDto.setDiscountPrice(
                        MoneyUtil.computePriceScale(
                                computeDiscountDto.getDiscountPrice(),
                                feeDtos.get(0).getScale(),
                                Integer.parseInt(feeDtos.get(0).getDecimalPlace())
                        )
                );
                if (!StringUtil.isEmpty(computeDiscountDto.getDiscountType()) && "3003".equals(computeDiscountDto.getDiscountType())) {
                    computeDiscountDto.setArdId(feeDetailDto.getArdId());
                }
                computeDiscountDtoList.add(computeDiscountDto);
            }
            return computeDiscountDtos;
        }
        //根据费用项查询折扣(该费用项下的所有折扣信息)
        List<PayFeeConfigDiscountDto> payFeeConfigDiscountDtos =
                payFeeConfigDiscountInnerServiceSMOImpl.queryPayFeeConfigDiscounts(payFeeConfigDiscountDto);
        c.setTime(feeDetailDto.getStartTime());
        feeDetailDto.setCycles(useCycle+"");
        double mon = Double.parseDouble(feeDetailDto.getCycles());
        c.add(Calendar.MONTH, (int) mon);
        //获取缴费结束时间
        Date finishTime = feeDetailDto.getEndTime();
        for (PayFeeConfigDiscountDto tmpPayFeeConfigDiscountDto : payFeeConfigDiscountDtos) {
            //获取缴费最大截止时间
            Date payMaxEndTime = tmpPayFeeConfigDiscountDto.getPayMaxEndTime();
            FeeDiscountDto feeDiscountDto = new FeeDiscountDto();
            feeDiscountDto.setDiscountId(tmpPayFeeConfigDiscountDto.getDiscountId());
            //查询打折表
            List<FeeDiscountDto> feeDiscountInfo = BeanConvertUtil.covertBeanList(feeDiscountServiceDaoImpl.getFeeDiscountInfo(BeanConvertUtil.beanCovertMap(feeDiscountDto)), FeeDiscountDto.class);
            //Assert.listOnlyOne(feeDiscountInfo, "查询打折表错误!");
            if(ListUtil.isNull(feeDiscountInfo)){
                continue;
            }
            FeeDiscountRuleDto feeDiscountRuleDto = new FeeDiscountRuleDto();
            feeDiscountRuleDto.setRuleId(feeDiscountInfo.get(0).getRuleId());
            //查询打折规则表
            List<FeeDiscountRuleDto> feeDiscountRuleDtos = feeDiscountRuleInnerServiceSMOImpl.queryFeeDiscountRules(feeDiscountRuleDto);
            //Assert.listOnlyOne(feeDiscountRuleDtos, "查询打折规则表错误!");
            if(ListUtil.isNull(feeDiscountRuleDtos)){
                continue;
            }
            if (!StringUtil.isEmpty(feeDiscountRuleDtos.get(0).getBeanImpl()) && feeDiscountRuleDtos.get(0).getBeanImpl().equals("reductionMonthFeeRule")) { //赠送规则
                FeeDiscountSpecDto feeDiscountSpecDto = new FeeDiscountSpecDto();
                feeDiscountSpecDto.setDiscountId(tmpPayFeeConfigDiscountDto.getDiscountId());
                feeDiscountSpecDto.setSpecId(SPEC_RATE);
                //查询打折规格
                List<FeeDiscountSpecDto> feeDiscountSpecDtos = feeDiscountSpecInnerServiceSMOImpl.queryFeeDiscountSpecs(feeDiscountSpecDto);
                //Assert.listOnlyOne(feeDiscountSpecDtos, "查询打折规格表错误!");
                if(ListUtil.isNull(feeDiscountSpecDtos)){
                    continue;
                }
                //获取赠送月份
                String specValue = feeDiscountSpecDtos.get(0).getSpecValue();
                Calendar cal = Calendar.getInstance();
                cal.setTime(finishTime);
                cal.add(Calendar.MONTH, Integer.parseInt(specValue));
                finishTime = cal.getTime();
            }
            if (payMaxEndTime == null) {
                doCompute(tmpPayFeeConfigDiscountDto, Double.parseDouble(feeDetailDto.getCycles()), computeDiscountDtos, feeDetailDto.getFeeId());
            } else if (payMaxEndTime.getTime() >= finishTime.getTime()) {
                doCompute(tmpPayFeeConfigDiscountDto, Double.parseDouble(feeDetailDto.getCycles()), computeDiscountDtos, feeDetailDto.getFeeId());
            } else {
                continue;
            }
            finishTime = c.getTime();
        }
        computeApplyRoomDiscount(feeDetailDto, simpleDateFormat, c, computeDiscountDtos);
        //取出开关映射的值
        String value = MappingCache.getValue(DOMAIN_COMMON, DISCOUNT_MODE);
        List<ComputeDiscountDto> computeDiscountDtoList = new ArrayList<>();
        for (ComputeDiscountDto computeDiscountDto : computeDiscountDtos) {
            computeDiscountDto.setValue(value);
            computeDiscountDto.setDiscountPrice(
                    MoneyUtil.computePriceScale(
                            computeDiscountDto.getDiscountPrice(),
                            feeDtos.get(0).getScale(),
                            Integer.parseInt(feeDtos.get(0).getDecimalPlace())
                    )
            );
            if (!StringUtil.isEmpty(computeDiscountDto.getDiscountType()) && "3003".equals(computeDiscountDto.getDiscountType())) {
                computeDiscountDto.setArdId(feeDetailDto.getArdId());
            }
            computeDiscountDtoList.add(computeDiscountDto);
        }
        return computeDiscountDtoList;
    }
    private void computeApplyRoomDiscount(@RequestBody FeeDetailDto feeDetailDto, SimpleDateFormat simpleDateFormat, Calendar c, List<ComputeDiscountDto> computeDiscountDtos) {
        if (!StringUtil.isEmpty(feeDetailDto.getPayerObjType()) && FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDetailDto.getPayerObjType())) {
            //根据房屋ID,去折扣申请表查询是否有折扣
@@ -297,6 +427,7 @@
                PayFeeConfigDiscountDto payFeeConfigDiscount = new PayFeeConfigDiscountDto();
                payFeeConfigDiscount.setCommunityId(applyRoomDiscountDtos.get(0).getCommunityId());
                payFeeConfigDiscount.setDiscountId(discountId);
                if(month == 105){
                if(applyRoomDiscountDtos.get(0).getStartTime() == null){
                    payFeeConfigDiscount.setStartTime(feeDetailDto.getStartTime());
                }else if(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getStartTime()).before(feeDetailDto.getStartTime())){
@@ -311,17 +442,87 @@
                }else{
                    payFeeConfigDiscount.setEndTime(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getEndTime()));
                }
                double cycle =
                    month =
                        DateUtil.dayCompare(
                                payFeeConfigDiscount.getStartTime(),
                                payFeeConfigDiscount.getEndTime()
                        );
                doComputeB(payFeeConfigDiscount, cycle, computeDiscountDtos, feeDetailDto.getFeeId());
                }
                doComputeB(payFeeConfigDiscount, month, computeDiscountDtos, feeDetailDto.getFeeId(),month);
            }
        }
    }
    private void doComputeB(PayFeeConfigDiscountDto tmpPayFeeConfigDiscountDto, double cycles, List<ComputeDiscountDto> computeDiscountDtos, String feeId) {
    private void computeApplyRoomDiscount(@RequestBody FeeDetailDto feeDetailDto, SimpleDateFormat simpleDateFormat, Calendar c, List<ComputeDiscountDto> computeDiscountDtos,double useCycle) {
        if (!StringUtil.isEmpty(feeDetailDto.getPayerObjType()) && FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDetailDto.getPayerObjType())) {
            //根据房屋ID,去折扣申请表查询是否有折扣
            ApplyRoomDiscountDto applyRoomDiscountDto = new ApplyRoomDiscountDto();
            //审核已通过
            applyRoomDiscountDto.setState("4");
            //是否可用状态标识(0表示在用;1表示不可用)
            applyRoomDiscountDto.setInUse("0");
            //小区ID
            applyRoomDiscountDto.setCommunityId(feeDetailDto.getCommunityId());
            //房屋id
            applyRoomDiscountDto.setRoomId(feeDetailDto.getPayerObjId());
            //开始时间
//            applyRoomDiscountDto.setStartTime(simpleDateFormat.format(feeDetailDto.getStartTime()));
            //结束时间
            c.setTime(feeDetailDto.getStartTime());
//            c.add(Calendar.DAY_OF_MONTH, 2);//开始时间,添加1,2天的冗余,只要比5小即可
//            applyRoomDiscountDto.setStartTime(simpleDateFormat.format(c.getTime()));//重新设置开始时间
            double month = useCycle;
//            if(month == 105){
//                return;
//            }
            c.add(Calendar.MONTH, (int) month);
//            c.add(Calendar.DAY_OF_MONTH, -5);//这里根据设置时间荣誉5天
            Date endTime = c.getTime();
//            applyRoomDiscountDto.setEndTime(simpleDateFormat.format(endTime));
            applyRoomDiscountDto.setFeeId(feeDetailDto.getFeeId());
            //查询折扣申请表
            List<ApplyRoomDiscountDto> applyRoomDiscountDtos = applyRoomDiscountInnerServiceSMOImpl.queryApplyRoomDiscounts(applyRoomDiscountDto);
            //判断查询的折扣申请表是否有数据
            if (applyRoomDiscountDtos != null && applyRoomDiscountDtos.size() > 0) {
                //获取优惠id
                String discountId = applyRoomDiscountDtos.get(0).getDiscountId();
                String ardId = applyRoomDiscountDtos.get(0).getArdId();
                feeDetailDto.setArdId(ardId);
                PayFeeConfigDiscountDto payFeeConfigDiscount = new PayFeeConfigDiscountDto();
                payFeeConfigDiscount.setCommunityId(applyRoomDiscountDtos.get(0).getCommunityId());
                payFeeConfigDiscount.setDiscountId(discountId);
                if(feeDetailDto.getCycles().equals("105.0") ){
                    if(applyRoomDiscountDtos.get(0).getStartTime() == null){
                        payFeeConfigDiscount.setStartTime(feeDetailDto.getStartTime());
                    }else if(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getStartTime()).before(feeDetailDto.getStartTime()) || DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getStartTime()).equals(feeDetailDto.getStartTime())){
                        payFeeConfigDiscount.setStartTime(feeDetailDto.getStartTime());
                    }else{
                        payFeeConfigDiscount.setStartTime(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getStartTime()));
                    }
                    if(applyRoomDiscountDtos.get(0).getEndTime() == null){
                        payFeeConfigDiscount.setEndTime(endTime);
                    }else if(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getEndTime()).after(feeDetailDto.getEndTime()) || DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getEndTime()).equals(feeDetailDto.getEndTime())){
                        payFeeConfigDiscount.setEndTime(feeDetailDto.getEndTime());
                    }else{
                        payFeeConfigDiscount.setEndTime(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getEndTime()));
                    }
                    month =
                            DateUtil.dayCompare(
                                    payFeeConfigDiscount.getStartTime(),
                                    payFeeConfigDiscount.getEndTime()
                            );
                }
                doComputeB(payFeeConfigDiscount, month, computeDiscountDtos, feeDetailDto.getFeeId(),useCycle);
            }
        }
    }
    private void doComputeB(PayFeeConfigDiscountDto tmpPayFeeConfigDiscountDto, double cycles, List<ComputeDiscountDto> computeDiscountDtos, String feeId, double useCycle) {
        FeeDiscountDto feeDiscountDto = new FeeDiscountDto();
        feeDiscountDto.setCommunityId(tmpPayFeeConfigDiscountDto.getCommunityId());
        feeDiscountDto.setDiscountId(tmpPayFeeConfigDiscountDto.getDiscountId());
@@ -335,6 +536,7 @@
            tmpFeeDiscountDto.setCycles(cycles);
        }
        IComputeDiscount computeDiscount = (IComputeDiscount) ApplicationContextFactory.getBean(feeDiscountDtos.get(0).getBeanImpl());
        feeDiscountDtos.get(0).setDiscountDesc(useCycle+"");
        ComputeDiscountDto computeDiscountDto = computeDiscount.compute(feeDiscountDtos.get(0));
        if (computeDiscountDto == null) {
            return;
service-job/src/main/java/com/java110/job/cmd/importCarInout/CarInout.java
@@ -40,7 +40,7 @@
    public static final String DOMAIN = "OSS";
    public static final String BUCKET_NAME = "bucketName";
    public static final String ERROR_FOLDER = "导入错误记录/"; // 错误文件存储目录
    public static final String ERROR_FOLDER = "小区车辆进出场导入文件异常地址"; // 错误文件存储目录
    @Autowired
    private ICommunityInnerServiceSMO communityInnerServiceSMO;
@@ -83,7 +83,7 @@
                }
                // 构建小区在OSS中的文件夹路径
                String communityFolder = "小区车辆进出场明细/" + communityName + "/";
                String communityFolder = MappingCache.getValue("OSS", "小区车辆进出场导入文件地址") + communityName + "/";
                // 检查该小区文件夹是否存在
                if (!doesFolderExist(ossClient, bucketName, communityFolder)) {
@@ -180,7 +180,7 @@
            // 创建错误文件名,在原文件名前加"错误_"
            String errorFileName = "错误_" + originalFileName;
            // 错误文件存储路径
            String errorFileKey = ERROR_FOLDER + communityName + "/" + errorFileName;
            String errorFileKey = MappingCache.getValue(DOMAIN, ERROR_FOLDER) + communityName + "/" + errorFileName;
            // 生成错误Excel文件
            ByteArrayOutputStream out = new ByteArrayOutputStream();
service-job/src/main/java/com/java110/job/importData/adapt/ImportOwnerCarQueueDataAdapt.java
@@ -142,7 +142,7 @@
        ownerCarPo.setCarId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_carId));
        ownerCarPo.setMemberId(ownerCarPo.getCarId());
        ownerCarPo.setState("1001"); //1001 正常状态,2002 车位释放欠费状态,3003 车位释放
        ownerCarPo.setLeaseType(ownerCarDto.getSpaceSate());
        ownerCarPo.setLeaseType(ownerCarDto.getLeaseType());
        ownerCarV1InnerServiceSMOImpl.saveOwnerCar(ownerCarPo);
        ParkingSpacePo parkingSpacePo = new ParkingSpacePo();
        parkingSpacePo.setPsId(psId); //车位id
service-store/src/main/java/com/java110/store/api/ContractApi.java
@@ -202,10 +202,10 @@
        Assert.hasKeyAndValue(reqJson, "contractType", "请求报文中未包含contractType");
        Assert.hasKeyAndValue(reqJson, "partyA", "请求报文中未包含partyA");
        Assert.hasKeyAndValue(reqJson, "partyB", "请求报文中未包含partyB");
        Assert.hasKeyAndValue(reqJson, "aContacts", "请求报文中未包含aContacts");
        Assert.hasKeyAndValue(reqJson, "aLink", "请求报文中未包含aLink");
        Assert.hasKeyAndValue(reqJson, "bContacts", "请求报文中未包含bContacts");
        Assert.hasKeyAndValue(reqJson, "bLink", "请求报文中未包含bLink");
//        Assert.hasKeyAndValue(reqJson, "aContacts", "请求报文中未包含aContacts");
//        Assert.hasKeyAndValue(reqJson, "aLink", "请求报文中未包含aLink");
//        Assert.hasKeyAndValue(reqJson, "bContacts", "请求报文中未包含bContacts");
//        Assert.hasKeyAndValue(reqJson, "bLink", "请求报文中未包含bLink");
        Assert.hasKeyAndValue(reqJson, "operator", "请求报文中未包含operator");
        Assert.hasKeyAndValue(reqJson, "operatorLink", "请求报文中未包含operatorLink");
        Assert.hasKeyAndValue(reqJson, "startTime", "请求报文中未包含startTime");
@@ -253,10 +253,10 @@
        Assert.hasKeyAndValue(reqJson, "contractType", "请求报文中未包含contractType");
        Assert.hasKeyAndValue(reqJson, "partyA", "请求报文中未包含partyA");
        Assert.hasKeyAndValue(reqJson, "partyB", "请求报文中未包含partyB");
        Assert.hasKeyAndValue(reqJson, "aContacts", "请求报文中未包含aContacts");
        Assert.hasKeyAndValue(reqJson, "aLink", "请求报文中未包含aLink");
        Assert.hasKeyAndValue(reqJson, "bContacts", "请求报文中未包含bContacts");
        Assert.hasKeyAndValue(reqJson, "bLink", "请求报文中未包含bLink");
//        Assert.hasKeyAndValue(reqJson, "aContacts", "请求报文中未包含aContacts");
//        Assert.hasKeyAndValue(reqJson, "aLink", "请求报文中未包含aLink");
//        Assert.hasKeyAndValue(reqJson, "bContacts", "请求报文中未包含bContacts");
//        Assert.hasKeyAndValue(reqJson, "bLink", "请求报文中未包含bLink");
        Assert.hasKeyAndValue(reqJson, "operator", "请求报文中未包含operator");
        Assert.hasKeyAndValue(reqJson, "operatorLink", "请求报文中未包含operatorLink");
        Assert.hasKeyAndValue(reqJson, "startTime", "请求报文中未包含startTime");
@@ -968,10 +968,10 @@
        Assert.hasKeyAndValue(reqJson, "contractType", "请求报文中未包含contractType");
        Assert.hasKeyAndValue(reqJson, "partyA", "请求报文中未包含partyA");
        Assert.hasKeyAndValue(reqJson, "partyB", "请求报文中未包含partyB");
        Assert.hasKeyAndValue(reqJson, "aContacts", "请求报文中未包含aContacts");
        Assert.hasKeyAndValue(reqJson, "aLink", "请求报文中未包含aLink");
        Assert.hasKeyAndValue(reqJson, "bContacts", "请求报文中未包含bContacts");
        Assert.hasKeyAndValue(reqJson, "bLink", "请求报文中未包含bLink");
//        Assert.hasKeyAndValue(reqJson, "aContacts", "请求报文中未包含aContacts");
//        Assert.hasKeyAndValue(reqJson, "aLink", "请求报文中未包含aLink");
//        Assert.hasKeyAndValue(reqJson, "bContacts", "请求报文中未包含bContacts");
//        Assert.hasKeyAndValue(reqJson, "bLink", "请求报文中未包含bLink");
        Assert.hasKeyAndValue(reqJson, "operator", "请求报文中未包含operator");
        Assert.hasKeyAndValue(reqJson, "operatorLink", "请求报文中未包含operatorLink");
        Assert.hasKeyAndValue(reqJson, "startTime", "请求报文中未包含startTime");
@@ -1000,10 +1000,10 @@
        Assert.hasKeyAndValue(reqJson, "contractType", "请求报文中未包含contractType");
        Assert.hasKeyAndValue(reqJson, "partyA", "请求报文中未包含partyA");
        Assert.hasKeyAndValue(reqJson, "partyB", "请求报文中未包含partyB");
        Assert.hasKeyAndValue(reqJson, "aContacts", "请求报文中未包含aContacts");
        Assert.hasKeyAndValue(reqJson, "aLink", "请求报文中未包含aLink");
        Assert.hasKeyAndValue(reqJson, "bContacts", "请求报文中未包含bContacts");
        Assert.hasKeyAndValue(reqJson, "bLink", "请求报文中未包含bLink");
//        Assert.hasKeyAndValue(reqJson, "aContacts", "请求报文中未包含aContacts");
//        Assert.hasKeyAndValue(reqJson, "aLink", "请求报文中未包含aLink");
//        Assert.hasKeyAndValue(reqJson, "bContacts", "请求报文中未包含bContacts");
//        Assert.hasKeyAndValue(reqJson, "bLink", "请求报文中未包含bLink");
        Assert.hasKeyAndValue(reqJson, "operator", "请求报文中未包含operator");
        Assert.hasKeyAndValue(reqJson, "operatorLink", "请求报文中未包含operatorLink");
        Assert.hasKeyAndValue(reqJson, "startTime", "请求报文中未包含startTime");
service-user/src/main/java/com/java110/user/cmd/owner/QueryOwnerCarsCmd.java
@@ -107,6 +107,13 @@
        privileges = menuInnerServiceSMOImpl.checkUserHasResource(basePrivilegeDto);
        if (privileges == null || privileges.size() == 0) {
            for (OwnerCarDto tmpOwnerCarDto : ownerCarDtoList) {
                switch (tmpOwnerCarDto.getCarTypeCd()) {
                    case "R" : tmpOwnerCarDto.setLeaseTypeName("租客车");break;
                    case "I" : tmpOwnerCarDto.setLeaseTypeName("业委会照顾车");break;
                    case "NM" : tmpOwnerCarDto.setLeaseTypeName("小区业主产权车");break;
                    case "SP" : tmpOwnerCarDto.setLeaseTypeName("商铺车");break;
                    case "H" : tmpOwnerCarDto.setLeaseTypeName("月租车");break;
                }
                String link = tmpOwnerCarDto.getLink();
                if (!StringUtil.isEmpty(link)) {
                    link = link.substring(0, 3) + "****" + link.substring(7);
springboot/src/main/java/com/java110/boot/BootApplicationStart.java
@@ -208,7 +208,7 @@
            Environment.setSystemStartWay(Environment.SPRING_BOOT);
            //刷新缓存
            flushMainCache(args);
//            flushMainCache(args);
            //服务启动完成
            ServiceStartInit.printStartSuccessInfo();
springboot/src/main/resources/application.yml
@@ -1,6 +1,6 @@
spring:
  profiles:
    active:  debug
    active:  devlocal
#  docker build -t lx .
#