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 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 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 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 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 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 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 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 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 "保存成功"; } }