Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java =================================================================== diff -u -r15775 -r15798 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 15775) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 15798) @@ -194,7 +194,7 @@ * @departName 科室名称 * @return 返回所有器械包的名称及数量、总数量 */ - public String getTodaySignedTousseInstance(String departCode,String departName); + public JSONObject getTodaySignedTousseInstance(String departCode,String departName); /** * 根据首尾器械包条码或虚拟篮筐别名查询相应的器械包实例(在审核打包、灭菌管理、发货计划等模块都可能会调用此方法) Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r15775 -r15798 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 15775) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 15798) @@ -1994,53 +1994,36 @@ } @Override - public String getTodaySignedTousseInstance(String departCode,String departName) { + public JSONObject getTodaySignedTousseInstance(String departCode,String departName) { Date today = new Date(); - int tousseAmount = 0; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String todayStart = sdf.format(today)+" 00:00:00"; String todayEnd = sdf.format(today)+" 23:59:59"; - String hql = "select tousseName,count(*) from TousseInstance where signedDate between " + String hql = "select tousseName,count(*) as amount,signedDate from TousseInstance where signedDate between " + dateQueryAdapter.dateAdapter(todayStart) + " and " + dateQueryAdapter.dateAdapter(todayEnd) + " and location = '" - + departCode + "' group by tousseName"; + + departCode + "' group by tousseName,signedDate order by signedDate desc"; ResultSet rs = objectDao.executeSql(hql); - Map map = new HashMap(); - + SignedTousseInstanceSumary sumary = new SignedTousseInstanceSumary(); if(rs != null){ try { while(rs.next()){ - String name = rs.getString(1); - int sum = rs.getInt(2); - map.put(name, sum); - tousseAmount += sum; + String name = rs.getString("tousseName"); + int sum = rs.getInt("amount"); + Date signedDate = rs.getTimestamp("signedDate"); + sumary.addItem(name, sum, signedDate); } } catch (SQLException e) { e.printStackTrace(); }finally { DatabaseUtil.closeResultSetAndStatement(rs); } } - JSONArray array = new JSONArray(); - - for (Map.Entry entry : map.entrySet()) { - JSONObject obj = new JSONObject(); - obj.put("tousseName", entry.getKey()); - obj.put("amount", entry.getValue()); - array.add(obj); - } - - JSONObject obj = new JSONObject(); - - obj.put("departName", departName); - obj.put("tousseAmount", tousseAmount); - obj.put("data", array); - - return obj.toString(); + return sumary.getJsonResult(departName); } @Override Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/SignedTousseInstanceSumary.java =================================================================== diff -u --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/SignedTousseInstanceSumary.java (revision 0) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/SignedTousseInstanceSumary.java (revision 15798) @@ -0,0 +1,83 @@ +package com.forgon.disinfectsystem.tousse.toussedefinition.service; + +import java.util.Comparator; +import java.util.Date; +import java.util.LinkedList; +import java.util.List; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.Predicate; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import com.forgon.disinfectsystem.tousse.toussedefinition.vo.SignedTousseInstance; +import com.forgon.tools.MathTools; +import com.forgon.tools.string.StringTools; + +/** + * 器械包签收列表汇总 + * @author kzh + * + */ +public class SignedTousseInstanceSumary { + private List allSignedTousse = new LinkedList(); + + public void addItem(String tousseName,int amount,Date signedDate){ + SignedTousseInstance find = CollectionUtils.find(allSignedTousse, new Predicate(){ + @Override + public boolean evaluate(SignedTousseInstance object) { + return StringTools.equals(tousseName, object.getTousseName()); + } + }); + if(find == null){ + find = new SignedTousseInstance(); + find.setTousseName(tousseName); + find.setSignedDate(signedDate); + allSignedTousse.add(find); + } + find.setAmount(MathTools.add(amount, find.getAmount()).intValue()); + if(signedDate != null && signedDate.after(find.getSignedDate())){ + find.setSignedDate(signedDate); + } + } + /** + * 获取结果的json对象 + * @param departName 科室名称 + * @return + */ + public JSONObject getJsonResult(String departName){ + JSONArray array = new JSONArray(); + int tousseAmount = 0; + + if(CollectionUtils.isNotEmpty(allSignedTousse)){ + //按时间的降顺排序 + allSignedTousse.sort(new Comparator(){ + + @Override + public int compare(SignedTousseInstance o1, + SignedTousseInstance o2) { + if(o1.getSignedDate().after(o2.getSignedDate())){ + return -1; + }else if(o1.getSignedDate().before(o2.getSignedDate())){ + return 1; + }else{ + return 0; + } + }}); + + for (SignedTousseInstance entry : allSignedTousse) { + JSONObject obj = new JSONObject(); + obj.put("tousseName", entry.getTousseName()); + obj.put("amount", entry.getAmount()); + tousseAmount = MathTools.add(tousseAmount, entry.getAmount()).intValue(); + array.add(obj); + } + } + JSONObject obj = new JSONObject(); + + obj.put("departName", departName); + obj.put("tousseAmount", tousseAmount); + obj.put("data", array); + return obj; + } +} Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/vo/SignedTousseInstance.java =================================================================== diff -u --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/vo/SignedTousseInstance.java (revision 0) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/vo/SignedTousseInstance.java (revision 15798) @@ -0,0 +1,33 @@ +package com.forgon.disinfectsystem.tousse.toussedefinition.vo; + +import java.util.Date; + +/** + * 器械包签收列表vo对象 + * @author kzh + * + */ +public class SignedTousseInstance { + private String tousseName; + private int amount; + private Date signedDate; + + public String getTousseName() { + return tousseName; + } + public void setTousseName(String tousseName) { + this.tousseName = tousseName; + } + public int getAmount() { + return amount; + } + public void setAmount(int amount) { + this.amount = amount; + } + public Date getSignedDate() { + return signedDate; + } + public void setSignedDate(Date signedDate) { + this.signedDate = signedDate; + } +} Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/security/service/WebServiceManagerImpl.java =================================================================== diff -u -r15493 -r15798 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/security/service/WebServiceManagerImpl.java (.../WebServiceManagerImpl.java) (revision 15493) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/security/service/WebServiceManagerImpl.java (.../WebServiceManagerImpl.java) (revision 15798) @@ -2016,7 +2016,7 @@ JSONObject params = JSONObject.fromObject(jsonParamStr); String departName = params.getString("departName"); String departCoding = params.getString("departCoding"); - return tousseInstanceManager.getTodaySignedTousseInstance(departCoding, departName); + return tousseInstanceManager.getTodaySignedTousseInstance(departCoding, departName).toString(); } @Override Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java =================================================================== diff -u -r15541 -r15798 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 15541) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/packing/action/TousseInstanceAction.java (.../TousseInstanceAction.java) (revision 15798) @@ -1081,16 +1081,7 @@ public void loadTodaySignedTousse(){ String departCode = acegiHelper.getCurrentOrgUnitCode(); String departName = acegiHelper.getCurrentOrgUnitName(); - String jsonStr = tousseInstanceManager.getTodaySignedTousseInstance(departCode, departName); - - HttpServletResponse res = StrutsParamUtils.getResponse(); - res.setCharacterEncoding("UTF-8"); - try { - res.getWriter().print(jsonStr); - } catch (IOException e) { - e.printStackTrace(); - } - + StrutsResponseUtils.output(tousseInstanceManager.getTodaySignedTousseInstance(departCode, departName)); } public void loadAllDepartmentTousse() {