package com.java110.job.importData.adapt;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.java110.core.annotation.Java110Transactional;
|
import com.java110.core.factory.GenerateCodeFactory;
|
import com.java110.dto.contract.ContractDto;
|
import com.java110.dto.contract.ContractPartyaDto;
|
import com.java110.dto.contract.ContractTypeDto;
|
import com.java110.dto.log.AssetImportLogDetailDto;
|
import com.java110.intf.store.IContractAttrInnerServiceSMO;
|
import com.java110.intf.store.IContractInnerServiceSMO;
|
import com.java110.intf.store.IContractPartyaInnerServiceSMO;
|
import com.java110.intf.store.IContractTypeInnerServiceSMO;
|
import com.java110.job.importData.DefaultImportData;
|
import com.java110.job.importData.IImportDataAdapt;
|
import com.java110.po.contract.ContractAttrPo;
|
import com.java110.po.contract.ContractPo;
|
import com.java110.utils.util.*;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 房屋缴费信息导入 适配器
|
* 前端请求 时 必须传入
|
* param.append('importAdapt', "importRoomOwner");
|
*/
|
@Service("importContractQueueData")
|
public class ImportContractQueueDataAdapt extends DefaultImportData implements IImportDataAdapt {
|
|
@Autowired
|
private IContractInnerServiceSMO contractInnerServiceSMOImpl;
|
|
@Autowired
|
private IContractPartyaInnerServiceSMO contractPartyaInnerServiceSMOImpl;
|
|
@Autowired
|
private IContractTypeInnerServiceSMO contractTypeInnerServiceSMOImpl;
|
|
@Autowired
|
private IContractAttrInnerServiceSMO contractAttrInnerServiceSMOImpl;
|
|
|
@Override
|
public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) {
|
|
for (AssetImportLogDetailDto assetImportLogDetailDto : assetImportLogDetailDtos) {
|
try {
|
importDatas(assetImportLogDetailDto);
|
updateImportLogDetailState(assetImportLogDetailDto.getDetailId());
|
} catch (Exception e) {
|
e.printStackTrace();
|
updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e);
|
}
|
}
|
|
}
|
|
private void importDatas(AssetImportLogDetailDto assetImportLogDetailDto) {
|
List<ContractPo> contractPoList = new ArrayList<>();
|
JSONObject data = JSONObject.parseObject(assetImportLogDetailDto.getContent());
|
ContractPo contractPo = BeanConvertUtil.covertBean(data, ContractPo.class);
|
|
try {
|
ContractPartyaDto contractPartyaDto = new ContractPartyaDto();
|
contractPartyaDto.setIsPartyA(contractPo.getaPartyaId());
|
contractPartyaDto.setCommunityId(contractPo.getCommunityId());
|
contractPartyaDto.setTypeId("1");
|
List<ContractPartyaDto> contractPartyaDtos = contractPartyaInnerServiceSMOImpl.queryContractPartyas(contractPartyaDto);
|
if (contractPartyaDtos.size() == 1){
|
contractPo.setaPartyaId(contractPartyaDtos.get(0).getPartyaId());
|
contractPo.setPartyA(contractPartyaDtos.get(0).getPartyA());
|
} else {
|
throw new IllegalArgumentException("存在多个名为"+contractPo.getaPartyaId()+"的甲方");
|
}
|
} catch (IllegalArgumentException e){
|
throw new IllegalArgumentException("存在多个名为"+contractPo.getaPartyaId()+"的甲方");
|
} catch (Exception e){
|
throw new IllegalArgumentException("甲方主体不存在");
|
}
|
|
|
try {
|
ContractPartyaDto contractPartyaDto = new ContractPartyaDto();
|
contractPartyaDto.setIsPartyA(contractPo.getbPartyaId());
|
contractPartyaDto.setCommunityId(contractPo.getCommunityId());
|
contractPartyaDto.setTypeId("2");
|
List<ContractPartyaDto> contractPartyaDtos = contractPartyaInnerServiceSMOImpl.queryContractPartyas(contractPartyaDto);
|
if (contractPartyaDtos.size() == 1){
|
contractPo.setbPartyaId(contractPartyaDtos.get(0).getPartyaId());
|
contractPo.setPartyB(contractPartyaDtos.get(0).getPartyA());
|
} else {
|
throw new IllegalArgumentException("不存在或存在多个名为"+contractPo.getbPartyaId()+"的乙方");
|
}
|
} catch (IllegalArgumentException e){
|
throw new IllegalArgumentException("不存在或存在多个名为"+contractPo.getbPartyaId()+"的乙方");
|
} catch (Exception e){
|
throw new IllegalArgumentException("乙方主体不存在");
|
}
|
|
|
if (contractPo.getcPartyaId() != null) {
|
try {
|
ContractPartyaDto contractPartyaDto = new ContractPartyaDto();
|
contractPartyaDto.setIsPartyA(contractPo.getcPartyaId());
|
contractPartyaDto.setCommunityId(contractPo.getCommunityId());
|
contractPartyaDto.setTypeId("3");
|
List<ContractPartyaDto> contractPartyaDtos = contractPartyaInnerServiceSMOImpl.queryContractPartyas(contractPartyaDto);
|
if (contractPartyaDtos.size() == 1){
|
contractPo.setcPartyaId(contractPartyaDtos.get(0).getPartyaId());
|
contractPo.setPartyC(contractPartyaDtos.get(0).getPartyA());
|
} else {
|
throw new IllegalArgumentException("不存在或存在多个名为"+contractPo.getcPartyaId()+"的第三方");
|
}
|
} catch (NullPointerException e){
|
e.printStackTrace();
|
} catch (IllegalArgumentException e){
|
throw new IllegalArgumentException("不存在或存在多个名为"+contractPo.getcPartyaId()+"的第三方");
|
} catch (Exception e){
|
throw new IllegalArgumentException("第三方主体不存在");
|
}
|
}
|
|
|
try {
|
ContractTypeDto contractTypeDto = new ContractTypeDto();
|
contractTypeDto.setCommunityId(contractPo.getCommunityId());
|
contractTypeDto.setTypeName(contractPo.getContractType());
|
List<ContractTypeDto> contractTypeDtos = contractTypeInnerServiceSMOImpl.queryContractTypes(contractTypeDto);
|
if (contractTypeDtos.size() == 1){
|
contractPo.setContractType(contractTypeDtos.get(0).getContractTypeId());
|
} else {
|
throw new IllegalArgumentException("不存在或存在多个名为"+contractPo.getContractType()+"的合同类型");
|
}
|
} catch (IllegalArgumentException e){
|
throw new IllegalArgumentException("不存在或存在多个名为"+contractPo.getContractType()+"的合同类型");
|
} catch (Exception e){
|
throw new IllegalArgumentException("合同类型不存在");
|
}
|
try {
|
save(contractPo);
|
}catch (Exception e){
|
throw new IllegalArgumentException(e);
|
}
|
|
}
|
|
@Java110Transactional
|
public String save(ContractPo contractPo) {
|
|
//查询 合同是否需要审核
|
ContractTypeDto contractTypeDto = new ContractTypeDto();
|
contractTypeDto.setContractTypeId(contractPo.getContractType());
|
contractTypeDto.setStoreId(contractPo.getStoreId());
|
contractTypeDto.setCommunityId(contractPo.getCommunityId());
|
List<ContractTypeDto> contractTypeDtos = contractTypeInnerServiceSMOImpl.queryContractTypes(contractTypeDto);
|
|
Assert.listOnlyOne(contractTypeDtos, "查询合同类型失败");
|
|
|
String audit = contractTypeDtos.get(0).getAudit();
|
|
if (ContractTypeDto.NO_AUDIT.equals(audit)) {
|
contractPo.setState("22");
|
} else {
|
contractPo.setState("11");
|
}
|
//校验合同编号是否重复
|
ContractDto contractDto = new ContractDto();
|
contractDto.setStoreId(contractPo.getStoreId());
|
contractDto.setContractCode(contractPo.getContractCode());
|
contractDto.setCommunityId(contractPo.getCommunityId());
|
List<ContractDto> contractDtos = contractInnerServiceSMOImpl.queryContracts(contractDto);
|
|
if (contractDtos != null && contractDtos.size() > 0) {
|
throw new IllegalArgumentException("合同" + "[" + contractPo.getContractCode() + "]已存在");
|
}
|
|
contractPo.setContractId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_contractId));
|
contractPo.setContractParentId("");
|
int flag = contractInnerServiceSMOImpl.saveContract(contractPo);
|
if (flag < 0) {
|
throw new IllegalArgumentException("保存失败");
|
}
|
return "保存成功";
|
}
|
}
|