| | |
| | | package com.java110.job.importData.adapt; |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.java110.core.annotation.Java110Transactional; |
| | | import com.alibaba.fastjson.TypeReference; |
| | | 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.community.CommunityDto; |
| | | import com.java110.dto.contract.*; |
| | | import com.java110.dto.dict.DictDto; |
| | | import com.java110.dto.importData.*; |
| | | import com.java110.dto.log.AssetImportLogDetailDto; |
| | | import com.java110.intf.store.IContractAttrInnerServiceSMO; |
| | | import com.java110.dto.oweFeeCallable.OweFeeCallableDto; |
| | | import com.java110.dto.owner.OwnerDto; |
| | | import com.java110.fee.dao.IApplyRoomDiscountServiceDao; |
| | | import com.java110.intf.community.ICommunityInnerServiceSMO; |
| | | import com.java110.intf.community.IImportOwnerRoomInnerServiceSMO; |
| | | import com.java110.intf.dev.IDictV1InnerServiceSMO; |
| | | import com.java110.intf.fee.IOweFeeCallableV1InnerServiceSMO; |
| | | import com.java110.intf.store.IContractInnerServiceSMO; |
| | | import com.java110.intf.store.IContractPartyaInnerServiceSMO; |
| | | import com.java110.intf.store.IContractTypeInnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerInnerServiceSMO; |
| | | import com.java110.intf.user.IOwnerV1InnerServiceSMO; |
| | | import com.java110.job.importData.DefaultImportData; |
| | | import com.java110.job.importData.IImportDataAdapt; |
| | | import com.java110.po.contract.ContractAttrPo; |
| | | import com.java110.po.community.CommunityPo; |
| | | import com.java110.po.contract.ContractPo; |
| | | import com.java110.utils.util.*; |
| | | import com.java110.po.oweFeeCallable.OweFeeCallablePo; |
| | | import com.java110.po.owner.OwnerPo; |
| | | import com.java110.po.room.ApplyRoomDiscountPo; |
| | | import com.java110.po.room.LitigationInfoPo; |
| | | import com.java110.po.room.PayeeReceiveInfoPo; |
| | | import com.java110.utils.util.BeanConvertUtil; |
| | | import org.mybatis.spring.SqlSessionTemplate; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 房屋缴费信息导入 适配器 |
| | | * 房产信息导入 适配器 |
| | | * 前端请求 时 必须传入 |
| | | * param.append('importAdapt', "importRoomOwner"); |
| | | * param.append('importAdapt', "importRoomOwner"); |
| | | */ |
| | | @Service("importContractQueueData") |
| | | @Service("importContractV2QueueData") |
| | | public class ImportContractQueueDataAdapt extends DefaultImportData implements IImportDataAdapt { |
| | | |
| | | @Autowired |
| | | protected SqlSessionTemplate sqlSessionTemplate; |
| | | |
| | | @Autowired |
| | | private IContractInnerServiceSMO contractInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IContractPartyaInnerServiceSMO contractPartyaInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IContractTypeInnerServiceSMO contractTypeInnerServiceSMOImpl; |
| | | |
| | | @Autowired |
| | | private IContractAttrInnerServiceSMO contractAttrInnerServiceSMOImpl; |
| | | |
| | | private ICommunityInnerServiceSMO communityInnerServiceSMOImpl; |
| | | |
| | | @Override |
| | | public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) { |
| | | importDatas(assetImportLogDetailDtos); |
| | | } |
| | | |
| | | for (AssetImportLogDetailDto assetImportLogDetailDto : assetImportLogDetailDtos) { |
| | | private void importDatas(List<AssetImportLogDetailDto> infos) { |
| | | String state = ""; |
| | | String msg = ""; |
| | | for (AssetImportLogDetailDto assetImportLogDetailDto : infos) { |
| | | try { |
| | | importDatas(assetImportLogDetailDto); |
| | | doImportData(assetImportLogDetailDto); |
| | | updateImportLogDetailState(assetImportLogDetailDto.getDetailId()); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | |
| | | |
| | | } |
| | | |
| | | private void importDatas(AssetImportLogDetailDto assetImportLogDetailDto) { |
| | | List<ContractPo> contractPoList = new ArrayList<>(); |
| | | /** |
| | | * 导入数据 |
| | | * |
| | | * @param assetImportLogDetailDto |
| | | */ |
| | | private void doImportData(AssetImportLogDetailDto assetImportLogDetailDto) { |
| | | 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()+"的甲方"); |
| | | AdContractInfoDto adContractInfo = data.getObject("adContractInfo", AdContractInfoDto.class); |
| | | ContractAmountDetailDto contractAmountDetail = data.getObject("contractAmountDetail", ContractAmountDetailDto.class); |
| | | ContractManagementShareDto contractManagementShare = data.getObject("contractManagementShare", ContractManagementShareDto.class); |
| | | ContractPaymentStatusDto contractPaymentStatus = data.getObject("contractPaymentStatus", ContractPaymentStatusDto.class); |
| | | List<ContractCollectionDetailDto> contractCollectionDetail = data.getObject("contractCollectionDetailDtos", new TypeReference<List<ContractCollectionDetailDto>>() {}); data.remove("adContractInfo"); |
| | | data.remove("contractAmountDetail"); |
| | | data.remove("contractManagementShare"); |
| | | data.remove("contractPaymentStatus"); |
| | | ContractDto contractDto = BeanConvertUtil.covertBean(data, ContractDto.class); |
| | | // ContractPo contractPo = BeanConvertUtil.covertBean(data, ContractPo.class); |
| | | contractDto.setContractAmountDetail(contractAmountDetail); |
| | | contractDto.setContractManagementShare(contractManagementShare); |
| | | contractDto.setAdContractInfo(adContractInfo); |
| | | contractDto.setContractPaymentStatus(contractPaymentStatus); |
| | | contractDto.setContractCollectionDetailDtos(contractCollectionDetail); |
| | | contractDto.setStartTime(Vtil.defaultValueToDate(contractDto.getStartTime(), "start", null)); |
| | | contractDto.setEndTime(Vtil.defaultValueToDate(contractDto.getEndTime(), "end", null)); |
| | | // int i = contractInnerServiceSMOImpl.queryContractsCount(contractDto); |
| | | // |
| | | // if (i > 0) { |
| | | // throw new IllegalArgumentException("重复的合同"); |
| | | // } |
| | | if (Vtil.defaultValue(contractDto.getCommunityName()) != null) { |
| | | CommunityDto community = new CommunityDto(); |
| | | community.setName(contractDto.getCommunityName()); |
| | | List<CommunityDto> communityDtos = communityInnerServiceSMOImpl.queryCommunitys(community); |
| | | if (communityDtos == null || communityDtos.size() == 0) { |
| | | // throw new IllegalArgumentException("未查询到" + community.getName() + "小区"); |
| | | } |
| | | } 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("第三方主体不存在"); |
| | | else { |
| | | contractDto.setCommunityId(communityDtos.get(0).getCommunityId()); |
| | | } |
| | | } |
| | | |
| | | |
| | | 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()+"的合同类型"); |
| | | contractInnerServiceSMOImpl.saveContract(contractDto); |
| | | sqlSessionTemplate.insert("adContractInfoDaoImpl.saveAdContractInfo", BeanConvertUtil.beanCovertMap(contractDto.getAdContractInfo())); |
| | | sqlSessionTemplate.insert("contractAmountDetailDaoImpl.saveContractAmountDetail", BeanConvertUtil.beanCovertMap(contractDto.getContractAmountDetail())); |
| | | sqlSessionTemplate.insert("contractManagementShareDaoImpl.saveContractManagementShare", BeanConvertUtil.beanCovertMap(contractDto.getContractManagementShare())); |
| | | sqlSessionTemplate.insert("contractPaymentStatusDaoImpl.saveContractPaymentStatus", BeanConvertUtil.beanCovertMap(contractDto.getContractPaymentStatus())); |
| | | if (contractDto.getContractCollectionDetailDtos() != null) { |
| | | for (ContractCollectionDetailDto ccd : contractDto.getContractCollectionDetailDtos()){ |
| | | sqlSessionTemplate.insert("contractCollectionDetailDaoImpl.saveContractCollectionDetail", BeanConvertUtil.beanCovertMap(ccd)); |
| | | } |
| | | } 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) { |
| | | private String defaultValueToDate(Object o) { |
| | | return o == null ? null : o.toString(); |
| | | } |
| | | |
| | | //查询 合同是否需要审核 |
| | | 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, "查询合同类型失败"); |
| | | public String defaultValue(Object o) { |
| | | return o == null ? "" : o.toString(); |
| | | } |
| | | |
| | | |
| | | 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 "保存成功"; |
| | | public BigDecimal defaultNum(Object o) { |
| | | return o == null ? new BigDecimal(0) : new BigDecimal(o.toString()); |
| | | } |
| | | } |