package com.java110.job.importData.adapt; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.community.CommunityDto; import com.java110.dto.dict.DictDto; import com.java110.dto.fee.FeeConfigDto; import com.java110.dto.importData.*; import com.java110.dto.log.AssetImportLogDetailDto; import com.java110.dto.oweFeeCallable.OweFeeCallableDto; import com.java110.dto.owner.OwnerDto; import com.java110.dto.resource.ResourceStoreDto; import com.java110.dto.room.RoomDto; 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.IFeeAttrInnerServiceSMO; import com.java110.intf.fee.IFeeConfigInnerServiceSMO; import com.java110.intf.fee.IOweFeeCallableV1InnerServiceSMO; import com.java110.intf.fee.IPayFeeV1InnerServiceSMO; import com.java110.intf.store.IPurchaseApplyInnerServiceSMO; import com.java110.intf.store.IResourceStoreInnerServiceSMO; 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.dict.DictPo; import com.java110.po.fee.FeeAttrPo; import com.java110.po.fee.PayFeePo; import com.java110.po.oweFeeCallable.OweFeeCallablePo; import com.java110.po.owner.OwnerPo; import com.java110.po.purchase.*; 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 com.java110.utils.util.DateUtil; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; /** * 房产信息导入 适配器 * 前端请求 时 必须传入 * param.append('importAdapt', "importRoomOwner"); */ @Service("importPurchaseApplyQueueData") public class ImportPurchaseApplyQueueDataAdapt extends DefaultImportData implements IImportDataAdapt { @Autowired protected SqlSessionTemplate sqlSessionTemplate; @Autowired private IPurchaseApplyInnerServiceSMO purchaseApplyInnerServiceSMOImpl; @Autowired private IResourceStoreInnerServiceSMO resourceStoreInnerServiceSMOImpl; @Override public void importData(List assetImportLogDetailDtos) { importDatas(assetImportLogDetailDtos); } private void importDatas(List infos) { for (AssetImportLogDetailDto assetImportLogDetailDto : infos) { try { doImportData(assetImportLogDetailDto); updateImportLogDetailState(assetImportLogDetailDto.getDetailId()); try { Thread.sleep(200); } catch (InterruptedException e) { throw new RuntimeException(e); } } catch (Exception e) { e.printStackTrace(); String errorMsg = e.getMessage(); // 先判空,再判断包含关系 if (errorMsg != null && errorMsg.contains("### Error updating database")) { updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), "未知错误,请联系管理员" + errorMsg); } else { // 补充:这里也建议对 e 做兜底处理,避免传递空的异常信息 String finalMsg = errorMsg != null ? errorMsg : e.toString(); updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), finalMsg); // 如果原方法 updateImportLogDetailState 接收 Exception 类型参数,可保留: // updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e); } } } } /** * 导入数据 * * @param assetImportLogDetailDto */ private void doImportData(AssetImportLogDetailDto assetImportLogDetailDto) { JSONArray os = JSONObject.parseArray(assetImportLogDetailDto.getContent()); PurchaseApplyPo purchaseApplyPo = new PurchaseApplyPo(); purchaseApplyPo.setApplyDate(Vtil.defaultValue(os.get(2))); purchaseApplyPo.setBId("-1"); purchaseApplyPo.setStoreId(os.getString(186)); purchaseApplyPo.setCreateUserId(os.getString(187)); purchaseApplyPo.setCreateUserName(os.getString(188)); purchaseApplyPo.setCommunityId(os.getString(189)); purchaseApplyPo.setDescription(""); purchaseApplyPo.setResOrderType("10000"); purchaseApplyPo.setWarehousingWay("20000"); purchaseApplyPo.setYear(os.getString(2)); purchaseApplyPo.setMonth(os.getString(3)); purchaseApplyPo.setCompany(os.getString(5)); purchaseApplyPo.setDepartment(os.getString(6)); purchaseApplyPo.setCommunityName(os.getString(7)); purchaseApplyPo.setUserName(os.getString(8)); purchaseApplyPo.setSerialNo(os.getString(9)); purchaseApplyPo.setTripleNo(os.getString(10)); purchaseApplyPo.setApplyOrderId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId)); purchaseApplyPo.setBudgetQuantity(os.getString(18)); purchaseApplyPo.setBudgetPrice(os.getString(19)); purchaseApplyPo.setBudgetAmount(os.getString(20)); purchaseApplyPo.setReceiver(os.getString(21)); purchaseApplyPo.setReceiveAddr(os.getString(22)); PurchaseApplyItem purchaseApplyItem = new PurchaseApplyItem(); purchaseApplyItem.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId)); purchaseApplyItem.setApplyOrderId(purchaseApplyPo.getApplyOrderId()); purchaseApplyItem.setIsSignReport(os.getString(11)); purchaseApplyItem.setSignReportDate(os.getString(12)); purchaseApplyItem.setItemNo(os.getString(13)); purchaseApplyItem.setType(os.getString(14)); purchaseApplyItem.setPurchaseName(os.getString(15)); purchaseApplyItem.setModel(os.getString(16)); purchaseApplyItem.setUnit(os.getString(17)); sqlSessionTemplate.insert("purchaseApplyItemServiceDaoImpl.savePurchaseApplyItemInfo", BeanConvertUtil.beanCovertMap(purchaseApplyItem)); List purchaseApplyAudits = new ArrayList<>(); builderPurchaseApplyAudits(purchaseApplyAudits, purchaseApplyPo.getApplyOrderId(), os); for(PurchaseApplyAudit purchaseApplyAudit : purchaseApplyAudits){ sqlSessionTemplate.insert("purchaseApplyAuditServiceDaoImpl.savePurchaseApplyAuditInfo", BeanConvertUtil.beanCovertMap(purchaseApplyAudit)); } PurchaseApplyStock purchaseApplyStock = new PurchaseApplyStock(); purchaseApplyStock.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId)); purchaseApplyStock.setApplyOrderId(purchaseApplyPo.getApplyOrderId()); purchaseApplyStock.setPurchaseTimes(os.getString(47)); purchaseApplyStock.setPurchaseQuantity(os.getString(48)); purchaseApplyStock.setPurchasePrice(os.getString(49)); purchaseApplyStock.setPurchaseAmount(os.getString(50)); purchaseApplyStock.setTotalQuantityJohn(os.getString(51)); purchaseApplyStock.setPayableAmountJohn(os.getString(52)); purchaseApplyStock.setPaymentTimes(os.getString(53)); purchaseApplyStock.setPaymentTotalAmount(os.getString(54)); purchaseApplyStock.setUnpaidAmountJohn(os.getString(55)); purchaseApplyStock.setUnhappenJohn(os.getString(56)); purchaseApplyStock.setStockQuantity(os.getString(58)); purchaseApplyStock.setUseQuantity(os.getString(59)); purchaseApplyStock.setStockQuantity(os.getString(60)); purchaseApplyStock.setPriceJohn(os.getString(61)); purchaseApplyStock.setSurplusAmount(os.getString(62)); purchaseApplyStock.setKeeperJohn(os.getString(63)); sqlSessionTemplate.insert("purchaseApplyStockServiceDaoImpl.savePurchaseApplyStockInfo", BeanConvertUtil.beanCovertMap(purchaseApplyStock)); ResourceStoreDto resourceStoreDto = new ResourceStoreDto(); resourceStoreDto.setResId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_resId)); resourceStoreDto.setStoreId(os.getString(186)); resourceStoreDto.setResName(os.getString(15)); resourceStoreDto.setResCode("00"); resourceStoreDto.setPrice(Vtil.defaultValue(os.getString(18), "0")); resourceStoreDto.setCommunityId(os.getString(189)); resourceStoreDto.setTripleWaybillNo(os.getString(10)); resourceStoreDto.setModel(os.getString(16)); resourceStoreDto.setStock(os.getString(23)); resourceStoreDto.setIsFixed("N"); resourceStoreDto.setUnitCode(Vtil.defaultValue(os.getString(17), "空")); resourceStoreDto.setCreateTime(new Date()); resourceStoreInnerServiceSMOImpl.saveResourceStore(resourceStoreDto); List purchaseApplyDetailPos = new ArrayList<>(); builderPurchaseApplyDetailPos(purchaseApplyDetailPos, purchaseApplyPo.getApplyOrderId(), os, resourceStoreDto.getResId()); purchaseApplyPo.setPurchaseApplyDetailPos(purchaseApplyDetailPos); purchaseApplyInnerServiceSMOImpl.savePurchaseApply(purchaseApplyPo); List purchasePayments = new ArrayList<>(); builderPurchasePayment(purchasePayments, purchaseApplyPo.getApplyOrderId(), os); for (PurchasePayment purchasePayment : purchasePayments) { sqlSessionTemplate.insert("purchasePaymentServiceDaoImpl.savePurchasePaymentInfo", BeanConvertUtil.beanCovertMap(purchasePayment)); } PurchaseReceive purchaseReceive = new PurchaseReceive(); purchaseReceive.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId)); purchaseReceive.setApplyOrderId(purchaseApplyPo.getApplyOrderId()); purchaseReceive.setReceiveQuantity(os.getString(161)); purchaseReceive.setReceiveDate(os.getString(162)); purchaseReceive.setReceiveAddress(os.getString(163)); purchaseReceive.setSigner(os.getString(164)); purchaseReceive.setStockInNo(os.getString(165)); purchaseReceive.setStockInDate(os.getString(166)); purchaseReceive.setStockOutNo(os.getString(167)); purchaseReceive.setStockOutDate(os.getString(168)); sqlSessionTemplate.insert("purchaseReceiveServiceDaoImpl.savePurchaseReceiveInfo", BeanConvertUtil.beanCovertMap(purchaseReceive)); PurchaseReturnRecord purchaseReturnRecord = new PurchaseReturnRecord(); purchaseReturnRecord.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId)); purchaseReturnRecord.setOrderId(purchaseApplyPo.getApplyOrderId()); purchaseReturnRecord.setReturnDate(os.getString(168)); purchaseReturnRecord.setReturnQuantity(os.getString(169)); purchaseReturnRecord.setReturnPerson(os.getString(170)); purchaseReturnRecord.setApprover(os.getString(171)); purchaseReturnRecord.setReturnPrice(os.getString(172)); purchaseReturnRecord.setReturnTotalPrice(os.getString(173)); purchaseReturnRecord.setSupplierName(os.getString(174)); purchaseReturnRecord.setReturnStockInNo(os.getString(175)); purchaseReturnRecord.setReturnStockInDate(os.getString(176)); purchaseReturnRecord.setReturnStockOutNo(os.getString(177)); purchaseReturnRecord.setReturnDirection(os.getString(178)); sqlSessionTemplate.insert("purchaseReturnRecordServiceDaoImpl.insertPurchaseReturnRecord", BeanConvertUtil.beanCovertMap(purchaseReturnRecord)); } private void builderPurchasePayment(List purchasePayments, String applyOrderId, JSONArray os) { for (int i = 100; i <= 100 + 12 * 4; i += 12) { PurchasePayment purchasePayment = new PurchasePayment(); purchasePayment.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId)); purchasePayment.setApplyOrderId(applyOrderId); purchasePayment.setPayableAmount(os.getString(i)); purchasePayment.setPaidAmount(os.getString(i+1)); purchasePayment.setUnpaidAmount(os.getString(i+2)); purchasePayment.setPaymentAmount(os.getString(i+3)); purchasePayment.setPaymentCompany(os.getString(i+4)); purchasePayment.setPayType(os.getString(i+5)); purchasePayment.setPaymentNo(os.getString(i+6)); purchasePayment.setInvoiceStatus(os.getString(i+7)); purchasePayment.setTaxRate(os.getString(i+8)); purchasePayment.setPaymentCompanyAgent(os.getString(i+9)); purchasePayment.setPlannedPayDate(os.getString(i+10)); purchasePayment.setPayDate(os.getString(i+11)); purchasePayments.add(purchasePayment); } } private void builderPurchaseApplyDetailPos(List purchaseApplyAudits, String applyOrderId, JSONArray os, String resId) { for (int i = 64; i <= 64 + 9 * 4; i += 9) { PurchaseApplyDetailPo purchaseApplyDetailPo = new PurchaseApplyDetailPo(); purchaseApplyDetailPo.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId)); purchaseApplyDetailPo.setApplyOrderId(applyOrderId); purchaseApplyDetailPo.setResId(resId);//TODO 添加物品 purchaseApplyDetailPo.setPurchaseDate(os.getString(i)); purchaseApplyDetailPo.setQuantity(os.getString(i + 1)); purchaseApplyDetailPo.setPrice(os.getString(i + 2)); purchaseApplyDetailPo.setPurchaseAmount(os.getString(i + 3)); purchaseApplyDetailPo.setPurchaser(os.getString(i + 4)); purchaseApplyDetailPo.setSupplier(os.getString(i + 5)); purchaseApplyDetailPo.setContactPerson(os.getString(i + 6)); purchaseApplyDetailPo.setPhone(os.getString(i + 7)); purchaseApplyDetailPo.setWechat(os.getString(i + 8)); purchaseApplyAudits.add(purchaseApplyDetailPo); } } private void builderPurchaseApplyAudits(List purchaseApplyAudits, String applyOrderId, JSONArray os) { { PurchaseApplyAudit purchaseApplyAudit = new PurchaseApplyAudit(); purchaseApplyAudit.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId)); purchaseApplyAudit.setAuditType("审核部门"); purchaseApplyAudit.setApplyOrderId(applyOrderId); purchaseApplyAudit.setAuditDate(os.getString(26)); purchaseApplyAudit.setOperator(os.getString(27)); purchaseApplyAudit.setQuantity(os.getString(28)); purchaseApplyAudit.setPrice(os.getString(29)); purchaseApplyAudit.setModel(os.getString(30)); purchaseApplyAudit.setAuditDept(os.getString(31)); purchaseApplyAudit.setAuditor(os.getString(32)); purchaseApplyAudit.setAuditEndTime(os.getString(33)); purchaseApplyAudits.add(purchaseApplyAudit); } { PurchaseApplyAudit purchaseApplyAudit = new PurchaseApplyAudit(); purchaseApplyAudit.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId)); purchaseApplyAudit.setAuditType("财务部审核"); purchaseApplyAudit.setApplyOrderId(applyOrderId); purchaseApplyAudit.setAuditDate(os.getString(34)); purchaseApplyAudit.setOperator(os.getString(35)); purchaseApplyAudit.setAuditDate(os.getString(36)); purchaseApplyAudit.setAuditDept(os.getString(37)); purchaseApplyAudit.setAuditor(os.getString(38)); purchaseApplyAudit.setAuditOpinion(os.getString(39)); purchaseApplyAudit.setRemark(os.getString(40)); purchaseApplyAudit.setAuditEndTime(os.getString(41)); purchaseApplyAudits.add(purchaseApplyAudit); } PurchaseApplyAudit purchaseApplyAudit = new PurchaseApplyAudit(); purchaseApplyAudit.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_orderId)); purchaseApplyAudit.setAuditType("领导审核"); purchaseApplyAudit.setApplyOrderId(applyOrderId); purchaseApplyAudit.setAuditDate(os.getString(42)); purchaseApplyAudit.setOperator(os.getString(43)); purchaseApplyAudit.setAuditor(os.getString(44)); purchaseApplyAudit.setRemark(os.getString(45)); purchaseApplyAudit.setAuditEndTime(os.getString(46)); purchaseApplyAudits.add(purchaseApplyAudit); } }