Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/action/ForeignProxyDisinfectionAction.java =================================================================== diff -u -r27042 -r29175 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/action/ForeignProxyDisinfectionAction.java (.../ForeignProxyDisinfectionAction.java) (revision 27042) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/foreignproxydisinfection/action/ForeignProxyDisinfectionAction.java (.../ForeignProxyDisinfectionAction.java) (revision 29175) @@ -1,6 +1,8 @@ package com.forgon.disinfectsystem.sterilizationmanager.foreignproxydisinfection.action; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; @@ -17,12 +19,18 @@ import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; +import org.springframework.beans.BeanUtils; +import com.forgon.directory.model.OrgUnit; +import com.forgon.directory.service.OrgUnitManager; import com.forgon.disinfectsystem.entity.sterilizationmanager.foreignproxydisinfection.ForeignProxyDisinfection; +import com.forgon.disinfectsystem.entity.sterilizationmanager.foreignproxydisinfection.ForeignProxyItem; +import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.expirationdateinfo.service.ExpirationDateInfoManager; import com.forgon.disinfectsystem.sterilizationmanager.foreignproxydisinfection.service.ForeignProxyDisinfectionManager; import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.StrutsResponseUtils; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.json.JsonPropertyFilter; import com.opensymphony.xwork2.ModelDriven; @@ -48,6 +56,12 @@ private ForeignProxyDisinfectionManager foreignProxyDisinfectionManager; + private OrgUnitManager orgUnitManager; + + public void setOrgUnitManager(OrgUnitManager orgUnitManager) { + this.orgUnitManager = orgUnitManager; + } + public void setExpirationDateInfoManager( ExpirationDateInfoManager expirationDateInfoManager) { this.expirationDateInfoManager = expirationDateInfoManager; @@ -66,16 +80,36 @@ public void saveForeignProxyDisinfection() { long t1 = System.currentTimeMillis(); - JSONObject params = buildParams(); JSONObject jsonObj = new JSONObject(); + JSONArray foreignProxyDisinfections = new JSONArray(); + Boolean isUpdate = false; + if(DatabaseUtil.isPoIdValid(foreignProxyDisinfection.getId())){ + isUpdate = true; + } try { - foreignProxyDisinfectionManager - .saveOrUpdateProxyDisinfection(foreignProxyDisinfection,params); - jsonObj.put("success", true); - JSONObject foreignProxyDisinfectionJson = new JSONObject(); - foreignProxyDisinfectionJson.put("id", foreignProxyDisinfection.getId()); - jsonObj.put("foreignProxyDisinfection", foreignProxyDisinfectionJson); + JSONArray params = buildParams(); + for (Object param : params) { + ForeignProxyDisinfection tempForeignProxyDisinfection = new ForeignProxyDisinfection(); + JSONObject paramJson = (JSONObject) param; + String orgUnitCode = paramJson.optString("orgUnitCode"); + String orgUnitName = paramJson.optString("orgUnitName"); + if(isUpdate && StringUtils.equals(orgUnitCode, foreignProxyDisinfection.getDepartCoding())){ + tempForeignProxyDisinfection = foreignProxyDisinfection; + }else{ + BeanUtils.copyProperties(foreignProxyDisinfection, tempForeignProxyDisinfection); + tempForeignProxyDisinfection.setApplicationItems(new ArrayList()); + tempForeignProxyDisinfection.setForeignProxyItems(new ArrayList()); + } + tempForeignProxyDisinfection.setDepart(orgUnitName); + tempForeignProxyDisinfection.setDepartCoding(orgUnitCode); + foreignProxyDisinfectionManager.saveOrUpdateProxyDisinfection(tempForeignProxyDisinfection,paramJson); + jsonObj.put("success", true); + JSONObject foreignProxyDisinfectionJson = new JSONObject(); + foreignProxyDisinfectionJson.put("id", tempForeignProxyDisinfection.getId()); + foreignProxyDisinfections.add(foreignProxyDisinfectionJson); + } + jsonObj.put("foreignProxyDisinfection", foreignProxyDisinfections); } catch (Exception e) { e.printStackTrace(); jsonObj.put("success", false); @@ -93,48 +127,108 @@ } - private JSONObject buildParams() { - JSONObject params = new JSONObject(); + private JSONArray buildParams() { + + JSONArray paramArray = new JSONArray(); String itemInfoList = StrutsParamUtils.getPraramValue("itemIds", ""); String packTousse = StrutsParamUtils.getPraramValue("packTousse", ""); String printTousse = StrutsParamUtils.getPraramValue("printTousse", ""); String printApplication = StrutsParamUtils.getPraramValue("printApplication", ""); - params.put("itemInfoList", itemInfoList); - if("true".equals(packTousse)){ - params.put("packTousse", true); - }else{ - params.put("packTousse", false); + String departCoding = StrutsParamUtils.getPraramValue("departCoding", ""); + + /*itemInfoList = "[{\"id\":0,\"tousseName\":\"外部代理灭菌包001\",\"count\":1,\"packageType\":\"保鲜袋\",\"tousseType\":\"外部代理灭菌\",\"sterilingType\":\"无\"," + + "\"basketName\":\"灭菌筐01\",\"basketBarcode\":\"010028015\",\"sterileStartDate\":\"\",\"departCoding\":\"001\"}," + + "{\"id\":0,\"tousseName\":\"外部代理灭菌002\",\"count\":2,\"packageType\":\"保鲜袋\",\"tousseType\":\"外部代理灭菌\",\"sterilingType\":\"无\"," + + "\"basketName\":\"灭菌筐01\",\"basketBarcode\":\"010028015\",\"sterileStartDate\":\"\",\"departCoding\":\"001\"}," + + "{\"id\":0,\"tousseName\":\"外部代理灭菌包001\",\"count\":3,\"packageType\":\"保鲜袋\",\"tousseType\":\"外部代理灭菌\",\"sterilingType\":\"无\"," + + "\"basketName\":\"灭菌筐01\",\"basketBarcode\":\"010028015\",\"sterileStartDate\":\"\",\"departCoding\":\"002\"}]";*/ + + JSONArray itemInfoArray = JSONArray.fromObject(itemInfoList); + Map departToItemsMap = new HashMap(); + for (Object object : itemInfoArray) { + JSONObject itemJson = (JSONObject) object; + String departCode = itemJson.optString("departCoding", ""); + if(StringUtils.isBlank(departCode)){ + // 默认物品都是同一个科室的 + departCode = departCoding; + } + String key = departCode; + JSONArray array = departToItemsMap.get(key); + if(array == null){ + array = new JSONArray(); + } + array.add(itemJson); + departToItemsMap.put(key, array); } - if("true".equals(printTousse)){ - params.put("printTousse", true); - }else{ - params.put("printTousse", false); + Map codeToOrgUnitMap = new HashMap(); + List orgUnitList = orgUnitManager.getByCodes(departToItemsMap.keySet()); + for (OrgUnit orgUnit : orgUnitList) { + codeToOrgUnitMap.put(orgUnit.getOrgUnitCoding(), orgUnit); } - if("true".equals(printApplication)){ - params.put("printApplication", true); - }else{ - params.put("printApplication", false); - } - params.put("applicationTimeStr", StrutsParamUtils.getPraramValue("applicationTimeStr", null)); - params.put("arrivedTimeStr", StrutsParamUtils.getPraramValue("arrivedTimeStr", null)); - params.put("scheduleTimeStr", StrutsParamUtils.getPraramValue("scheduleTimeStr", null)); - return params; + for (String orgUnitCode : departToItemsMap.keySet()) { + JSONArray array = departToItemsMap.get(orgUnitCode); + JSONObject params = new JSONObject(); + params.put("itemInfoList", array.toString()); + params.put("orgUnitCode", orgUnitCode); + params.put("orgUnitName", codeToOrgUnitMap.get(orgUnitCode).getName()); + if("true".equals(packTousse)){ + params.put("packTousse", true); + }else{ + params.put("packTousse", false); + } + if("true".equals(printTousse)){ + params.put("printTousse", true); + }else{ + params.put("printTousse", false); + } + if("true".equals(printApplication)){ + params.put("printApplication", true); + }else{ + params.put("printApplication", false); + } + + params.put("applicationTimeStr", StrutsParamUtils.getPraramValue("applicationTimeStr", null)); + params.put("arrivedTimeStr", StrutsParamUtils.getPraramValue("arrivedTimeStr", null)); + params.put("scheduleTimeStr", StrutsParamUtils.getPraramValue("scheduleTimeStr", null)); + paramArray.add(params); + } + return paramArray; } public void packForeignProxyDisinfection() { long t1 = System.currentTimeMillis(); - JSONObject params = buildParams(); + JSONArray params = buildParams(); JSONObject jsonObj = new JSONObject(); - boolean printTousse = JSONUtil.optBoolean(params, "printTousse", false); - boolean printApplication = JSONUtil.optBoolean(params, "printApplication", false); - ForeignProxyDisinfection retForeignProxyDisinfection = null; + boolean printTousse = JSONUtil.optBoolean(params.getJSONObject(0), "printTousse", false); + boolean printApplication = JSONUtil.optBoolean(params.getJSONObject(0), "printApplication", false); + List retForeignProxyDisinfectionList = new ArrayList(); jsonObj.put("success", false); + Boolean isUpdate = false; + if(DatabaseUtil.isPoIdValid(foreignProxyDisinfection.getId())){ + isUpdate = true; + } try { try { - retForeignProxyDisinfection = foreignProxyDisinfectionManager.packForeignProxyDisinfection(foreignProxyDisinfection,params); + for (Object object : params) { + ForeignProxyDisinfection tempForeignProxyDisinfection = new ForeignProxyDisinfection(); + JSONObject paramJson = (JSONObject) object; + String orgUnitCode = paramJson.optString("orgUnitCode"); + String orgUnitName = paramJson.optString("orgUnitName"); + if(isUpdate && StringUtils.equals(orgUnitCode, foreignProxyDisinfection.getDepartCoding())){ + tempForeignProxyDisinfection = foreignProxyDisinfection; + }else{ + BeanUtils.copyProperties(foreignProxyDisinfection, tempForeignProxyDisinfection); + tempForeignProxyDisinfection.setApplicationItems(new ArrayList()); + tempForeignProxyDisinfection.setForeignProxyItems(new ArrayList()); + } + tempForeignProxyDisinfection.setDepart(orgUnitName); + tempForeignProxyDisinfection.setDepartCoding(orgUnitCode); + ForeignProxyDisinfection retForeignProxyDisinfection = foreignProxyDisinfectionManager.packForeignProxyDisinfection(tempForeignProxyDisinfection,paramJson); + retForeignProxyDisinfectionList.add(retForeignProxyDisinfection); + } jsonObj.put("success", true); } catch (Exception e) { e.printStackTrace(); @@ -144,16 +238,25 @@ // 是否打印 if(printApplication || printTousse){ try { - Long id = foreignProxyDisinfection.getId(); - if(retForeignProxyDisinfection!=null && retForeignProxyDisinfection.hasPacked()){ - params.put("id", retForeignProxyDisinfection.getId()); - foreignProxyDisinfectionManager.getPrintInfo(jsonObj,params); - if(jsonObj.containsKey("tousseList")){ - jsonObj.put("success", true); - }else{ - jsonObj.put("success", false); + JSONArray printInfoArray = new JSONArray(); + for (ForeignProxyDisinfection retForeignProxyDisinfection : retForeignProxyDisinfectionList) { + if(retForeignProxyDisinfection!=null && retForeignProxyDisinfection.hasPacked()){ + JSONObject reslut = new JSONObject(); + JSONObject param = params.getJSONObject(0); + param.put("id", retForeignProxyDisinfection.getId()); + foreignProxyDisinfectionManager.getPrintInfo(reslut,param); + if(reslut.containsKey("tousseList")){ + printInfoArray.add(reslut); + } } } + if(printInfoArray.size() == 0){ + jsonObj.put("success", false); + jsonObj.put("msg", "没有要打印的标签!"); + }else{ + jsonObj.put("success", true); + jsonObj.put("printInfoArray", printInfoArray); + } } catch (Exception e) { e.printStackTrace(); jsonObj.put("success", false);