Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java =================================================================== diff -u -r14922 -r14990 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java (.../SupplyRoomConfigAction.java) (revision 14922) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/action/SupplyRoomConfigAction.java (.../SupplyRoomConfigAction.java) (revision 14990) @@ -1,11 +1,13 @@ package com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.action; -import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -32,6 +34,7 @@ import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; +import com.forgon.tools.util.SqlUtils; /** * @author WangYi 2012-4-20 下午04:55:28 @@ -176,6 +179,14 @@ } public void saveSupplyRoomCongfig() { + long st = System.currentTimeMillis(); +// saveSupplyRoomCongfig_old(); + saveSupplyRoomCongfig_new(); + long et = System.currentTimeMillis(); + long dt = et - st; + System.out.println("保存供应室配置时间:"+dt+"毫秒"); + } + public void saveSupplyRoomCongfig_old() { try { if( !supplyRoomConfigManager.isSavePathExist(saveImageMethod, saveImagePath) ) { @@ -471,6 +482,235 @@ } supplyRoomConfigManager.saveOrUpdate(supplyRoomConfig); } + + private void getSupplyRoomConfigIds(String supplyRoom_type,Set ids){ + if (StringUtils.isNotBlank(supplyRoom_type)) { + String[] rs = supplyRoom_type.split(";"); + for (String supplyRoomItem : rs) { + String[] result = supplyRoomItem.split(","); + String id = result[0]; + if ("0".equals(id)) { + } else { + ids.add(Long.valueOf(id)); + } + } + } + } + private void getAllSupplyRoomConfigIds(Set ids) { + // 1级供应室 + getSupplyRoomConfigIds(supplyRoom_type_1, ids); + // 2级供应室 + getSupplyRoomConfigIds(supplyRoom_type_2, ids); + // 申领科室 + getSupplyRoomConfigIds(supplyRoom_type_3, ids); + // 结算科室 + getSupplyRoomConfigIds(supplyRoom_type_4, ids); + } + private void processSupplyRoomCongfig(int supplyRoomType,String supplyRoom_type,List supplyRoomConfigToSave,Set supplyRoomConfigIdsToDelete){ + if (StringUtils.isNotBlank(supplyRoom_type)) { + Set supplyRoomConfigIds = new HashSet(); + String[] rs = supplyRoom_type.split(";"); + for (String supplyRoomItem : rs) { + String[] result = supplyRoomItem.split(","); + String id = result[0]; + String departId = result[1]; + String name = result[2]; + + if ("0".equals(id)) { + SupplyRoomConfig supplyRoomConfig = new SupplyRoomConfig(); + supplyRoomConfig.setOrgUnitCoding(departId); + supplyRoomConfig.setOrgUnitName(name); + supplyRoomConfig.setSupplyRoomType(supplyRoomType); + if(result.length > 3){ + String sequence = result[3]; + supplyRoomConfig.setSequence(Integer.parseInt(sequence)); + } + supplyRoomConfigToSave.add(supplyRoomConfig); + } else { + supplyRoomConfigIds.add(Long.valueOf(id)); + } + } + getDeleteSupplyRoomConfig(supplyRoomType, supplyRoomConfigIds, supplyRoomConfigIdsToDelete); + } else { + supplyRoomConfigManager.deleteAllSupplyRoomConfig(supplyRoomType); + } + } + // 优化速度之后的版本 + public void saveSupplyRoomCongfig_new() { + try { + if( !supplyRoomConfigManager.isSavePathExist(saveImageMethod, saveImagePath) ) + { + String json = "{success:" + false + ",message:'" + "文件保存路径不存在." + "'}"; + HttpServletResponse response = StrutsParamUtils.getResponse(); + response.setCharacterEncoding("UTF-8"); + response.getWriter().print(json); + return ; + } + } catch (IOException e) { + e.printStackTrace(); + } + List supplyRoomConfigToSave = new LinkedList(); + Set supplyRoomConfigIdsToDelete = new HashSet(); +// Map idToSupplyRoomConfigMap = new HashMap(); +// getAllSupplyRoomConfigIds(supplyRoomConfigIds); + +// String sql = String.format(" where %s", SqlUtils.getNonStringFieldInCollectionsPredicate("po.id", supplyRoomConfigIds)); +// List supplyRoomConfigToBeUpdate = objectDao.findBySql(SupplyRoomConfig.class.getSimpleName(), sql); +// if(supplyRoomConfigToBeUpdate != null){ +// for (SupplyRoomConfig supplyRoomConfig : supplyRoomConfigToBeUpdate) { +// idToSupplyRoomConfigMap.put(supplyRoomConfig.getId(), supplyRoomConfig); +// } +// } + // 1级供应室 + processSupplyRoomCongfig(SupplyRoomConfig.SUPPLYROOM_TYPE_1, supplyRoom_type_1, supplyRoomConfigToSave, supplyRoomConfigIdsToDelete); + // 2级供应室 + processSupplyRoomCongfig(SupplyRoomConfig.SUPPLYROOM_TYPE_2, supplyRoom_type_2, supplyRoomConfigToSave, supplyRoomConfigIdsToDelete); + // 申领科室 + processSupplyRoomCongfig(SupplyRoomConfig.SUPPLYROOM_TYPE_3, supplyRoom_type_3, supplyRoomConfigToSave, supplyRoomConfigIdsToDelete); + // 结算科室 + processSupplyRoomCongfig(SupplyRoomConfig.SUPPLYROOM_TYPE_4, supplyRoom_type_4, supplyRoomConfigToSave, supplyRoomConfigIdsToDelete); + + // 保存新的SupplyRoomCongfig + if(!supplyRoomConfigToSave.isEmpty()){ + for (SupplyRoomConfig supplyRoomConfig : supplyRoomConfigToSave) { + supplyRoomConfigManager.saveOrUpdate(supplyRoomConfig); + } + } + // 删除SupplyRoomCongfig + if(!supplyRoomConfigIdsToDelete.isEmpty()){ + supplyRoomConfigManager.deleteSupplyRoomConfigByIds(supplyRoomConfigIdsToDelete); + } + SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager + .getSystemParamsObj(); + if (supplyRoomConfig == null) { + supplyRoomConfig = new SupplyRoomConfig(); + supplyRoomConfig + .setSupplyRoomType(SupplyRoomConfig.SUPPLYROOM_TYPE_0); + } + if(printUserName.equals("是")){ + supplyRoomConfig.setPrintUserFullName(true); + }else{ + supplyRoomConfig.setPrintUserFullName(false); + } + supplyRoomConfig.setBarcodePaperType(barcodePaperType); + supplyRoomConfig.setDayStartTime(dayStartTime); + supplyRoomConfig.setDisposableGoodsExpTime(disposableGoodsExpTime); + supplyRoomConfig.setDefalutTaskGroup(defalutTaskGroup); + supplyRoomConfig.setCustomToussePrice(customToussePrice); + supplyRoomConfig.setForeignToussePrice(foreignToussePrice); + supplyRoomConfig.setIdCardPrice(idCardPrice); + supplyRoomConfig.setDptCodeOfForeignTousse(dptCodeOfForeignTousse); + supplyRoomConfig.setDptNameOfForeignTousse(dptNameOfForeignTousse); + supplyRoomConfig.setBigPackageSterilizerType(bigPackageSterilizerType); + if (!customTousseDefaultTaskGroup.equals(supplyRoomConfig + .getCustomTousseDefaultTaskGroup())) { + updateCustomTousseTaskGroup(customTousseDefaultTaskGroup); + } + supplyRoomConfig + .setCustomTousseDefaultTaskGroup(customTousseDefaultTaskGroup); + if(StringUtils.isBlank(basketLoadeTousseAmount)){ + basketLoadeTousseAmount = "0"; + } + supplyRoomConfig.setMergeTousseRuleForInvoiceBatchPrint(mergeTousseRuleForInvoiceBatchPrint); + supplyRoomConfig.setUnitName(unitName); + if (StringUtils.isBlank(saveImageMethod)) { + saveImageMethod = SupplyRoomConfig.SAVE_IN_LOCAL_FILE; + } + supplyRoomConfig.setSaveImageMethod(saveImageMethod); + + if (StringUtils.isBlank(saveImagePath)) { + saveImagePath = "C:\\sterile\\uploadImage"; + } + supplyRoomConfig.setSaveImagePath(saveImagePath); + // 创建保存文件目录 + supplyRoomConfigManager.createSavePath(); + supplyRoomConfig.setInvoiceOrigin(invoiceOrigin); + supplyRoomConfig.setDiposablePriceFluctuation(diposablePriceFluctuation); + supplyRoomConfig.setToussePriceFluctuation(toussePriceFluctuation); + supplyRoomConfig.setDailyMonitoringMinute(dailyMonitoringMinute); + supplyRoomConfig.setBasketLoadeTousseAmount(Integer.parseInt(basketLoadeTousseAmount)); + HttpServletRequest rq = StrutsParamUtils.getRequest(); + String autoSignInvoiceString = rq.getParameter("autoSignInvoice"); + boolean autoSignInvoice = "是".equals(autoSignInvoiceString); + supplyRoomConfig.setAutoSignInvoice(autoSignInvoice); + String autoMergeApplicationString = rq.getParameter("autoMergeApplication"); + String isORAppFormMergeStr = rq.getParameter("isORAppFormMerge"); + boolean autoMergeApplication = false; + String secondWashCountWorkloadString = rq.getParameter("secondWashCountWorkload"); + String warningTousseString = rq.getParameter("warningTousseWhetherDelivery"); + if("是".equals(autoMergeApplicationString)){ + autoMergeApplication = true; + } + Boolean isORAppFormMerge = null; + if(autoMergeApplication){ + if("否".equals(isORAppFormMergeStr)){ + isORAppFormMerge = false; + }else if("是".equals(isORAppFormMergeStr)){ + isORAppFormMerge = true; + } + } + boolean secondWashCountWorkload = false; + if("是".equals(secondWashCountWorkloadString)){ + secondWashCountWorkload = true; + } + boolean warningTousseWhetherDelivery = false; + if("是".equals(warningTousseString)){ + warningTousseWhetherDelivery = true; + } + String isDgConvertApplicationStr = rq.getParameter("isDgConvertApplication"); + boolean isDgConvertApplication = false; + if("是".equals(isDgConvertApplicationStr)){ + isDgConvertApplication = true; + } + String isTousseDgMergeConvertStr = rq.getParameter("isTousseDgMergeConvert"); + boolean isTousseDgMergeConvert = false; + if("是".equals(isTousseDgMergeConvertStr)){ + isTousseDgMergeConvert = true; + } + supplyRoomConfig.setIsDgConvertApplication(isDgConvertApplication); + supplyRoomConfig.setIsTousseDgMergeConvert(isTousseDgMergeConvert); + supplyRoomConfig.setAutoMergeApplication(autoMergeApplication); + supplyRoomConfig.setIsORAppFormMerge(isORAppFormMerge); + supplyRoomConfig.setSecondWashCountWorkload(secondWashCountWorkload); + supplyRoomConfig.setWarningTousseWhetherDelivery(warningTousseWhetherDelivery); + String isSecondSupplyRoomNeedRecycle = rq.getParameter("isSecondSupplyRoomNeedRecycle"); + boolean secondSupplyRoomNeedRecycle = false; + if("是".equals(isSecondSupplyRoomNeedRecycle)){ + secondSupplyRoomNeedRecycle = true; + } + supplyRoomConfig.setSecondSupplyRoomNeedRecycle(secondSupplyRoomNeedRecycle); + + //二级供应室是否自动发货(用于二级供应室灭菌完成后判断是否自动发货) + supplyRoomConfig.setIsSecondSupplyRoomAutoInvoice(rq.getParameter("isSecondSupplyRoomAutoInvoice")); + String afterRecyclingTousseDeliverStr = rq.getParameter("afterRecyclingTousseDeliver"); + boolean afterRecyclingTousseDeliver = false; + if("是".equals(afterRecyclingTousseDeliverStr)){ + afterRecyclingTousseDeliver = true; + } + supplyRoomConfig.setAfterRecyclingTousseDeliver(afterRecyclingTousseDeliver); + if (autoSignInvoice) { + Integer timingSignInvoiceTime = null; + try { + timingSignInvoiceTime = Integer.parseInt(rq + .getParameter("timingSignInvoiceTime")); + } catch (Exception e) { + } + supplyRoomConfig.setTimingSignInvoiceTime(timingSignInvoiceTime); + } else { + supplyRoomConfig.setTimingSignInvoiceTime(null); + } + String isCustomTousseCleanEntirely = rq.getParameter("isCustomTousseCleanEntirely"); + supplyRoomConfig.setIsCustomTousseCleanEntirely(isCustomTousseCleanEntirely); + supplyRoomConfig.setForeignTousseCleanedEntirely(rq.getParameter("foreignTousseCleanedEntirely")); + String foreignTousseNeedReview = StrutsParamUtils.getPraramValue("foreignTousseNeedReview", Constants.STR_YES); + supplyRoomConfig.setForeignTousseNeedReview(foreignTousseNeedReview); + // 同步修改外来器械包定义的是否审核属性 + { + String sql = String.format("update %s set isReview='%s' where tousseType in('%s','%s')", TousseDefinition.class.getSimpleName(),foreignTousseNeedReview,TousseDefinition.PACKAGE_TYPE_FOREIGN,TousseDefinition.PACKAGE_TYPE_SPLIT); + objectDao.executeUpdate(sql); + } + supplyRoomConfigManager.saveOrUpdate(supplyRoomConfig); + } public List getDeleteSupplyRoomConfig(int type, List newSupplyRoom) { @@ -506,6 +746,23 @@ return delSupplyRoom; } + public void getDeleteSupplyRoomConfig(int type, + Set supplyRoomConfigIds, + Set supplyRoomConfigIdsToBeDelete) { + Set oldSupplyRoomConfigIds = new HashSet(); + List delSupplyRoom = new ArrayList(); + String sql = String.format( + "select po.id from %s po where po.supplyRoomType=%s and %s", + SupplyRoomConfig.class.getSimpleName(), type, SqlUtils + .getNonStringFieldNotInCollectionsPredicate("po.id", + supplyRoomConfigIds)); + List supplyRoomConfigIdListToBeDelete = objectDao.findByHql(sql); + if (supplyRoomConfigIdListToBeDelete != null) { + supplyRoomConfigIdsToBeDelete + .addAll(supplyRoomConfigIdListToBeDelete); + } + } + /** * 获取申请科室Json */ @@ -1033,14 +1290,16 @@ */ private void updateCustomTousseTaskGroup(String taskGroup) { - String sql = " where po.tousseType = '" + String sql = " where tousseType = '" + TousseDefinition.PACKAGE_TYPE_CUSTOM + "'"; List customTousseList = (List) objectDao .findBySql(TousseDefinition.class.getSimpleName(), sql); - for (TousseDefinition tousse : customTousseList) { - tousse.setTaskGroup(taskGroup); - } - objectDao.batchSaveOrUpdate(customTousseList); + String updateSql = String.format(" update %s set taskGroup='%s' where %s",TousseDefinition.class.getSimpleName(), taskGroup,sql); +// for (TousseDefinition tousse : customTousseList) { +// tousse.setTaskGroup(taskGroup); +// } +// objectDao.batchSaveOrUpdate(customTousseList); + objectDao.executeUpdate(updateSql); } public String getSupplyRoom_type_1() { Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManager.java =================================================================== diff -u -r13789 -r14990 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManager.java (.../SupplyRoomConfigManager.java) (revision 13789) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManager.java (.../SupplyRoomConfigManager.java) (revision 14990) @@ -3,6 +3,7 @@ import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Set; import net.sf.json.JSONArray; @@ -23,7 +24,10 @@ public List getAllSupplyRoomConfig(); public void deleteSupplyRoomConfig(String id); + public void deleteAllSupplyRoomConfig(int roomType); + public void deleteSupplyRoomConfigByIds(Set ids); + public String getDayStartTime(); /** Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java =================================================================== diff -u -r14885 -r14990 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java (.../SupplyRoomConfigManagerImpl.java) (revision 14885) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/supplyroomconfig/service/SupplyRoomConfigManagerImpl.java (.../SupplyRoomConfigManagerImpl.java) (revision 14990) @@ -7,6 +7,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -23,6 +24,7 @@ import com.forgon.tools.cache.ForgonThreadLocalResourceManager; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.SqlUtils; import com.forgon.treenode.model.THTreeNode; /** @@ -82,6 +84,16 @@ objectDao.delete(getSupplyRoomConfig(id)); } } + + public void deleteAllSupplyRoomConfig(int roomType){ + String sql = String.format(" delete from %s where supplyRoomType=%s", SupplyRoomConfig.class.getSimpleName(),roomType); + objectDao.executeUpdate(sql); + } + + public void deleteSupplyRoomConfigByIds(Set ids){ + String sql = String.format(" delete from %s where %s", SupplyRoomConfig.class.getSimpleName(),SqlUtils.getNonStringFieldInCollectionsPredicate("id", ids)); + objectDao.executeUpdate(sql); + } @Override public String getDayStartTime() {