Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/expensiveGoods/expensiveGoodsDemo.xls =================================================================== diff -u -r21628 -r22292 Binary files differ Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importexpensivegoods/service/ImportExpensiveGoodsManagerImpl.java =================================================================== diff -u -r22027 -r22292 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importexpensivegoods/service/ImportExpensiveGoodsManagerImpl.java (.../ImportExpensiveGoodsManagerImpl.java) (revision 22027) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importexpensivegoods/service/ImportExpensiveGoodsManagerImpl.java (.../ImportExpensiveGoodsManagerImpl.java) (revision 22292) @@ -1,11 +1,11 @@ package com.forgon.disinfectsystem.maintain.importexpensivegoods.service; import java.io.InputStream; -import java.text.DateFormat; +import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Calendar; import java.util.Date; -import java.util.GregorianCalendar; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -29,9 +29,14 @@ import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveGoods; import com.forgon.disinfectsystem.entity.basedatamanager.supplier.ExpensiveGoodsSupplier; import com.forgon.disinfectsystem.entity.basedatamanager.supplier.RegistrationCertification; +import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; +import com.forgon.disinfectsystem.entity.expensivegoods.AuthorizationCertification; +import com.forgon.disinfectsystem.entity.expensivegoods.ExpensiveGoodsAuthorization; +import com.forgon.disinfectsystem.entity.expensivegoods.RelevancyGoodsAuthorization; import com.forgon.disinfectsystem.expensiveGoods.service.ExpensiveGoodsManager; import com.forgon.tools.GB2Alpha; import com.forgon.tools.GB2WB; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.excel.ParerUtils; import com.forgon.tools.hibernate.ObjectDao; /** @@ -122,6 +127,7 @@ * @param totalCount * @return */ + @SuppressWarnings("rawtypes") private int importExpensiveGoods(HSSFSheet expensiveGoodsSheet, Map msg, int totalCount) { StringBuffer sb = new StringBuffer(); @@ -130,9 +136,11 @@ } int lastRowNum = expensiveGoodsSheet.getLastRowNum(); int successCount = 0, failureCount = 0; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (int i = 1; i <= lastRowNum; i++) { HSSFRow row = expensiveGoodsSheet.getRow(i); + int rowLastCellNum = row.getLastCellNum(); //每一行的有效总列数从1开始算的 int currentRowNum = i; int currentColumnNum = 0; if (row == null || ParerUtils.isBlankRow(row)) { @@ -145,17 +153,24 @@ failureCount = appendFailureRowNumAndRecordFailureNum( failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); continue; + }else{ + int errorCode = validateExpensiveGoodsAuthorizationRepetition(name); + if(errorCode != 0){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,errorCode); + continue; + } } + // 拼音码 + String spelling = GB2Alpha.string2Alpha(name); + + // 五笔码 + String wbCode = GB2WB.getWBCode(name); + //物资编码 String inventorySerialNumber = ParerUtils.getCellFormatValue(row, currentColumnNum++); - //规格 - String specification = ParerUtils.getCellFormatValue(row, currentColumnNum++); - - //包装规格 - String packageSpec = ParerUtils.getCellFormatValue(row, currentColumnNum++); - //类型 String type = ParerUtils.getCellFormatValue(row, currentColumnNum++); @@ -187,6 +202,8 @@ failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_VALUE_INVALID); continue; } + }else{ + minStorage = 0; } // 最大库存(Integer) @@ -211,6 +228,8 @@ failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_VALUE_INVALID); continue; } + }else{ + maxStorage = 0; } // 总数(Integer) @@ -233,55 +252,6 @@ amount = 0L; } - - //生产厂家 - String companyName = ParerUtils.getCellFormatValue(row, currentColumnNum++); - if(StringUtils.isBlank(companyName)){ - failureCount = appendFailureRowNumAndRecordFailureNum( - failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); - continue; - } - - //注册证 - String certification = ParerUtils.getCellFormatValue(row, currentColumnNum++); - if(StringUtils.isBlank(certification)){ - failureCount = appendFailureRowNumAndRecordFailureNum( - failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); - continue; - }else{ //判断是否为有效数字 - if(!StringUtils.isNumeric(certification)){ - failureCount = appendFailureRowNumAndRecordFailureNum( - failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_VALUE_INVALID); - continue; - } - } - - Long certificationId = getCertificationIdByCompanyNameAndCertification(companyName,certification); - if(certificationId == null){ - failureCount = appendFailureRowNumAndRecordFailureNum( - failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_VALUE_INVALID); - continue; - } -// //注册证有效期 -// String validityTime = ParerUtils.getCellFormatValue(row, currentColumnNum++); -// Long certificationId = null; -// Date date = null; -// DateFormat fmt =new SimpleDateFormat("yyyy-MM-dd"); -// if(StringUtils.isNotBlank(validityTime)){ -// try{ -// date = fmt.parse(validityTime); -// }catch(Exception e){ -// failureCount = appendFailureRowNumAndRecordFailureNum( -// failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_VALUE_INVALID); -// continue; -// } -// certificationId = getCertificationIdByCompanyNameAndCertification(companyName,certification,date); -// }else{ -// failureCount = appendFailureRowNumAndRecordFailureNum( -// failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); -// continue; -// } - //收费码 String chargeCode = ParerUtils.getCellFormatValue(row, currentColumnNum++); @@ -405,31 +375,6 @@ isApplicationMaterial = Constants.STR_CAN; //默认值能 } - //是否是消毒供应中心物品 - String isSupplyRoomGoods = ParerUtils.getCellFormatValue(row,currentColumnNum++); - if(StringUtils.isNotBlank(isSupplyRoomGoods)){ - if (!com.forgon.tools.Constants.STR_YES.equals(isSupplyRoomGoods) - && !com.forgon.tools.Constants.STR_NO.equals(isSupplyRoomGoods) ){ - failureCount = appendFailureRowNumAndRecordFailureNum( - failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_VALUE_INVALID); - continue; - } - }else{ - isSupplyRoomGoods = Constants.STR_YES; //默认为是 - } - - //包外标签是否打印 - String printInLabel = ParerUtils.getCellFormatValue(row,currentColumnNum++); - if(StringUtils.isNotBlank(printInLabel)){ - if (!com.forgon.tools.Constants.STR_YES.equals(printInLabel) - && !com.forgon.tools.Constants.STR_NO.equals(printInLabel) ){ - failureCount = appendFailureRowNumAndRecordFailureNum( - failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_VALUE_INVALID); - continue; - } - }else{ - printInLabel = Constants.STR_YES; //默认为是 - } //是否需要盘点 String isInventoryGoods = ParerUtils.getCellFormatValue(row,currentColumnNum++); if(StringUtils.isNotBlank(isInventoryGoods)){ @@ -456,18 +401,350 @@ isImplant = Constants.STR_NO; //默认为否 } + //注册证号 + String certification = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if(StringUtils.isBlank(certification)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + continue; + }else{ + int errorCode = validateExpensiveGoodsSupplierCertificationRepetition(certification); + if(errorCode != 0){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,errorCode); + continue; + } + } + + //注册证类别 + String certificationType = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if(StringUtils.isBlank(type)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + continue; + } + + //注册证有效期 + String validityTime = ParerUtils.getCellFormatValue(row, currentColumnNum++); + Date validityTimeDate = null; + if (StringUtils.isNotBlank(validityTime)) { + try { + validityTimeDate = sdf.parse(validityTime); + } catch (ParseException e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_DATE); + continue; + } + } + + //生产厂家 + String companyName = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if(StringUtils.isBlank(companyName)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + continue; + } + + //生产厂家营业执照 + String businessLicense = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if(StringUtils.isBlank(businessLicense)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + continue; + } + + //生产厂家营业执照有效期 + String licenseValidityTime = ParerUtils.getCellFormatValue(row, currentColumnNum++); + Date licenseValidityTimeDate = null; + if (StringUtils.isNotBlank(licenseValidityTime)) { + try { + licenseValidityTimeDate = sdf.parse(licenseValidityTime); + } catch (ParseException e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_DATE); + continue; + } + } + + //生产厂家许可证 + String productionCertificate = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if(StringUtils.isBlank(productionCertificate)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + continue; + } + + //生产厂家许可证有效期 + String productionValidityTime = ParerUtils.getCellFormatValue(row, currentColumnNum++); + Date productionValidityTimeDate = null; + if (StringUtils.isNotBlank(productionValidityTime)) { + try { + productionValidityTimeDate = sdf.parse(productionValidityTime); + } catch (ParseException e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_DATE); + continue; + } + } + + //供应商授权证号 + String authorizationNumber = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if(StringUtils.isBlank(authorizationNumber)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + continue; + }else{ + int errorCode = validateExpensiveGoodsAuthorizationNumberRepetition(authorizationNumber); + if(errorCode != 0){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,errorCode); + continue; + } + } + + //供应商授权证有效期 + String authorizationTime = ParerUtils.getCellFormatValue(row, currentColumnNum++); + @SuppressWarnings("unused") + Date authorizationTimeDate = null; + if (StringUtils.isNotBlank(authorizationTime)) { + try { + authorizationTimeDate = sdf.parse(authorizationTime); + } catch (ParseException e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_DATE); + continue; + } + } + + //供应商名称 + String supplierName = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if(StringUtils.isBlank(supplierName)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + continue; + } + + //供应商营业执照号 + String businessNumber = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if(StringUtils.isBlank(businessNumber)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + continue; + } + + //供应商营业执照失效期 + String supplierBusinessTime = ParerUtils.getCellFormatValue(row, currentColumnNum++); + Date supplierBusinessTimeDate = null; + if (StringUtils.isNotBlank(supplierBusinessTime)) { + try { + supplierBusinessTimeDate = sdf.parse(supplierBusinessTime); + } catch (ParseException e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_DATE); + continue; + } + } + + //供应商经营许可证 + String businessCertificate = ParerUtils.getCellFormatValue(row, currentColumnNum++); + if(StringUtils.isBlank(businessCertificate)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + continue; + } + + //供应商经营许可证有效期 + String businessValidityTime = ParerUtils.getCellFormatValue(row, currentColumnNum++); + Date businessValidityTimeDate = null; + if (StringUtils.isNotBlank(businessValidityTime)) { + try { + businessValidityTimeDate = sdf.parse(businessValidityTime); + } catch (ParseException e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,currentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_DATE); + continue; + } + } + //检验多级代理各属性值是否有错 + boolean IsThereAnError = false; + String authorizationNumbers = null; + String authorizationTimes = null; + String supplierNames = null; + String businessNumbers = null; + String supplierBusinessTimes = null; + String businessCertificates = null; + String businessValidityTimes = null; + Date authorizationTimeDates = null; + Date supplierBusinessTimeDates = null; + Date businessValidityTimeDates = null; + if(rowLastCellNum > currentColumnNum){ + int authorizationCellNum = rowLastCellNum - currentColumnNum; //总列数减去第一次授权最后列数得到后面列数 + int authorizationRowNumber = authorizationCellNum / 7; //多级代理列数除以每一级代理所需列数得到需要添加的代理信息数 + int verifyCurrentColumnNum = currentColumnNum; //替换当前列号为了不影响下次保存取值 + for(Integer a = 1 ; a <= authorizationRowNumber; a++){ + //供应商授权证号 + authorizationNumbers = ParerUtils.getCellFormatValue(row, verifyCurrentColumnNum++); + if(StringUtils.isBlank(authorizationNumbers)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,verifyCurrentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + IsThereAnError = true; + break; + }else{ + int errorCode = validateExpensiveGoodsAuthorizationNumberRepetition(authorizationNumbers); + if(errorCode != 0){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,verifyCurrentColumnNum,errorCode); + IsThereAnError = true; + break; + } + } + + //供应商授权证有效期 + authorizationTimes = ParerUtils.getCellFormatValue(row, verifyCurrentColumnNum++); + if (StringUtils.isNotBlank(authorizationTimes)) { + try { + authorizationTimeDates = sdf.parse(authorizationTimes); + } catch (ParseException e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,verifyCurrentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_DATE); + IsThereAnError = true; + break; + } + } + + //供应商名称 + supplierNames = ParerUtils.getCellFormatValue(row, verifyCurrentColumnNum++); + if(StringUtils.isBlank(supplierNames)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,verifyCurrentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + IsThereAnError = true; + break; + } + + //供应商营业执照号 + businessNumbers = ParerUtils.getCellFormatValue(row, verifyCurrentColumnNum++); + if(StringUtils.isBlank(businessNumbers)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,verifyCurrentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + IsThereAnError = true; + break; + } + + //供应商营业执照失效期 + supplierBusinessTimes = ParerUtils.getCellFormatValue(row, verifyCurrentColumnNum++); + if (StringUtils.isNotBlank(supplierBusinessTimes)) { + try { + supplierBusinessTimeDates = sdf.parse(supplierBusinessTimes); + } catch (ParseException e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,verifyCurrentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_DATE); + IsThereAnError = true; + break; + } + } + + //供应商经营许可证 + businessCertificates = ParerUtils.getCellFormatValue(row, verifyCurrentColumnNum++); + if(StringUtils.isBlank(businessCertificates)){ + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,verifyCurrentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_BLANK); + IsThereAnError = true; + break; + } + + //供应商经营许可证有效期 + businessValidityTimes = ParerUtils.getCellFormatValue(row, verifyCurrentColumnNum++); + if (StringUtils.isNotBlank(businessValidityTimes)) { + try { + businessValidityTimeDates = sdf.parse(businessValidityTimes); + } catch (ParseException e) { + failureCount = appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,verifyCurrentColumnNum,com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_IS_NOT_DATE); + IsThereAnError = true; + break; + } + } + + } + } + //检验多级代理各属性值是否有错 + if(IsThereAnError){ + continue; + } + //保存生产厂家 + ExpensiveGoodsSupplier expensiveGoodsSupplier = expensiveGoodsSupplierManager + .getSupplierByName(companyName); + if (expensiveGoodsSupplier == null) { + expensiveGoodsSupplier = new ExpensiveGoodsSupplier(); + } + expensiveGoodsSupplier.setCompanyName(companyName); + expensiveGoodsSupplier.setSpelling(GB2Alpha.string2Alpha(companyName)); + expensiveGoodsSupplier.setWbCode(GB2WB.getWBCode(companyName)); + expensiveGoodsSupplier.setProductionCertificate(productionCertificate); + expensiveGoodsSupplier.setProductionValidityTime(productionValidityTimeDate); + expensiveGoodsSupplier.setProductionType(ExpensiveGoodsSupplier.CERTIFICATE_TYPE_PRODUCTIONCERTIFICATE); + expensiveGoodsSupplier.setBusinessLicense(businessLicense); + expensiveGoodsSupplier.setLicenseType(ExpensiveGoodsSupplier.CERTIFICATE_TYPE_BUSINESSLICENSE); + expensiveGoodsSupplier.setLicenseValidityTime(licenseValidityTimeDate); + expensiveGoodsSupplier.setRentTousse(ExpensiveGoodsSupplier.SUPPLIER_TYPE_MADECOMPANY); + RegistrationCertification registrationCertification = getRegistrationCertification(companyName,certification); + if(registrationCertification == null){ + registrationCertification = new RegistrationCertification(); + } + if(StringUtils.isNotBlank(certification)){ + registrationCertification.setCertification(certification); + registrationCertification.setValidityTime(validityTimeDate); + registrationCertification.setType(certificationType); + registrationCertification.setExpensiveGoodsSupplier(expensiveGoodsSupplier); + Calendar calendar = Calendar.getInstance(); + String sql = " where po.supplierCertificationExpTime != " + null; + List supplyRoomConfig = objectDao.findBySql(SupplyRoomConfig.class.getSimpleName(), sql); + if(supplyRoomConfig.size() == 0){//注册证预警期通用但如果是第一次添加注册证给设个默认值(科室供应室没配置预警时间就进这里设默认预警天数) + calendar.setTime(validityTimeDate); + calendar.add(Calendar.DAY_OF_YEAR, -30);// 默认告警日期为30天 + registrationCertification.setWarningUntil(calendar.getTime()); + }else{ + for(SupplyRoomConfig src : supplyRoomConfig){ + calendar.setTime(validityTimeDate); + calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - src.getSupplierCertificationExpTime()); + registrationCertification.setWarningUntil(calendar.getTime());//不是第一次添加取以前注册证有的通用; + } + } + } + expensiveGoodsSupplier.setRegistrationCertificate(saveOrGetRegistrationCertification(registrationCertification)); + saveExpensiveGoodsSupplier(expensiveGoodsSupplier); + + //保存供应商 + ExpensiveGoodsSupplier supplier = expensiveGoodsSupplierManager + .getSupplierByName(supplierName); + if (supplier == null) { + supplier = new ExpensiveGoodsSupplier(); + } + supplier.setCompanyName(supplierName); + supplier.setSpelling(GB2Alpha.string2Alpha(supplierName)); + supplier.setWbCode(GB2WB.getWBCode(supplierName)); + supplier.setBusinessCertificate(businessCertificate); + supplier.setBusinessValidityTime(businessValidityTimeDate); + supplier.setBusinessType(ExpensiveGoodsSupplier.CERTIFICATE_TYPE_BUSINESSCERTIFICATE); + supplier.setBusinessLicense(businessNumber); + supplier.setLicenseValidityTime(supplierBusinessTimeDate); + supplier.setLicenseType(ExpensiveGoodsSupplier.CERTIFICATE_TYPE_BUSINESSLICENSE); + supplier.setRentTousse(ExpensiveGoodsSupplier.SUPPLIER_TYPE_EXPENSIVEGOODSSUPPLIER); + saveExpensiveGoodsSupplier(supplier); + + //保存高值耗材 ExpensiveGoods expensiveGoods = expensiveGoodsManager .getExpensiveGoodsByName(name); if (expensiveGoods == null) { expensiveGoods = new ExpensiveGoods(); expensiveGoods.setName(name); } - expensiveGoods.setSpecification(specification); + expensiveGoods.setSpelling(spelling); + expensiveGoods.setWbCode(wbCode); expensiveGoods.setType(type); expensiveGoods.setAmount(amount); expensiveGoods.setExternalCode(externalCode); - expensiveGoods.setIsApplicationMaterial(isApplicationMaterial); expensiveGoods.setSequence(sequence); expensiveGoods.setIsPartOfTousseMaterial(isPartOfTousseMaterial); @@ -476,20 +753,121 @@ expensiveGoods.setReferencePrice(referencePrice); expensiveGoods.setGrade(grade); expensiveGoods.setUnit(unit); - expensiveGoods.setPackageSpec(packageSpec); expensiveGoods.setInventorySerialNumber(inventorySerialNumber); expensiveGoods.setMaxApplyAmount(maxApplyAmount); expensiveGoods.setMinApplyAmount(minApplyAmount); - expensiveGoods.setCertificationId(certificationId); + expensiveGoods.setCertificationId(getCertificationIdByCompanyNameAndCertification(companyName,certification)); expensiveGoods.setCertification(certification); expensiveGoods.setPlatformCode(platformCode); expensiveGoods.setChargeCode(chargeCode); expensiveGoods.setIsImplant(isImplant); expensiveGoods.setNotInventoryGoods(isInventoryGoods); - expensiveGoods.setPrintInLabel(printInLabel); - expensiveGoods.setIsSupplyRoomGoods(isSupplyRoomGoods); - totalCount = saveOrUpdateAndClearCache(totalCount, expensiveGoods); + expensiveGoodsManager.save(expensiveGoods); + + ExpensiveGoods expensiveGood = expensiveGoodsManager + .getExpensiveGoodsByName(name); + //判断是否有多级代理时保存多级代理商和授权信息 + if(rowLastCellNum > currentColumnNum){ + int authorizationCellNum = rowLastCellNum - currentColumnNum; //总列数减去第一次授权最后列数得到后面列数 + int authorizationRowNumber = authorizationCellNum / 7; //多级代理列数除以每一级代理所需列数得到需要添加的代理信息数 + List expensiveGoodsSupplierlist = new ArrayList(); //保存供应商信息,用于保存授权证时取前被授权供应商变为授权供应商 + for(Integer a = 1 ; a <= authorizationRowNumber; a++){ + //供应商授权证号 + authorizationNumbers = ParerUtils.getCellFormatValue(row, currentColumnNum++); + //供应商授权证有效期 + authorizationTimes = ParerUtils.getCellFormatValue(row, currentColumnNum++); + //供应商名称 + supplierNames = ParerUtils.getCellFormatValue(row, currentColumnNum++); + //供应商营业执照号 + businessNumbers = ParerUtils.getCellFormatValue(row, currentColumnNum++); + //供应商营业执照失效期 + supplierBusinessTimes = ParerUtils.getCellFormatValue(row, currentColumnNum++); + //供应商经营许可证 + businessCertificates = ParerUtils.getCellFormatValue(row, currentColumnNum++); + //供应商经营许可证有效期 + businessValidityTimes = ParerUtils.getCellFormatValue(row, currentColumnNum++); + //保存供应商 + ExpensiveGoodsSupplier suppliers = expensiveGoodsSupplierManager + .getSupplierByName(supplierNames); + if (suppliers == null) { + suppliers = new ExpensiveGoodsSupplier(); + } + suppliers.setCompanyName(supplierNames); + suppliers.setSpelling(GB2Alpha.string2Alpha(supplierNames)); + suppliers.setWbCode(GB2WB.getWBCode(supplierNames)); + suppliers.setBusinessCertificate(businessCertificates); + suppliers.setBusinessValidityTime(businessValidityTimeDates); + suppliers.setBusinessType(ExpensiveGoodsSupplier.CERTIFICATE_TYPE_BUSINESSCERTIFICATE); + suppliers.setBusinessLicense(businessNumbers); + suppliers.setLicenseValidityTime(supplierBusinessTimeDates); + suppliers.setLicenseType(ExpensiveGoodsSupplier.CERTIFICATE_TYPE_BUSINESSLICENSE); + suppliers.setRentTousse(ExpensiveGoodsSupplier.SUPPLIER_TYPE_EXPENSIVEGOODSSUPPLIER); + saveExpensiveGoodsSupplier(suppliers); + expensiveGoodsSupplierlist.add(suppliers); + + //保存授权信息 + AuthorizationCertification authorizationCertification = new AuthorizationCertification(); + ExpensiveGoodsAuthorization expensiveGoodsAuthorization = new ExpensiveGoodsAuthorization(); + RelevancyGoodsAuthorization relevancyGoodsAuthorization = new RelevancyGoodsAuthorization(); + relevancyGoodsAuthorization.setExpensiveGoodsIds(expensiveGood.getId().toString()); + relevancyGoodsAuthorization.setExpensiveGoodsName(name); + + //保存授权证信息 + authorizationCertification.setAuthorizationNumber(authorizationNumbers); + authorizationCertification.setType(ExpensiveGoodsSupplier.CERTIFICATE_TYPE_AUTHORIZATION); + authorizationCertification.setValidityTime(authorizationTimeDates); + authorizationCertification.setRelevancyGoodsAuthorization(relevancyGoodsAuthorization); + relevancyGoodsAuthorization.setAuthorizationCertificationList(getAuthorizationCertification(authorizationCertification)); + + //保存授权证明细 + //第一级代理取总代理的被授权方变为授权方 + if(a == 1){ + expensiveGoodsAuthorization.setAuthorizerCompanyId(supplier.getId()); + expensiveGoodsAuthorization.setAuthorizerCompanyName(supplierName); + }else{ + //第二第三级....代理取前一次被授权方为授权方 + ExpensiveGoodsSupplier egs = expensiveGoodsSupplierlist.get(a-2); + expensiveGoodsAuthorization.setAuthorizerCompanyId(egs.getId()); + expensiveGoodsAuthorization.setAuthorizerCompanyName(egs.getCompanyName()); + } + expensiveGoodsAuthorization.setAuthorizedCompanyId(suppliers.getId()); + expensiveGoodsAuthorization.setAuthorizedCompanyName(supplierNames); + expensiveGoodsAuthorization.setExpensiveGoodsId(expensiveGood.getId()); + expensiveGoodsAuthorization.setExpensiveGoodsName(name); + expensiveGoodsAuthorization.setRelevancyGoodsAuthorization(relevancyGoodsAuthorization); + expensiveGoodsAuthorization.setValidityTime(authorizationTimeDates); + relevancyGoodsAuthorization.setExpensiveGoodsAuthorization(getExpensiveGoodsAuthorization(expensiveGoodsAuthorization)); + objectDao.saveOrUpdate(relevancyGoodsAuthorization); + } + + } + //保存授权信息 + AuthorizationCertification authorizationCertification = new AuthorizationCertification(); + ExpensiveGoodsAuthorization expensiveGoodsAuthorization = new ExpensiveGoodsAuthorization(); + RelevancyGoodsAuthorization relevancyGoodsAuthorization = new RelevancyGoodsAuthorization(); + relevancyGoodsAuthorization.setExpensiveGoodsIds(expensiveGood.getId().toString()); + relevancyGoodsAuthorization.setExpensiveGoodsName(name); + + //保存授权证信息 + authorizationCertification.setAuthorizationNumber(authorizationNumber); + authorizationCertification.setType(ExpensiveGoodsSupplier.CERTIFICATE_TYPE_AUTHORIZATION); + authorizationCertification.setValidityTime(authorizationTimeDate); + authorizationCertification.setRelevancyGoodsAuthorization(relevancyGoodsAuthorization); + relevancyGoodsAuthorization.setAuthorizationCertificationList(getAuthorizationCertification(authorizationCertification)); + + //保存授权明细 + expensiveGoodsAuthorization.setAuthorizerCompanyId(expensiveGoodsSupplier.getId()); + expensiveGoodsAuthorization.setAuthorizerCompanyName(companyName); + expensiveGoodsAuthorization.setAuthorizedCompanyId(supplier.getId()); + expensiveGoodsAuthorization.setAuthorizedCompanyName(supplierName); + expensiveGoodsAuthorization.setExpensiveGoodsId(expensiveGood.getId()); + expensiveGoodsAuthorization.setExpensiveGoodsName(name); + expensiveGoodsAuthorization.setRelevancyGoodsAuthorization(relevancyGoodsAuthorization); + expensiveGoodsAuthorization.setValidityTime(authorizationTimeDate); + relevancyGoodsAuthorization.setExpensiveGoodsAuthorization(getExpensiveGoodsAuthorization(expensiveGoodsAuthorization)); + totalCount = saveOrUpdateAndClearCache(totalCount, relevancyGoodsAuthorization); successCount++; + } // 格式:成功插入数量#插入失败数量#失败行1,失败行2... @@ -498,9 +876,9 @@ return totalCount; } - private Integer saveOrUpdateAndClearCache(int count, ExpensiveGoods po) { + private Integer saveOrUpdateAndClearCache(int count, RelevancyGoodsAuthorization po) { if (po != null) { - expensiveGoodsManager.save(po); + objectDao.saveOrUpdate(po); if (++count % 50 == 0) { objectDao.clearCache(); } @@ -547,35 +925,142 @@ } } return null; -// //查询companyName对应的生产厂家信息,如果没有此生产厂家,则创建一个 -// ExpensiveGoodsSupplier expensiveGoodsSupplier = getExpensiveGoodsSupplierManager().getSupplierByName(companyName); -// if(expensiveGoodsSupplier == null){ -// expensiveGoodsSupplier = new ExpensiveGoodsSupplier(); -// expensiveGoodsSupplier.setCompanyName(companyName); -// expensiveGoodsSupplierManager.saveOrUpdate(expensiveGoodsSupplier); -// } -// //获取此厂家拥有的注册证,如果没有,则新建一个。返回注册证Id -// List registrationCertifications= expensiveGoodsSupplier.getRegistrationCertificate(); -// if(registrationCertifications != null){ -// for(RegistrationCertification registrationCertification : registrationCertifications){ -// if(certification.equals(registrationCertification.getCertification())){ -// return registrationCertification.getId(); -// } -// } -// } -// RegistrationCertification registrationCertification = new RegistrationCertification(); -// registrationCertification.setCertification(certification); -// registrationCertification.setExpensiveGoodsSupplier(expensiveGoodsSupplier); -// registrationCertifications.add(registrationCertification); -// Calendar calendar = new GregorianCalendar(); -// calendar.setTime(date); -// calendar.add(Calendar.DAY_OF_YEAR, -30); //提前30天预警 -// Date warningUntil = calendar.getTime(); -// registrationCertification.setWarningUntil(warningUntil); -// registrationCertification.setValidityTime(date); -// -// objectDao.saveOrUpdate(registrationCertification); -// return registrationCertification.getId(); } + + /** + * 保存高值耗材供应商 + * @param expensiveGoodsSupplier 供应商或生产厂家 + */ + private void saveExpensiveGoodsSupplier(ExpensiveGoodsSupplier expensiveGoodsSupplier){ + objectDao.saveOrUpdate(expensiveGoodsSupplier); + } + /** + * 保存生产厂家注册证并返回注册证集合 + * @param registrationCertification 注册证 + * @return + */ + private List saveOrGetRegistrationCertification(RegistrationCertification registrationCertification){ + List reCertificates = new ArrayList(); + objectDao.saveOrUpdate(registrationCertification); + reCertificates.add(registrationCertification); + return reCertificates; + + } + /** + * 根据生产厂家名称和注册证号获取对应的注册证 + * @param companyName 供应商名称 + * @param certification 注册证号 + * @return + */ + private RegistrationCertification getRegistrationCertification(String companyName, String certification){ + //查询companyName对应的生产厂家信息,如果没有则返回null + ExpensiveGoodsSupplier expensiveGoodsSupplier = getExpensiveGoodsSupplierManager().getSupplierByName(companyName); + if(expensiveGoodsSupplier == null){ + return null; + } + //获取此厂家拥有的注册证,如果没有,则返回null + List registrationCertifications= expensiveGoodsSupplier.getRegistrationCertificate(); + if(registrationCertifications != null){ + for(RegistrationCertification registrationCertification : registrationCertifications){ + if(certification.equals(registrationCertification.getCertification())){ + return registrationCertification; + } + } + } + return null; + } + + /** + * 保存授权证并返回 + * @param authorizationCertification + * @return + */ + private List getAuthorizationCertification(AuthorizationCertification authorizationCertification){ + List authorizations = new ArrayList(); + objectDao.saveOrUpdate(authorizationCertification); + authorizations.add(authorizationCertification); + return authorizations; + + } + + /** + * 保存授权明细并返回 + * @param expensiveGoodsAuthorization + * @return + */ + private List getExpensiveGoodsAuthorization(ExpensiveGoodsAuthorization expensiveGoodsAuthorization){ + List authorizations = new ArrayList(); + objectDao.saveOrUpdate(expensiveGoodsAuthorization); + authorizations.add(expensiveGoodsAuthorization); + return authorizations; + + } + /** + * 根据高值耗材ID和授权方和被授权方查找授权明细记录 + * @param expensiveGoodsId 高值耗材Id + * @param companyName 授权方名称 + * @param supplierName 被授权方名称 + * @return + */ + private ExpensiveGoodsAuthorization getOldExpensiveGoodsAuthorization(Long expensiveGoodsId,String companyName,String supplierName){ + String sql = " where po.expensiveGoodsId = " + expensiveGoodsId + " and po.authorizerCompanyName = '"+ companyName + "' and po.authorizedCompanyName = '" + supplierName + "'"; + ExpensiveGoodsAuthorization expensiveGoodsAuthorization = (ExpensiveGoodsAuthorization) objectDao.getBySql(ExpensiveGoodsAuthorization.class.getSimpleName(), sql); + return expensiveGoodsAuthorization; + + } + + /** + * 检验是否有重复的授权记录 + * @param expensiveGoodsName 高值耗材名称 + * @return + */ + private int validateExpensiveGoodsAuthorizationRepetition(String expensiveGoodsName){ + String sql = " where po.expensiveGoodsName = '" + expensiveGoodsName + "'"; + List expensiveGoodsAuthorization = (List) objectDao.findBySql(ExpensiveGoodsAuthorization.class.getSimpleName(), sql); + if(expensiveGoodsAuthorization != null){ + for(ExpensiveGoodsAuthorization ega :expensiveGoodsAuthorization){ + if(ega.getValidityTime().getTime() < new Date().getTime()){ + return com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_DUPLICATE; + } + } + } + return 0; + } + + /** + * 检验是否有重复的注册证号 + * @param certification 注册证号 + * @return + */ + private int validateExpensiveGoodsSupplierCertificationRepetition(String certification){ + String sql = " where po.certification = '" + certification + "'"; + List registrationCertification = (List) objectDao.findBySql(RegistrationCertification.class.getSimpleName(), sql); + if(registrationCertification != null){ + for(RegistrationCertification rc : registrationCertification){ + if(rc.getValidityTime().getTime() < new Date().getTime()){ + return com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_DUPLICATE; + } + } + } + return 0; + } + + /** + * 检验是否有重复的授权证号 + * @param authorizationNumber 授权证号 + * @return + */ + private int validateExpensiveGoodsAuthorizationNumberRepetition(String authorizationNumber){ + String sql = " where po.authorizationNumber = '" + authorizationNumber + "'"; + List authorizationCertification = (List) objectDao.findBySql(AuthorizationCertification.class.getSimpleName(), sql); + if(authorizationCertification != null){ + for(AuthorizationCertification ac :authorizationCertification){ + if(ac.getValidityTime().getTime() < new Date().getTime()){ + return com.forgon.disinfectsystem.common.Constants.ERROR_TYPE_DUPLICATE; + } + } + } + return 0; + } }