Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/action/SterilizationTransitionAction.java =================================================================== diff -u -r38449 -r38456 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/action/SterilizationTransitionAction.java (.../SterilizationTransitionAction.java) (revision 38449) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/action/SterilizationTransitionAction.java (.../SterilizationTransitionAction.java) (revision 38456) @@ -1,19 +1,16 @@ package com.forgon.disinfectsystem.sterilizationmanager.sterilizationTransition.action; import java.util.Collection; -import java.util.HashMap; import java.util.List; -import java.util.Map; - -import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; + import com.forgon.Constants; -import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; +import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; import com.forgon.disinfectsystem.entity.sterilizationTransition.SterilizationTransition; import com.forgon.disinfectsystem.entity.sterilizationTransition.SterilizationTransitionItem; @@ -52,7 +49,6 @@ private SterilizationTransition sterilizationTransition; private SterilizationTransitionManager sterilizationTransitionManager; private ExtGridUtils extGridUtils; - private ObjectDao objectDao; private TousseInstanceManager tousseInstanceManager; private ExceptionHandler exceptionHandler; @@ -68,10 +64,6 @@ public void setDateQueryAdapter(DateQueryAdapter dateQueryAdapter) { this.dateQueryAdapter = dateQueryAdapter; } - - public void setObjectDao(ObjectDao objectDao) { - this.objectDao = objectDao; - } public void setTousseInstanceManager(TousseInstanceManager tousseInstanceManager) { this.tousseInstanceManager = tousseInstanceManager; @@ -128,11 +120,21 @@ endDateTime = endDateTime + ":00"; transitionTimeSql = String.format(" and %s ", dateQueryAdapter.dateAreaSql("transitionTime", startDateTime, endDateTime)); } + String quryMaxGrade = ""; + boolean enableUrgentFunction = CssdUtils.getSystemSetConfigByNameBool("enableUrgentFunction", false); - String select = "select totalAmount as \"totalAmount\" ,id as \"id\",serialNumber as \"serialNumber\",transitionTime as \"transitionTime\",handover as \"handover\",takeover as \"takeover\",printStatus as \"printStatus\",status as \"status\" "; - String where = String.format("from SterilizationTransition where 1=1 %s %s ", idSql, transitionTimeSql); + if(enableUrgentFunction){ + quryMaxGrade = ",(select max(grade) from UrgentLevel ul where exists (select 1 from TousseInstance ti " + + "join SterilizationTransitionItem si on si.tousseInstanceId=ti.id where si.sterilizationTransition_id=po.id and ti.urgentLevel_id=ul.id ) ) as \"maxGrade\" "; + } + String select = "select totalAmount as \"totalAmount\" ,id as \"id\",serialNumber as \"serialNumber\",transitionTime as \"transitionTime\",handover as \"handover\",takeover as \"takeover\",printStatus as \"printStatus\",status as \"status\" "+ quryMaxGrade; + String where = String.format("from SterilizationTransition po where 1=1 %s %s ", idSql, transitionTimeSql); ExtJsEntity entity = ExtJsUtil.buildSQLEntity(select, where, ""); JSONObject result = extGridUtils.getPagedResult(entity); + + if(enableUrgentFunction && result != null && result.optInt("total") > 0){ + sterilizationTransitionManager.setUrgentInfoOfSterilizationTransition(result); + } StrutsResponseUtils.output(result); } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionManager.java =================================================================== diff -u -r38449 -r38456 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionManager.java (.../SterilizationTransitionManager.java) (revision 38449) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionManager.java (.../SterilizationTransitionManager.java) (revision 38456) @@ -1,7 +1,6 @@ package com.forgon.disinfectsystem.sterilizationmanager.sterilizationTransition.service; import java.util.Collection; -import java.util.Set; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -74,4 +73,9 @@ */ public JSONObject buildsterilizationTransitionJson( SterilizationTransition sterilizationTransition); + /** + * 给解决交接列表设置加急信息设置灭菌交接的加急信息 + * @param result 交接列表数据 + */ + public void setUrgentInfoOfSterilizationTransition(JSONObject result); } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionManagerImpl.java =================================================================== diff -u -r38449 -r38456 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionManagerImpl.java (.../SterilizationTransitionManagerImpl.java) (revision 38449) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationTransition/service/SterilizationTransitionManagerImpl.java (.../SterilizationTransitionManagerImpl.java) (revision 38456) @@ -26,6 +26,7 @@ import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.basedatamanager.urgent.service.UrgentLevelManager; import com.forgon.disinfectsystem.common.CssdUtils; import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; @@ -34,6 +35,7 @@ import com.forgon.disinfectsystem.entity.sterilizationTransition.SterilizationTransitionItem; import com.forgon.disinfectsystem.entity.sterilizationTransition.SterilizationTransitionItemVO; import com.forgon.disinfectsystem.entity.sterilizationmanager.proxydisinfection.ProxyDisinfection; +import com.forgon.disinfectsystem.entity.urgent.UrgentLevel; import com.forgon.disinfectsystem.sterilizationmanager.proxydisinfection.service.ProxyDisinfectionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.exception.SystemException; @@ -65,6 +67,10 @@ private LogManager appLogManager; private BarcodeManager barcodeManager; private ProxyDisinfectionManager proxyDisinfectionManager; + private UrgentLevelManager urgentLevelManager; + public void setUrgentLevelManager(UrgentLevelManager urgentLevelManager) { + this.urgentLevelManager = urgentLevelManager; + } public void setProxyDisinfectionManager( ProxyDisinfectionManager proxyDisinfectionManager) { this.proxyDisinfectionManager = proxyDisinfectionManager; @@ -439,6 +445,18 @@ JSONArray scannedBarcodeArr = new JSONArray(); List items = sterilizationTransition.getSterilizationTransitionItems(objectDao); if (CollectionUtils.isNotEmpty(items)) { + boolean enableUrgentFunction = CssdUtils.getSystemSetConfigByNameBool("enableUrgentFunction", false); + Map tiToUrgentLevel = null; + if(enableUrgentFunction){ + Set tiIds = new HashSet(); + for (SterilizationTransitionItem item : items) { + if(DatabaseUtil.isPoIdValid(item.getTousseInstanceId())){ + tiIds.add(item.getTousseInstanceId()); + } + } + tiToUrgentLevel = getTiToUrgentLevel(tiIds); + } + UrgentLevel maxUrgentLevel = null; for (SterilizationTransitionItem item : items) { JSONObject tousseDefinitionNode = map.get(item.getTousseDefinitionId()); if (tousseDefinitionNode == null) { @@ -460,6 +478,15 @@ child.put("tousseInstanceId", item.getTousseInstanceId()); child.put("idCardInstanceBarcode", item.getIdCardInstanceBarcode()); child.put("tousseInstanceBarcode", item.getTousseInstanceBarcode()); + + if(tiToUrgentLevel != null && tiToUrgentLevel.containsKey(item.getTousseInstanceId())){ + UrgentLevel urgentLevel = tiToUrgentLevel.get(item.getTousseInstanceId()); + if(maxUrgentLevel == null || maxUrgentLevel.getGrade() < urgentLevel.getGrade()){ + maxUrgentLevel = urgentLevel; + } + child.put("urgentLevel", getUrgentObj(urgentLevel)); + } + child.put("packerCode", item.getPackerCode()); child.put("packer", item.getPacker()); child.put("reviewerCode", item.getReviewerCode()); @@ -471,9 +498,98 @@ tousseDefinitionNode.put("amount", (tousseDefinitionNode.optInt("amount") + 1)); scannedBarcodeArr.add(item.getTousseInstanceBarcode()); } + if(maxUrgentLevel != null){ + data.put("urgentLevel", getUrgentObj(maxUrgentLevel)); + } } data.put("children", map.values()); data.put("scannedBarcodeArr", scannedBarcodeArr); return data; } + private JSONObject getUrgentObj(UrgentLevel urgentLevel){ + JSONObject urgentLevelObj = new JSONObject(); + urgentLevelObj.put("id", urgentLevel.getId()); + urgentLevelObj.put("name", urgentLevel.getName()); + urgentLevelObj.put("colorCode", urgentLevel.getColorCode()); + urgentLevelObj.put("grade", urgentLevel.getGrade()); + return urgentLevelObj; + } + @Override + public void setUrgentInfoOfSterilizationTransition(JSONObject result) { + JSONArray jsonArray = result.optJSONArray("rows"); + if (jsonArray == null || jsonArray.size() == 0) { + return; + } + Map urgentLevelMap = new HashMap(); + List uls = urgentLevelManager.getAll(); + if(CollectionUtils.isEmpty(uls)){ + return; + } + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = jsonArray.optJSONObject(i); + if (obj == null) { + continue; + } + int maxGrade = obj.optInt("maxGrade"); + if(maxGrade == 0){ + continue; + } + JSONObject urgentLevel = null; + if(urgentLevelMap.containsKey(maxGrade)){ + urgentLevel = urgentLevelMap.get(maxGrade); + }else{ + + for (UrgentLevel ul : uls) { + if(maxGrade == ul.getGrade().intValue()){ + urgentLevel = new JSONObject(); + urgentLevel.put("id", ul.getId()); + urgentLevel.put("came", ul.getName()); + urgentLevel.put("colorCode", ul.getColorCode()); + urgentLevel.put("colorName", ul.getColorName()); + urgentLevelMap.put(maxGrade, urgentLevel); + break; + } + } + } + obj.put("urgentLevel", urgentLevel); + } + } + private Map getTiToUrgentLevel(Set tiIds){ + if(CollectionUtils.isEmpty(tiIds)){ + return null; + } + StringBuffer sql = new StringBuffer(); + sql.append("select ti.id,ul.id ulId,ul.colorCode,ul.grade,ul.name from "); + sql.append(TousseInstance.class.getSimpleName()); + sql.append(" ti join "); + sql.append(UrgentLevel.class.getSimpleName()); + sql.append(" ul on ul.id=ti.urgentLevel_id where 1=1 "); + sql.append(SqlUtils.getInLongListSql("ti.id", tiIds)); + ResultSet rs = null; + Map tiToUrgentLevel = new HashMap(); + Map urgentLevelIdToUrgentLevelMap = new HashMap(); + try { + rs = objectDao.executeSql(sql.toString()); + while(rs.next()){ + Long ulId = rs.getLong("ulId"); + UrgentLevel ul = null; + if(urgentLevelIdToUrgentLevelMap.containsKey(ulId)){ + ul = urgentLevelIdToUrgentLevelMap.get(ulId); + }else{ + ul = new UrgentLevel(); + ul.setId(ulId); + ul.setColorCode(rs.getString("colorCode")); + ul.setGrade(rs.getInt("grade")); + ul.setName(rs.getString("name")); + urgentLevelIdToUrgentLevelMap.put(ulId, ul); + } + tiToUrgentLevel.put(rs.getLong("id"), ul); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + return tiToUrgentLevel; + } }