Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseInstanceTableManager.java =================================================================== diff -u -r26886 -r26944 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseInstanceTableManager.java (.../TousseInstanceTableManager.java) (revision 26886) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/dwr/table/TousseInstanceTableManager.java (.../TousseInstanceTableManager.java) (revision 26944) @@ -641,8 +641,9 @@ Map map = new HashMap(); if (CollectionUtils.isNotEmpty(idds)) { String sql = String.format(" select po.id, po.inspector from PackingRecord po where (1=1) and %s ", SqlUtils.getNonStringFieldInLargeCollectionsPredicate("po.id", idds)); - ResultSet resultSet = objectDao.executeSql(sql.toString()); + ResultSet resultSet = null; try { + resultSet = objectDao.executeSql(sql); while(resultSet.next()) { String packingRecordId = resultSet.getString(1); String inspector = resultSet.getString(2); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r26941 -r26944 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 26941) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 26944) @@ -4599,7 +4599,7 @@ * @param tIInfoJSONArray 器械包JSON * @param tousseInstanceList 器械包实例列表 * @param orgUnitCoding 当前登陆科室 - * @param beginDate 科室时间 + * @param beginDate 开始时间 * @param endDate 结束时间 * @return */ @@ -4628,8 +4628,9 @@ + " and ti.status = '" + TousseInstance.STATUS_SHIPPED + "' and ti.location = '" + orgUnitCoding + "'" + " and " + dateQueryAdapter.dateAreaSql("ti.invoiceSendTime", beginDate, endDate) + " group by ti.tousseName"; - ResultSet result = objectDao.executeSql(sql); + ResultSet result = null; try { + result = objectDao.executeSql(sql); while (result.next()) { tousseAmountMap.put(result.getString("tousseName"), result.getString("waitSignAmount")); } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/signRecord/service/SignRecordManagerImpl.java =================================================================== diff -u -r26941 -r26944 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/signRecord/service/SignRecordManagerImpl.java (.../SignRecordManagerImpl.java) (revision 26941) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/signRecord/service/SignRecordManagerImpl.java (.../SignRecordManagerImpl.java) (revision 26944) @@ -282,8 +282,9 @@ String sql = String.format( "select po.tousseName, count(po.tousseName) amount from %s po where po.signRecordId = %s group by (po.tousseName) order by po.tousseName", TousseInstance.class.getSimpleName(), signRecordId); - ResultSet result = objectDao.executeSql(sql); + ResultSet result = null; try { + result = objectDao.executeSql(sql); while (result.next()) { Map map = new HashMap(); map.put("tousseName", StringTools.defaultString(result.getString("tousseName"))); @@ -308,6 +309,7 @@ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); List> list = new ArrayList>(); if (StringUtils.isBlank(beginDate)) { + // 默认获取“近二天”待签收器械包 beginDate = DateTools.startOfYesterday("yyyy-MM-dd"); } if (StringUtils.isBlank(endDate)) { @@ -333,8 +335,9 @@ + timeSql + " group by ti.tousseName" + " order by ti.tousseName"; - ResultSet result = objectDao.executeSql(sql); + ResultSet result = null; try { + result = objectDao.executeSql(sql); while (result.next()) { Map map = new HashMap(); map.put("tousseName", StringTools.defaultString(result.getString("tousseName"))); Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java =================================================================== diff -u -r26941 -r26944 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 26941) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 26944) @@ -257,8 +257,9 @@ String beginDate = null; String endDate = null; if (sendoutTime != null && !"all".equals(sendoutTime)) { - beginDate = sendoutTime.substring(0, sendoutTime.lastIndexOf(";")); - endDate = sendoutTime.substring(sendoutTime.lastIndexOf(";") + 1); + String[] strArr = sendoutTime.split(";"); + beginDate = strArr[0]; + endDate = strArr[1]; } String result = ""; try { Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/signRecord/dwr/table/SignRecordTableManager.java =================================================================== diff -u -r26941 -r26944 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/signRecord/dwr/table/SignRecordTableManager.java (.../SignRecordTableManager.java) (revision 26941) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/signRecord/dwr/table/SignRecordTableManager.java (.../SignRecordTableManager.java) (revision 26944) @@ -1,22 +1,39 @@ package com.forgon.disinfectsystem.signRecord.dwr.table; +import java.sql.ResultSet; +import java.sql.SQLException; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import com.forgon.component.grid.GridManager; import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.disinfectsystem.entity.basedatamanager.signRecord.SignRecord; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.string.StringTools; +import com.forgon.tools.util.SqlUtils; public class SignRecordTableManager { private GridManager gridManager; private DateQueryAdapter dateQueryAdapter; + + private ObjectDao objectDao; public void setGridManager(GridManager gridManager) { this.gridManager = gridManager; @@ -26,6 +43,10 @@ this.dateQueryAdapter = dateQueryAdapter; } + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } + /** * 查找签收记录 * @param parameterMap @@ -50,6 +71,68 @@ sql += " and po.departCode = '" + orgUnitCode + "'"; String json = gridManager.renderGrid(parameterMap, SignRecord.class.getSimpleName(), sql, new String[] {}); + json = getSignedTousseInstanceSummary(json); return json; } + + /** + * 签收记录添加备注(5个器械包,3个敷料包) + * @param json 签收记录json + * @return + */ + private String getSignedTousseInstanceSummary (String json) { + JSONObject jsonObject = JSONObject.fromObject(json); + if(jsonObject == null){ + return json; + } + JSONArray jsonArray = jsonObject.optJSONArray("rows"); + if (jsonArray == null || jsonArray.size() == 0) { + return json; + } + Set signRecordIds = new HashSet(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = jsonArray.optJSONObject(i); + if (obj != null) { + if (StringUtils.isNotBlank(obj.optString("id"))) { + signRecordIds.add(obj.optString("id")); + } + } + } + Map map = new HashMap(); + if (CollectionUtils.isNotEmpty(signRecordIds)) { + String sql = String.format("select sr.id, td.tousseType, count(0) amount from %s ti join %s td on ti.tousseDefinition_id = td.id " + + " join %s sr on ti.signRecordId = sr.id and %s " + + " group by sr.id, td.tousseType ", TousseInstance.class.getSimpleName(), + TousseDefinition.class.getSimpleName(), SignRecord.class.getSimpleName(), + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("sr.id", signRecordIds)); + ResultSet resultSet = null; + try { + resultSet = objectDao.executeSql(sql); + while(resultSet.next()) { + String signRecordId = resultSet.getString("id"); + String tousseType = resultSet.getString("tousseType"); + int amount = resultSet.getInt("amount"); + if (map.get(signRecordId) == null) { + map.put(signRecordId, amount + "个" + StringTools.defaultString(tousseType)); + } else { + map.put(signRecordId,map.get(signRecordId) + ";" + amount + "个" + StringTools.defaultString(tousseType)); + } + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(resultSet); + } + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = jsonArray.optJSONObject(i); + String remark = map.get(obj.optString("id")); + if (obj != null) { + obj.put("remark", remark); + } + } + return jsonObject.toString(); + } + return json; + } + }