chengf
2025-08-14 17cc5a434d6acc39eeddfd913f0f0d39edd20e9e
合同费用导入2025/08/14
3个文件已修改
83 ■■■■ 已修改文件
service-api/src/main/java/com/java110/api/importData/adapt/ImportRoomFeeDataCleaningAdapt.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-job/src/main/java/com/java110/job/importData/adapt/ImportRoomFeeQueueDataAdapt.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/importData/adapt/ImportRoomFeeDataCleaningAdapt.java
@@ -83,11 +83,14 @@
            if (osIndex == 0 || osIndex == 1) { // 第一行是 头部信息 直接跳过
                continue;
            }
            if (os == null ||(os[0] == null && os[1] == null && os[2] == null)) {
            if((os[0] == null && os[2] == null && os[1] == null)){
                break;
            }
            String startTime = handleExcelDateString(os[4].toString());
            String endTime = handleExcelDateString(os[5].toString());
            if (os == null ||(os[0] == null && os[1] == null)|| (os[0] == null && os[2] == null)) {
                throw new IllegalArgumentException("请选择费用主体+车牌号或费用主体+合同编号");
            }
            String startTime = handleExcelDateString(os[5].toString());
            String endTime = handleExcelDateString(os[6].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 文本格式");
@@ -95,8 +98,11 @@
            importRoomFee = new ImportRoomFee();
            importRoomFee.setPayerObjName(os[0] == null || (os[0] != null && os[1] != null)?os[1].toString():os[0].toString());
            importRoomFee.setObjType(os[0] == null || (os[0] != null && os[1] != null) ? "6666" : "3333");
            importRoomFee.setFeeTypeCd(os[2] == null ? null : os[2].toString());
            importRoomFee.setFeeName(os[3] == null ? null : os[3].toString());
            importRoomFee.setIsContractFee(os[0] != null && os[1] ==null && os[2] != null ? "O" : null);
            importRoomFee.setObjType(os[0] != null && os[1] ==null && os[2] != null ? "7777" : null);
            importRoomFee.setContractId(os[0] != null && os[1] ==null && os[2] != null ? os[2].toString() : null);
            importRoomFee.setFeeTypeCd(os[3] == null ? null : os[3].toString());
            importRoomFee.setFeeName(os[4] == null ? null : os[4].toString());
            importRoomFee.setExpenseSubject(os[0] == null || (os[0] != null && os[1] != null)?os[1].toString():os[0].toString());
            if(startTime != null){
                importRoomFee.setStartTime(startTime);
@@ -104,9 +110,9 @@
            if(endTime != null){
                importRoomFee.setEndTime(endTime);
            }
            if (os.length > 6){
                importRoomFee.setCreateTime(os[7] == null ? null : excelDoubleToDate(os[7].toString()));
                importRoomFee.setAmount(os[6] == null ? null : os[6].toString());
            if (os.length > 7){
                importRoomFee.setCreateTime(os[8] == null ? null : excelDoubleToDate(os[8].toString()));
                importRoomFee.setAmount(os[7] == null ? null : os[7].toString());
            }else{
                importRoomFee.setCreateTime(null);
                importRoomFee.setAmount("0");
service-job/src/main/java/com/java110/job/importData/adapt/ImportRoomFeeQueueDataAdapt.java
@@ -2,6 +2,9 @@
import com.alibaba.fastjson.JSONObject;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.account.AccountDto;
import com.java110.dto.contract.ContractDto;
import com.java110.dto.contract.ContractPartyaDto;
import com.java110.dto.dict.DictDto;
import com.java110.dto.fee.FeeAttrDto;
import com.java110.dto.fee.FeeConfigDto;
@@ -18,9 +21,12 @@
import com.java110.dto.room.RoomDto;
import com.java110.dto.user.UserDto;
import com.java110.fee.cmd.fee.SaveRoomCreateFeeCmd;
import com.java110.intf.acct.IAccountInnerServiceSMO;
import com.java110.intf.community.IRoomInnerServiceSMO;
import com.java110.intf.dev.IDictV1InnerServiceSMO;
import com.java110.intf.fee.*;
import com.java110.intf.store.IContractInnerServiceSMO;
import com.java110.intf.store.IContractPartyaInnerServiceSMO;
import com.java110.intf.user.IMenuUserV1InnerServiceSMO;
import com.java110.intf.user.IOwnerCarInnerServiceSMO;
import com.java110.intf.user.IOwnerInnerServiceSMO;
@@ -78,9 +84,17 @@
    @Autowired
    private IDictV1InnerServiceSMO iDictV1InnerServiceSMO;
    @Autowired
    private IAccountInnerServiceSMO accountInnerServiceSMOImpl;
    @Autowired
    private IContractPartyaInnerServiceSMO iContractPartyaInnerServiceSMO;
    @Autowired
    private IPayFeeBatchV1InnerServiceSMO payFeeBatchV1InnerServiceSMOImpl;
    @Autowired
    private IContractInnerServiceSMO iContractInnerServiceSMO;
    //    @Autowired
//    private IPayFeeMonth payFeeMonthImpl;
    @Override
@@ -107,7 +121,7 @@
        doImportRoomCreateFee(importRoomFee, batchId);
        doImportCarCreateFee(importRoomFee, batchId);
        doImportContractFee(importRoomFee, batchId);
    }
@@ -176,6 +190,29 @@
     * @param batchId
     */
    private void doImportCarCreateFee(ImportRoomFee importRoomFee, String batchId) {
        if (!FeeDto.PAYER_OBJ_TYPE_CONTRACT.equals(importRoomFee.getObjType())) {
            return;
        }
        List<ImportRoomFee> cars = new ArrayList<>();
        importRoomFee.setCarNum(importRoomFee.getPayerObjName());
        cars.add(importRoomFee);
        List<ImportRoomFee> importRoomFees = ownerCarInnerServiceSMOImpl.freshCarIds(cars);
        for (ImportRoomFee tmpImportRoomFee : importRoomFees) {
            if (StringUtil.isEmpty(tmpImportRoomFee.getPayerObjName())) {
                throw new IllegalArgumentException(tmpImportRoomFee.getCarNum() + "不存在");
            }
        }
        doCreateFeeAndAttrs(importRoomFees.get(0), batchId);
    }
    /**
     * 创建车辆费用
     *
     * @param importRoomFee
     * @param batchId
     */
    private void doImportContractFee(ImportRoomFee importRoomFee, String batchId) {
        if (!FeeDto.PAYER_OBJ_TYPE_CAR.equals(importRoomFee.getObjType())) {
            return;
        }
@@ -223,8 +260,26 @@
        payFeePo.setCommunityId(importRoomFee.getCommunityId());
        payFeePo.setConfigId(feeConfigDtos.get(0).getConfigId());
        if (FeeDto.PAYER_OBJ_TYPE_CONTRACT.equals(importRoomFee.getObjType())) {
            payFeePo.setPayerObjId(importRoomFee.getContractId());
            ContractDto contractDto = new ContractDto();
            contractDto.setContractCode(importRoomFee.getContractId());
            List<ContractDto> contractDtos = iContractInnerServiceSMO.queryContracts(contractDto);
            if(contractDtos.size() == 0){
                throw new IllegalArgumentException("不存在合同编号为"+importRoomFee.getContractId()+"的合同");
            }
            importRoomFee.setFeeTypeCd(feeConfigDtos.get(0).getFeeTypeCd());
            payFeePo.setFeeTypeCd(feeConfigDtos.get(0).getFeeTypeCd());
            payFeePo.setContractFee(importRoomFee.getContractId());
            ContractPartyaDto contractPartyaDto = new ContractPartyaDto();
            contractPartyaDto.setPartyA(importRoomFee.getPayerObjName());
            List<ContractPartyaDto> contractPartyaDtos = iContractPartyaInnerServiceSMO.queryContractPartyas(contractPartyaDto);
            if (ListUtil.isNull(contractPartyaDtos)) {
                throw new IllegalArgumentException("不存在合同主体:"+importRoomFee.getPayerObjName());
            }else if (contractPartyaDtos.size() > 1){
                throw new IllegalArgumentException("合同主体"+importRoomFee.getPayerObjName()+"存在重名");
            }
            payFeePo.setPayerObjId(contractPartyaDtos.get(0).getPartyaId());
            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CONTRACT);
            payFeePo.setIsContractFee("O");
        } else if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(importRoomFee.getObjType())) {
            payFeePo.setPayerObjId(importRoomFee.getCarId());
            payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_CAR);
springboot/src/main/resources/application.yml
@@ -1,6 +1,6 @@
spring:
  profiles:
    active:  debug
    active:  dev
#  docker build -t lx .
#