Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java =================================================================== diff -u -r12674 -r12932 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java (.../OrgUnitManager.java) (revision 12674) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManager.java (.../OrgUnitManager.java) (revision 12932) @@ -3,6 +3,9 @@ import java.util.List; import java.util.Set; +import org.apache.commons.lang.StringUtils; + +import com.forgon.directory.action.OrgUnitAction; import com.forgon.directory.model.CssdHandleTousses; import com.forgon.directory.model.CssdServiceDepts; import com.forgon.directory.model.OrgUnit; @@ -101,5 +104,21 @@ * @return */ public int removeCssdServiceDepts(List idList); + + /** + * 根据申请科室编码及申请单的物品类型加载处理科室 + * @param applyDepartCode 临床科室编码 + * @param type 服务类型 + * @return + */ + public List getCssdsByApplyDepartAndType( + String applyDepartCode, String type); + /** + * 根据申请科室编码及申请单的物品类型获取处理科室,如果有多个,返回第一个 + * @param applyDepartCode + * @param type + * @return + */ + public CssdServiceDepts getCssdServiceDepts(String applyDepartCode, String type); } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r12736 -r12932 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 12736) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 12932) @@ -38,7 +38,9 @@ import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; +import com.forgon.directory.model.CssdServiceDepts; import com.forgon.directory.model.OrgUnit; +import com.forgon.directory.service.OrgUnitManager; import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.basedatamanager.goodsstock.service.GoodsStockManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; @@ -121,6 +123,8 @@ private GoodsStockManager goodsStockManager; + private OrgUnitManager orgUnitManager; + public void setGoodsStockManager(GoodsStockManager goodsStockManager) { this.goodsStockManager = goodsStockManager; } @@ -133,6 +137,10 @@ this.appLogManager = appLogManager; } + public void setOrgUnitManager(OrgUnitManager orgUnitManager) { + this.orgUnitManager = orgUnitManager; + } + private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private final String tousseTypeFilterStr = TousseDefinition.PACKAGE_TYPE_INSIDE @@ -1150,6 +1158,13 @@ } createApplicationItems(recyclingApplication, tousseNameAndAmount); setApplicationStatus(recyclingApplication, tousseNameAndAmount); + //设置处理科室 + CssdServiceDepts cssdService = orgUnitManager.getCssdServiceDepts(departCoding, CssdServiceDepts.TOUSSETYPE_TOUSSE); + if(cssdService != null){ + recyclingApplication.setHandleDepartCoding(cssdService.getClinicOrgUnitCode()); + recyclingApplication.setHandleDepart(cssdService.getClinicOrgUnitName()); + recyclingApplication.setHandleDepartId(cssdService.getClinicOrgUnitId() + ""); + } try { boolean checkRecyclingStatus = true; saveOrUpdateRecyclingApplicationAndAddPackingTask( @@ -1191,6 +1206,12 @@ recyclingApplication.setSerialNumber(serialNumManager .getSerialNumberStr(SerialNum.TYPE_RECYCLINGAPPLICATION)); recyclingApplication.setApplicationTime(applicationCreateDate); + CssdServiceDepts cssdService = orgUnitManager.getCssdServiceDepts(departCoding, CssdServiceDepts.TOUSSETYPE_TOUSSE); + if(cssdService != null){ + recyclingApplication.setHandleDepartCoding(cssdService.getClinicOrgUnitCode()); + recyclingApplication.setHandleDepart(cssdService.getClinicOrgUnitName()); + recyclingApplication.setHandleDepartId(cssdService.getClinicOrgUnitId() + ""); + } if (remark != null) { recyclingApplication.setRemark(remark); } @@ -3388,6 +3409,13 @@ recyclingApplication.setDepart(depart); recyclingApplication.setSubmitTime(new Date()); recyclingApplication.setDepartCoding(departCoding); + //设置处理科室为器械包类型服务科室 + CssdServiceDepts cssdService = orgUnitManager.getCssdServiceDepts(departCoding, CssdServiceDepts.TOUSSETYPE_TOUSSE); + if(cssdService != null){ + recyclingApplication.setHandleDepartCoding(cssdService.getClinicOrgUnitCode()); + recyclingApplication.setHandleDepart(cssdService.getClinicOrgUnitName()); + recyclingApplication.setHandleDepartId(cssdService.getClinicOrgUnitId() + ""); + } recyclingApplication.setSettleAccountsDepart(depart); recyclingApplication.setOperationRoom(operationRoom); recyclingApplication.setSettleAccountsDepartCoding(departCoding); @@ -3408,6 +3436,13 @@ recyclingApplication.setApplicationItems(items); } if(diposableGoodMap.size()>0){ + //一次性物品申请单,应该改为一次性物品类型的服务科室 + cssdService = orgUnitManager.getCssdServiceDepts(departCoding, CssdServiceDepts.TOUSSETYPE_DIPOSABLEGOODS); + if(cssdService != null){ + recyclingApplication.setHandleDepartCoding(cssdService.getClinicOrgUnitCode()); + recyclingApplication.setHandleDepart(cssdService.getClinicOrgUnitName()); + recyclingApplication.setHandleDepartId(cssdService.getClinicOrgUnitId() + ""); + } for (Entry entry : diposableGoodMap.entrySet()) { TousseItem tousseItem = new TousseItem(); String dgName = entry.getKey(); Index: forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java =================================================================== diff -u -r12745 -r12932 --- forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 12745) +++ forgon-core/src/main/java/com/forgon/directory/service/OrgUnitManagerImpl.java (.../OrgUnitManagerImpl.java) (revision 12932) @@ -15,6 +15,7 @@ import org.apache.commons.lang.StringUtils; import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.action.OrgUnitAction; import com.forgon.directory.model.CssdHandleTousses; import com.forgon.directory.model.CssdServiceDepts; import com.forgon.directory.model.OrgUnit; @@ -711,4 +712,29 @@ } return 0; } + + @SuppressWarnings("unchecked") + @Override + public List getCssdsByApplyDepartAndType(String applyDepartCode, String type) { + + String sql = " where 1=1 "; + //如果申请科室不为空,根据申请科室及类型查询其处理科室 + if(StringUtils.isNotBlank(applyDepartCode)){ + sql += " and clinicOrgUnitCode = '" + applyDepartCode + "'"; + if(StringUtils.isNotBlank(type)){ + sql += " and tousseType = '" + type + "'"; + } + } + return objectDao.findBySql(CssdServiceDepts.class.getSimpleName(), sql); + } + + @Override + public CssdServiceDepts getCssdServiceDepts(String applyDepartCode, + String type) { + List list = getCssdsByApplyDepartAndType(applyDepartCode,type); + if(list != null && !list.isEmpty()){ + return list.get(0); + } + return null; + } } Index: forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java =================================================================== diff -u -r12702 -r12932 --- forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java (.../OrgUnitAction.java) (revision 12702) +++ forgon-core/src/main/java/com/forgon/directory/action/OrgUnitAction.java (.../OrgUnitAction.java) (revision 12932) @@ -45,7 +45,7 @@ private SerialNumManager serialNumManager; - private ObjectDao objectDao; + public ObjectDao objectDao; public void setSerialNumManager(SerialNumManager serialNumManager) { this.serialNumManager = serialNumManager; @@ -321,15 +321,8 @@ String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); Map result = new HashMap(); - String sql = " where 1=1 "; - //如果申请科室不为空,根据申请科室及类型查询其处理科室 - if(StringUtils.isNotBlank(applyDepartCode)){ - sql += " and clinicOrgUnitCode = '" + applyDepartCode + "'"; - if(StringUtils.isNotBlank(tousseType)){ - sql += " and tousseType = '" + tousseType + "'"; - } - } - List list = (List)objectDao.findBySql(CssdServiceDepts.class.getSimpleName(), sql); + List list = orgUnitManager.getCssdsByApplyDepartAndType( + applyDepartCode, tousseType); List> resultMapList = new ArrayList>(); if(CollectionUtils.isNotEmpty(list)){ Map resultMap = null;