Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManager.java =================================================================== diff -u -r12703 -r16282 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManager.java (.../ImportBasedataManager.java) (revision 12703) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManager.java (.../ImportBasedataManager.java) (revision 16282) @@ -29,4 +29,11 @@ public void importDiposableEntrysFromInputStreams_TRANS_REQUIRED(HttpServletRequest request,List inputStreams,List errInfos); // 导入材料 public void importMaterialEntrysFromInputStreams_TRANS_REQUIRED(List inputStreams); + + /*** + * 导入科室干预处理信息 + * @param re + * @return + */ + public Map importInterfereOrgUnitData(HttpServletRequest re); } Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java =================================================================== diff -u -r15919 -r16282 --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java (.../ImportBasedataManagerImpl.java) (revision 15919) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/service/ImportBasedataManagerImpl.java (.../ImportBasedataManagerImpl.java) (revision 16282) @@ -21,6 +21,7 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.apache.log4j.Logger; +import org.apache.poi.hssf.model.Sheet; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; @@ -3989,4 +3990,137 @@ successCount + "#" + failureCount + "#" + sb.toString()); return totalCount; } + + /*** + * 导入科室干预处理信息 + * @param re + * @return + */ + public Map importInterfereOrgUnitData(HttpServletRequest re){ + List inputStreams = attachFileManager + .getInputStreamFromAttachFile(re); + Map msg = new HashMap(); + int successCount = 0, failureCount = 0; + StringBuffer sb = new StringBuffer(); + for (InputStream is : inputStreams) { + try { + POIFSFileSystem fs = new POIFSFileSystem(is); + HSSFWorkbook wb = new HSSFWorkbook(fs); + HSSFSheet departSheet = wb.getSheetAt(0); + if (departSheet == null) { + msg.put("科室信息干预","未找到工作簿"); + return msg; + } + + Map nameToIndexMap = ExcelUtils.autoDetectSheepAndCreateColumnNameToIndexMap(departSheet); + int lastRowNum = departSheet.getLastRowNum(); + int departNameIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "科室名称"); + int oldDepartcodeIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "旧科室编码"); + int newDepartcodeIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "新科室编码"); + int deleteOldDepartIndex = ExcelUtils.getColumnIndex(nameToIndexMap, "删除旧科室"); + + OrgUnit orgUnit = null; + for (int i = 1; i <= lastRowNum; i++) { + HSSFRow row = departSheet.getRow(i); + int currentRowNum = i + 1; + if (row == null || ParerUtils.isBlankRow(row)) { + continue; + } + String name = ParerUtils.getCellFormatValue(row, departNameIndex); + String oldOrgUnitcoding = ParerUtils.getCellFormatValue(row, oldDepartcodeIndex); + String newOrgUnitcoding = ParerUtils.getCellFormatValue(row, newDepartcodeIndex); + //是否删除旧科室 + String deleteOldDepart = ParerUtils.getCellFormatValue(row, deleteOldDepartIndex); + + //如果值为'是'或'Y'时,表示该行需要删除 + boolean needDelete = StringUtils.equals(com.forgon.tools.Constants.STR_YES, deleteOldDepart) + || StringUtils.equalsIgnoreCase("Y", deleteOldDepart); + + if (StringUtils.isBlank(name)) { + // 有空值,记录信息 + appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,departNameIndex,1); + failureCount++; + continue; + } + + if (StringUtils.isBlank(oldOrgUnitcoding)) { + // 有空值,记录信息 + appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,oldDepartcodeIndex,1); + failureCount++; + continue; + } + + if (StringUtils.isBlank(newOrgUnitcoding)) { + // 有空值,记录信息 + appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,newDepartcodeIndex,1); + failureCount++; + continue; + } + + List orgUnitList = objectDao.findBySql(OrgUnit.class.getSimpleName(), "where name='" + name + "'"); + if(CollectionUtils.isEmpty(orgUnitList)){ + // 有空值,记录信息 + appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,departNameIndex,2); + failureCount++; + continue; + } + + OrgUnit oldOrgUnit = orgUnitManager.getByCode(oldOrgUnitcoding); + if(oldOrgUnit == null){ + // 有空值,记录信息 + appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,oldDepartcodeIndex,3); + failureCount++; + continue; + } + + if(!name.equals(oldOrgUnit.getName())){ + // 有空值,记录信息 + appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,oldDepartcodeIndex,4); + failureCount++; + continue; + } + OrgUnit newOrgUnit = orgUnitManager.getByCode(newOrgUnitcoding); + if(newOrgUnit == null){ + // 有空值,记录信息 + appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,newDepartcodeIndex,3); + failureCount++; + continue; + } + + if(!name.equals(newOrgUnit.getName())){ + // 有空值,记录信息 + appendFailureRowNumAndRecordFailureNum( + failureCount, sb, currentRowNum,newDepartcodeIndex,4); + failureCount++; + continue; + } + + //调用方法执行科室编码更改及旧科室的删除 + boolean success = orgUnitManager.changeOrgUnitCoding(oldOrgUnitcoding, newOrgUnitcoding, needDelete); + if(success){ + successCount++; + } + } + // 格式:成功插入数量#插入失败数量#失败行1,失败行2... + msg.put("科室信息干预", + successCount + "#" + failureCount + "#" + sb.toString()); + }catch(Exception e){ + e.printStackTrace(); + if (sb.length() > 0) { + sb.append("|"); + } + sb.append(e.getMessage()); + msg.put("科室信息干预", + successCount + "#" + failureCount + "#" + sb.toString()); + } + } + return msg; + } } Index: ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/action/ProcessSameOrgunitNameController.java =================================================================== diff -u --- ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/action/ProcessSameOrgunitNameController.java (revision 0) +++ ssts-maintain/src/main/java/com/forgon/disinfectsystem/maintain/importbasedata/action/ProcessSameOrgunitNameController.java (revision 16282) @@ -0,0 +1,102 @@ +package com.forgon.disinfectsystem.maintain.importbasedata.action; + +import java.io.InputStream; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.ModelAndView; + +import com.forgon.attachfile.service.AttachFileManager; +import com.forgon.disinfectsystem.maintain.importbasedata.service.ImportBaseDataFromZipManager; +import com.forgon.disinfectsystem.maintain.importbasedata.service.ImportBasedataManager; + +/** + * 处理同名科室controller类 + * 即对原数据表记录的旧科室编码替换成新的科室编码.旧科室编码的科室数据删除 + * @author shuyongfu + * @since 2016-12-11 + * + */ +@Controller +public class ProcessSameOrgunitNameController { + + private AttachFileManager attachFileManager; + + private ImportBasedataManager importBasedataManager; + + public void setAttachFileManager(AttachFileManager attachFileManager) { + this.attachFileManager = attachFileManager; + } + + public void setImportBasedataManager(ImportBasedataManager importBasedataManager) { + this.importBasedataManager = importBasedataManager; + } + + /** + * 处理页面的地址 + */ + private final static String processPageUrl = "/disinfectsystem/interfere/processSameOrgunitName/processSameOrgunitNameData.mhtml"; + /** + * 处理提交导入的文件请求 + * @param request + * @param response + * @return + * @throws Exception + */ + @RequestMapping(value = processPageUrl, method=RequestMethod.POST) + protected ModelAndView onSubmit(HttpServletRequest request, + HttpServletResponse response) + throws Exception { + + Map map = importBasedataManager.importInterfereOrgUnitData(request); + Set keySet = map.keySet(); + int count = keySet.size(); + String[][] msg = new String[count][4]; + for (String key : keySet) { + count--; + if (count < 0) { + break; + } + msg[count][0] = key; + // 格式:成功插入数量#插入失败数量#失败行1,失败行2... + String v = map.get(key); + if (v != null) { + String[] vs = v.split("#"); + if (vs[0].equals("-2")) { + msg[count][3] = "导入Excel表的列名不匹配,插入失败"; + } else if (vs[0].equals("-1")) { + msg[count][3] = "系统出错,插入失败"; + } else { + msg[count][1] = vs[0]; + msg[count][2] = vs[1]; + if (vs.length > 2) { + msg[count][3] = vs[2]; + } + } + + } + } + return new ModelAndView("/disinfectsystem/interfere/orgUnit/interfereOrgUnit", "msg", msg); + } + + /** + * 请求转向至显示导入的界面 + * @param request + * @return + */ + @RequestMapping(value = processPageUrl, method=RequestMethod.GET) + public String formBackingObject(HttpServletRequest request){ + request.setAttribute("poName", "科室数据"); + request.setAttribute("actionUrl",processPageUrl); + request.setAttribute("formatFile", + "/disinfectsystem/interfere/orgUnit/sameOrgUnitTemplate.xls"); + return "/disinfectsystem/interfere/orgUnit/interfereOrgUnit"; + } +} Index: ssts-web/src/main/webapp/homepage/menu.jsp =================================================================== diff -u -r16052 -r16282 --- ssts-web/src/main/webapp/homepage/menu.jsp (.../menu.jsp) (revision 16052) +++ ssts-web/src/main/webapp/homepage/menu.jsp (.../menu.jsp) (revision 16282) @@ -556,8 +556,14 @@ SSTS_InterfereForeigntousseApplication_ViewMenu = false; + +//重名科室干预 +var SSTS_InterfereOrgUnit_ViewMenu = true; + +SSTS_InterfereOrgUnit_ViewMenu = false; + //干预管理模块 -var SSTS_InterfereManagerView = SSTS_InterfereSterilizationRecord_ViewMenu && SSTS_InterfereRecyclingApplication_ViewMenu && SSTS_InterfereForeigntousseApplication_ViewMenu; +var SSTS_InterfereManagerView = SSTS_InterfereSterilizationRecord_ViewMenu && SSTS_InterfereRecyclingApplication_ViewMenu && SSTS_InterfereForeigntousseApplication_ViewMenu && SSTS_InterfereOrgUnit_ViewMenu; var SSTS_ReturnGoodsRecord_Menu = true; Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java =================================================================== diff -u -r16010 -r16282 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 16010) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 16282) @@ -6,7 +6,6 @@ import java.util.Collection; import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; @@ -19,6 +18,7 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; +import org.apache.cxf.service.invoker.spring.SpringBeanFactory; import org.hibernate.Query; import org.hibernate.Session; @@ -29,12 +29,15 @@ import com.forgon.directory.model.OrgUnit; import com.forgon.directory.model.OrgUserRelation; import com.forgon.directory.vo.LoginUserData; +import com.forgon.log.model.Log; +import com.forgon.log.service.LogManager; import com.forgon.security.model.User; import com.forgon.serialnumber.model.SerialNum; import com.forgon.serialnumber.service.SerialNumManager; import com.forgon.tools.Constants; import com.forgon.tools.GB2Alpha; import com.forgon.tools.GB2WB; +import com.forgon.tools.SpringBeanManger; import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.db.InitDbConnection; @@ -63,6 +66,8 @@ private InitDbConnection dbConnection; + private LogManager appLogManager; + public void setDbConnection(InitDbConnection dbConnection) { this.dbConnection = dbConnection; } @@ -440,7 +445,6 @@ CssdServiceDepts cssdServiceDepts = new CssdServiceDepts(); cssdServiceDepts.setCssdOrgUnitCode(cssdOrgUnitCoding); cssdServiceDepts.setCssdOrgUnitName(cssdOrgUnitName); - cssdServiceDepts.setClinicOrgUnitId(orgUnit.getId()); cssdServiceDepts.setClinicOrgUnitCode(orgUnit.getOrgUnitCoding()); cssdServiceDepts.setClinicOrgUnitName(orgUnit.getName()); cssdServiceDepts.setTousseType(CssdServiceDepts.TOUSSETYPE_TOUSSE); @@ -449,7 +453,6 @@ cssdServiceDepts = new CssdServiceDepts(); cssdServiceDepts.setCssdOrgUnitCode(cssdOrgUnitCoding); cssdServiceDepts.setCssdOrgUnitName(cssdOrgUnitName); - cssdServiceDepts.setClinicOrgUnitId(orgUnit.getId()); cssdServiceDepts.setClinicOrgUnitCode(orgUnit.getOrgUnitCoding()); cssdServiceDepts.setClinicOrgUnitName(orgUnit.getName()); cssdServiceDepts.setTousseType(CssdServiceDepts.TOUSSETYPE_DIPOSABLEGOODS); @@ -865,7 +868,31 @@ return objectDao.findBySql(OrgUnit.class.getSimpleName(), sql); } + + /** + * 根据检索内容查询相应类型的科室 + * @param simpleSpell 检索内容 + * @param roomType 科室类别 + * @return + */ + public List searchOrgUnitByRoomTypeSpellOrWbCode(String simpleSpell,Integer roomType){ + simpleSpell = simpleSpell.toUpperCase(); + String sql = " where 1=1 "; + Pattern pat = Pattern.compile("[\\u4E00-\\u9FA5]+"); // 匹配中文字符的正则表达式 + Matcher m = pat.matcher(simpleSpell); + String searchMode = AcegiHelper.getLoginUser().getSearchMode(); + if (simpleSpell.trim().length() > 0) { + if (m.find()) { + sql += " and po.name like '%" + simpleSpell + "%'"; + } else { + sql += SqlUtils.getSearchSQL(searchMode, simpleSpell); + } + } + sql +=" and po.orgUnitCoding in (select orgUnitCoding from SupplyRoomConfig where supplyRoomType=" + roomType + ")"; + return objectDao.findBySql(OrgUnit.class.getSimpleName(), sql); + } + @Override public void save(OrgUnit orgUnit) { if ((orgUnit.getId() == null) || (orgUnit.getId() == 0)) { @@ -935,10 +962,8 @@ CssdServiceDepts cssdServiceDepts = null; for(OrgUnit orgUnit : orgUnitList){ cssdServiceDepts = new CssdServiceDepts(); - cssdServiceDepts.setCssdOrgUnitId(cssd.getId()); cssdServiceDepts.setCssdOrgUnitCode(cssd.getOrgUnitCoding()); cssdServiceDepts.setCssdOrgUnitName(cssd.getName()); - cssdServiceDepts.setClinicOrgUnitId(orgUnit.getId()); cssdServiceDepts.setClinicOrgUnitCode(orgUnit.getOrgUnitCoding()); cssdServiceDepts.setClinicOrgUnitName(orgUnit.getName()); cssdServiceDepts.setTousseType(tousseType); @@ -964,10 +989,8 @@ CssdServiceDepts cssdServiceDepts = null; for(OrgUnit orgUnit : orgUnitList){ cssdServiceDepts = new CssdServiceDepts(); - cssdServiceDepts.setCssdOrgUnitId(cssd.getId()); cssdServiceDepts.setCssdOrgUnitCode(cssd.getOrgUnitCoding()); cssdServiceDepts.setCssdOrgUnitName(cssd.getName()); - cssdServiceDepts.setClinicOrgUnitId(orgUnit.getId()); cssdServiceDepts.setClinicOrgUnitCode(orgUnit.getOrgUnitCoding()); cssdServiceDepts.setClinicOrgUnitName(orgUnit.getName()); cssdServiceDepts.setTousseType(tousseType); @@ -1095,4 +1118,133 @@ return null; } + + /** + * 更改各个表的科室编码,由旧科室编码更改为新的科室编码,并根据是否需要删除科室参数对旧的科室进行删除 + * @param oldOrgUnitCoding 旧的科室编码 + * @param OrgUnitCoding 新的科室编码 + * @param needDeleteOldOrgUnit 是否需要删除旧的科室 + * @return + */ + public boolean changeOrgUnitCoding(String oldOrgUnitCoding , String newOrgUnitCoding , boolean needDeleteOldOrgUnit){ + boolean result = false; + StringBuffer sql = new StringBuffer(""); + + sql.append("update invoicePlan set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update invoicePlan set settleAccountsDepartCoding = '" + newOrgUnitCoding + "' where settleAccountsDepartCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update invoicePlan set handleDepartCoding = '" + newOrgUnitCoding + "' where handleDepartCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update RecyclingRecord set departCode = '" + newOrgUnitCoding + "' where departCode = '" + oldOrgUnitCoding + "';"); + sql.append("update RecyclingRecord set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update invoice set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update invoice set settleAccountsDepartCoding = '" + newOrgUnitCoding + "' where settleAccountsDepartCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update Invoice set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update useRecord set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update TousseDefinition set handlerDepartCode = '"+newOrgUnitCoding+"' where handlerDepartCode = '" + oldOrgUnitCoding + "';"); + sql.append("update TousseInstance set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update TousseInstance set location = '" + newOrgUnitCoding + "' where location = '" + oldOrgUnitCoding + "';"); + sql.append("update TousseInstance set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update SupplyRoomConfig set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update SupplyRoomConfig set dptCodeOfForeignTousse = '" + newOrgUnitCoding + "' where dptCodeOfForeignTousse = '" + oldOrgUnitCoding + "';"); + sql.append("update ReturnGoodsRecord set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update ReturnGoodsRecord set handleDepartCode = '" + newOrgUnitCoding + "' where handleDepartCode = '" + oldOrgUnitCoding + "';"); + sql.append("update RecallRecordItem set departCode = '" + newOrgUnitCoding + "' where departCode = '" + oldOrgUnitCoding + "';"); + sql.append("update QualityMonitoring set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update BorrowRecord set departCode = '" + newOrgUnitCoding + "' where departCode = '" + oldOrgUnitCoding + "';"); + sql.append("update BorrowRecord set rentalDepartCode = '" + newOrgUnitCoding + "' where rentalDepartCode = '" + oldOrgUnitCoding + "';"); + sql.append("update Container set departCode = '" + newOrgUnitCoding + "' where departCode = '" + oldOrgUnitCoding + "';"); + sql.append("update CssdHandleTousses set orgUnitCode = '" + newOrgUnitCoding + "' where orgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update CssdServiceDepts set cssdOrgUnitCode = '" + newOrgUnitCoding + "' where cssdOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update CssdServiceDepts set clinicOrgUnitCode = '" + newOrgUnitCoding + "' where clinicOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update DepartmentStock set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update GoodsStock set orgUnitCode = '"+newOrgUnitCoding+"' where orgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update MaterialInvoice set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update PackingTask set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update PackingRecord set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update PackingRecord set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update ReceiveRecord set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update ReturnMaterialRecord set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update ReturnMaterialRecord set handleDepartCode = '" + newOrgUnitCoding + "' where handleDepartCode = '" + oldOrgUnitCoding + "';"); + sql.append("update Rinser set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update SatisfactionSurveyTable set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update TaskGroup set departCode = '" + newOrgUnitCoding + "' where departCode = '" + oldOrgUnitCoding + "';"); + sql.append("update WareHouse set orgUnitCode = '" + newOrgUnitCoding + "' where orgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update GodownEntry set orgUnitCode = '" + newOrgUnitCoding + "' where orgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update GodownEntry set targetOrgUnitCode = '" + newOrgUnitCoding + "' where targetOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update Sterilizer set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update BeCleanItem set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update DeviceMaintenance set deviceDepartCoding = '" + newOrgUnitCoding + "' where deviceDepartCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update ExpensiveDisposablegoods set location = '" + newOrgUnitCoding + "' where location = '" + oldOrgUnitCoding + "';"); + sql.append("update IDCardInstance set codeOfLostDepart = '" + newOrgUnitCoding + "' where codeOfLostDepart = '" + oldOrgUnitCoding + "';"); + sql.append("update InventoryRecord set orgUnitCode = '" + newOrgUnitCoding + "' where orgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update IpAndOrgUnitMapping set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update KnowledgeFile1 set readerOrgUnitCode = '" + newOrgUnitCoding + "' where readerOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update KnowledgeFile2 set readerOrgUnitCode = '" + newOrgUnitCoding + "' where readerOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update KnowledgeFile3 set readerOrgUnitCode = '" + newOrgUnitCoding + "' where readerOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update KnowledgeFile4 set readerOrgUnitCode = '" + newOrgUnitCoding + "' where readerOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update KnowledgeFile5 set readerOrgUnitCode = '" + newOrgUnitCoding + "' where readerOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update KnowledgeFolder1 set readerOrgUnitCode = '" + newOrgUnitCoding + "' where readerOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update KnowledgeFolder2 set readerOrgUnitCode = '" + newOrgUnitCoding + "' where readerOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update KnowledgeFolder3 set readerOrgUnitCode = '" + newOrgUnitCoding + "' where readerOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update KnowledgeFolder4 set readerOrgUnitCode = '" + newOrgUnitCoding + "' where readerOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update KnowledgeFolder5 set readerOrgUnitCode = '" + newOrgUnitCoding + "' where readerOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update MaterialCheckRecord set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update OperationOrg set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update Problem set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update PublicInformation set readerOrgUnitCode = '" + newOrgUnitCoding + "' where readerOrgUnitCode = '" + oldOrgUnitCoding + "';"); + sql.append("update RecallRecordItem set departCode = '" + newOrgUnitCoding + "' where departCode = '" + oldOrgUnitCoding + "';"); + sql.append("update ReceiveRecordWB set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update RecyclingError set departCodeForId = '" + newOrgUnitCoding + "' where departCodeForId = '" + oldOrgUnitCoding + "';"); + sql.append("update RecyclingError set departCode = '" + newOrgUnitCoding + "' where departCode = '" + oldOrgUnitCoding + "';"); + sql.append("update RecyclingError set handleDepartCode = '" + newOrgUnitCoding + "' where handleDepartCode = '" + oldOrgUnitCoding + "';"); + sql.append("update RecyclingDamageItem set departCoding = '" + newOrgUnitCoding + "' where departCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update RecyclingDamageItem set handleDepartCode = '" + newOrgUnitCoding + "' where handleDepartCode = '" + oldOrgUnitCoding + "';"); + sql.append("update SterilizationRecord set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update StockTakeRecord set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update TousseReturnDisinfectRecord set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update WashAndDisinfectRecord set orgUnitCoding = '" + newOrgUnitCoding + "' where orgUnitCoding = '" + oldOrgUnitCoding + "';"); + sql.append("update OrgUserRelation set orgUnitId=(select id from OrgUnit where orgUnitCoding='" + newOrgUnitCoding + "') where orgUnitId=(select id from OrgUnit where orgUnitCoding='" + oldOrgUnitCoding + "');"); + sql.append("update GoodPurchaseItem set orgUnit_id = (select id from OrgUnit where orgUnitCoding='" + newOrgUnitCoding + "') where orgUnit_id=(select id from OrgUnit where orgUnitCoding='" + oldOrgUnitCoding + "');"); + sql.append("update GoodPurchasePlan set orgUnit_id = (select id from OrgUnit where orgUnitCoding='" + newOrgUnitCoding + "') where orgUnit_id=(select id from OrgUnit where orgUnitCoding='" + oldOrgUnitCoding + "');"); + sql.append("update SS_DirectManaged_OrgUnit set ORGUNIT_ID = (select id from OrgUnit where orgUnitCoding='" + newOrgUnitCoding + "') where ORGUNIT_ID = (select id from OrgUnit where orgUnitCoding='" + oldOrgUnitCoding + "');"); + sql.append("update SS_UnDirectManaged_OrgUnit set ORGUNIT_ID = (select id from OrgUnit where orgUnitCoding='" + newOrgUnitCoding + "') where ORGUNIT_ID = (select id from OrgUnit where orgUnitCoding='" + oldOrgUnitCoding + "');"); + sql.append("update St_material_detail set dept_id = (select id from OrgUnit where orgUnitCoding='" + newOrgUnitCoding + "') where dept_id = (select id from OrgUnit where orgUnitCoding='" + oldOrgUnitCoding + "');"); + sql.append("update St_tousse_detail set dept_id = (select id from OrgUnit where orgUnitCoding='" + newOrgUnitCoding + "') where dept_id = (select id from OrgUnit where orgUnitCoding='" + oldOrgUnitCoding + "');"); + sql.append("update SS_USERS set currentOrgUnitCode='" + newOrgUnitCoding + "' where currentOrgUnitCode='" + oldOrgUnitCoding + "';"); + + //如果是sqlserver的话的处理方式 + if(DatabaseUtil.isSqlServer(dbConnection.getDatabase())){ + sql.append("update DepartmentAppTemplate set orgUnitCode = SUBSTRING(replace(concat(',',orgUnitCode,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',orgUnitCode,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',orgUnitCode,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update departmentGroup set departCodes = SUBSTRING(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',departCodes,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update InvoiceDepartment set departCodes = SUBSTRING(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',departCodes,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update PrintInvoiceConfig set departCodes = SUBSTRING(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',departCodes,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update QualityMonitoringConfig set departCodes = SUBSTRING(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',departCodes,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update System_Message set departCodes = SUBSTRING(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',departCodes,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update MaterialDefinition set inventoryDepartCoding = SUBSTRING(replace(concat(',',inventoryDepartCoding,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',inventoryDepartCoding,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',inventoryDepartCoding,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update GoodsDepartShareConfig set departCodes = SUBSTRING(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',departCodes,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update PrintConfig set departCodes=SUBSTRING(replace(concat(';',departCodes,';'),';" + oldOrgUnitCoding + ";',';" + newOrgUnitCoding + ";') , 2 , len(replace(concat(';',departCodes,';'),';" + oldOrgUnitCoding + ";',';" + newOrgUnitCoding + ";')) - 2) where concat(';',departCodes,';') like '%;" + oldOrgUnitCoding + ";%';"); + }else if(DatabaseUtil.isOracle(dbConnection.getDatabase())){ + sql.append("update DepartmentAppTemplate set orgUnitCode = substr(replace(concat(',',concat(orgUnitCode,',')),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , length(replace(concat(',',concat(orgUnitCode,',')),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',orgUnitCode,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update departmentGroup set departCodes = SUBSTRING(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',departCodes,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update InvoiceDepartment set departCodes = SUBSTRING(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',departCodes,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update PrintInvoiceConfig set departCodes = SUBSTRING(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',departCodes,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update QualityMonitoringConfig set departCodes = SUBSTRING(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',departCodes,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update System_Message set departCodes = SUBSTRING(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',departCodes,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update MaterialDefinition set inventoryDepartCoding = SUBSTRING(replace(concat(',',inventoryDepartCoding,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',inventoryDepartCoding,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',inventoryDepartCoding,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update GoodsDepartShareConfig set departCodes = SUBSTRING(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",') , 2 , len(replace(concat(',',departCodes,','),'," + oldOrgUnitCoding + ",','," + newOrgUnitCoding + ",')) - 2) where concat(',',departCodes,',') like '%," + oldOrgUnitCoding + ",%';"); + sql.append("update PrintConfig set departCodes=SUBSTRING(replace(concat(';',departCodes,';'),';" + oldOrgUnitCoding + ";',';" + newOrgUnitCoding + ";') , 2 , len(replace(concat(';',departCodes,';'),';" + oldOrgUnitCoding + ";',';" + newOrgUnitCoding + ";')) - 2) where concat(';',departCodes,';') like '%;" + oldOrgUnitCoding + ";%';"); + } + if(needDeleteOldOrgUnit){ + sql.append("delete from orgunit where orgUnitCoding='" + oldOrgUnitCoding + "';"); + } + try{ + appLogManager = (LogManager)SpringBeanManger.getBean("appLogManager"); + result = objectDao.excuteSQL(sql.toString()); + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_INTERFERE, Log.TYPE_UPDATE, + "科室干预:oldOrgUnitCoding=" + oldOrgUnitCoding + ",newOrgUnitCoding=" + newOrgUnitCoding + ",needDeleteOldOrgUnit=" + needDeleteOldOrgUnit); + }catch(Exception e){ + e.printStackTrace(); + result = false; + } + return result; + } } Index: forgon-core/src/main/java/com/forgon/treenode/service/THTreeNodeManagerImpl.java =================================================================== diff -u -r16010 -r16282 --- forgon-core/src/main/java/com/forgon/treenode/service/THTreeNodeManagerImpl.java (.../THTreeNodeManagerImpl.java) (revision 16010) +++ forgon-core/src/main/java/com/forgon/treenode/service/THTreeNodeManagerImpl.java (.../THTreeNodeManagerImpl.java) (revision 16282) @@ -12,6 +12,7 @@ import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; import com.forgon.directory.model.OrgUnit; import com.forgon.tools.db.DatabaseUtil; @@ -27,6 +28,7 @@ */ public class THTreeNodeManagerImpl implements THTreeNodeManager { + private Logger logger = Logger.getLogger(THTreeNodeManagerImpl.class); private ObjectDao objectDao; private TreeNodeObject treeNodeObject; @@ -277,6 +279,7 @@ + THTreeNode.MAX_SEQUENCE_NUMBER + ")"; } + logger.debug("setTHTreeNodeOrder hql="+hql); List list = objectDao.findByHql(hql); if (list != null && list.size() > 0 && list.get(0) != null) { Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r16240 -r16282 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 16240) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 16282) @@ -391,7 +391,8 @@ {hidden :SSTS_InterfereSterilizationRecord_ViewMenu,text:"灭菌记录干预管理",href:WWWROOT+'/disinfectsystem/interfere/interfereSterilizationView1.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_InterfereSterilizationRecord_ViewMenu,text:"代理灭菌单干预管理",href:WWWROOT+'/disinfectsystem/interfere/interfereProxyDisinfectionView.jsp',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_InterfereRecyclingApplication_ViewMenu,text:"申请单干预管理",href:WWWROOT+'/disinfectsystem/interfere/interfereGoodsApplicationView.jsp',hrefTarget:linkTarget,leaf:true}, - {hidden :SSTS_InterfereForeigntousseApplication_ViewMenu,text:"外来器械干预管理",href:WWWROOT+'/disinfectsystem/interfere/interfereForeignTousseApplicationView.jsp',hrefTarget:linkTarget,leaf:true} + {hidden :SSTS_InterfereForeigntousseApplication_ViewMenu,text:"外来器械干预管理",href:WWWROOT+'/disinfectsystem/interfere/interfereForeignTousseApplicationView.jsp',hrefTarget:linkTarget,leaf:true}, + {hidden :SSTS_InterfereOrgUnit_ViewMenu,text:"重名科室干预管理",href:WWWROOT+'/disinfectsystem/interfere/processSameOrgunitName/processSameOrgunitNameData.mhtml',hrefTarget:linkTarget,leaf:true} ] },{ text:"消毒供应中心物品领用", Index: ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-action.xml =================================================================== diff -u -r15968 -r16282 --- ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-action.xml (.../applicationContext-disinfectsystem-action.xml) (revision 15968) +++ ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-action.xml (.../applicationContext-disinfectsystem-action.xml) (revision 16282) @@ -32,6 +32,11 @@ + + + +