Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r12531 -r12596 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 12531) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 12596) @@ -151,7 +151,7 @@ String companyName = StrutsParamUtils.getPraramValue( "valifateCompanyId", null); String message = "{success:true,message:'验证成功',stauts:1}"; - boolean isExistDuplicate = tousseDefinitionManager.isExistDuplicateTousseDefinitionForDisplay(tousseDefinitionId, + boolean isExistDuplicate = tousseDefinitionManager.isExistDuplicateTousseDefinition(tousseDefinitionId, name, companyName); if (isExistDuplicate) { message = "{success:false,message:'存在相同名字的器械包,请使用其它名称',stauts:0}"; @@ -1165,10 +1165,26 @@ try { spell = java.net.URLDecoder.decode(spell, "UTF-8"); + JSONObject json = null; + // 根据拼音码、五笔码获取内部器械包(器械包和自制物品) + json = tousseDefinitionManager.searchTousseForBorrowing(spell); + HttpServletResponse response = StrutsParamUtils.getResponse(); + response.setCharacterEncoding("UTF-8"); + PrintWriter out; + + out = response.getWriter(); + out.print(json); + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + // 搜索组合物品,包含器械包和一次性物品 public String searchComboGoodsData() { String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); - + String hideDiposableGoodsPrice = StrutsParamUtils.getPraramValue("hideDiposableGoodsPrice", null); if (tousseType.indexOf(TousseDefinition.PACKAGE_TYPE_INSIDE) >= 0){ tousseType = TousseDefinition.PACKAGE_TYPE_INSIDE; } @@ -1186,7 +1202,11 @@ spell = java.net.URLDecoder.decode(spell, "UTF-8"); JSONObject json = null; - json = tousseDefinitionManager.searchComboGoods(spell, tousseType); + boolean showReferencePrice = true; + if(StringUtils.isNotBlank(hideDiposableGoodsPrice) && "true".equals(hideDiposableGoodsPrice)){ + showReferencePrice = false; + } + json = tousseDefinitionManager.searchComboGoods(spell, tousseType,showReferencePrice); HttpServletResponse response = StrutsParamUtils.getResponse(); response.setCharacterEncoding("UTF-8"); PrintWriter out; Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java =================================================================== diff -u -r12580 -r12596 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java (.../TousseDefinition.java) (revision 12580) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseDefinition.java (.../TousseDefinition.java) (revision 12596) @@ -782,6 +782,14 @@ this.parentID = parentID; } + public Long getAncestorID() { + return ancestorID; + } + + public void setAncestorID(Long ancestorID) { + this.ancestorID = ancestorID; + } + @Transient public String getOrginalName() { return orginalName; Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java =================================================================== diff -u -r12531 -r12596 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 12531) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 12596) @@ -20,15 +20,15 @@ public void saveOrUpdate(TousseDefinition tousseDefinition); public TousseDefinition getTousseDefinitionById(String id); - + public TousseDefinition getById_ForUpdate_MANDATORY(String id); - + public boolean delete(TousseDefinition tousseDefinition); public boolean deleteTousseDefinitionById(String id); public void saveTousseDefinition(TousseDefinition tousseDefinition, - File upload, String materialInstanceStr); + File upload,String materialInstanceStr); public boolean isExistDuplicateTousseDefinition(String id, String name, String companyName); @@ -43,11 +43,10 @@ public TousseDefinition getTousseDefinitionByNameTypeAndAPPID(String tousseName,String tousseType,String appid); public JSONObject searchTousseDefinition(String searchString, - String tousseType, String handlerDepartCode, - boolean showDisableGoods); + String tousseType, String handlerDepartCode,boolean showDisableGoods); public JSONObject searchForeignTousseDefinition(String simpleSpell); - + public JSONObject searchCustomTousseDefinitions(String searchString); public JSONObject searchTousseAndDiposableGoods(String simpleSpell); @@ -64,11 +63,10 @@ public JSONObject searchTousseForBorrowing(String simpleSpell); - public String searchInsideTousse(String simpleSpell, String pages, - String countOfLI); + public String searchInsideTousse(String simpleSpell,String pages,String countOfLI); + + public JSONObject searchComboGoods(String searchString, String tousseType,boolean showReferencePrice); - public JSONObject searchComboGoods(String searchString, String tousseType); - public List findMaterialInstancesByTousseDefinitionName( String tousseName); @@ -92,44 +90,43 @@ public List getForeignTousseDefinitionByName( String tousseName); + + public JSONArray getMaterialsOfDisinfectionGoods( + TousseDefinition td, boolean displayMaterialAmount); - public JSONArray getMaterialsOfDisinfectionGoods(TousseDefinition td, - boolean displayMaterialAmount); - - public JSONArray getMaterialsOfTousseDefinition(TousseDefinition td); - + public JSONArray getMaterialsOfTousseDefinition( + TousseDefinition td); + public JSONObject getToolAndImplantAmount(TousseDefinition td); - + public List getTousseDefinitionByFatherTousseId(Long id); public TousseDefinition getTousseDefinitionByNameAndTousseType(String name, String tousseType); + + public TousseDefinition getTousseDefinitionByLikeNameAndTousseType(String name, + String tousseType); - public TousseDefinition getTousseDefinitionByLikeNameAndTousseType( - String name, String tousseType); - public TousseDefinition getTousseDefinitionBySql(String sql); public TousseDefinition getByNameAndSupplierName(String likeTousseName, String supplierName); - + public int getWorkloadAmount(TousseDefinition tousseDefinition); - public JSONObject searchAllTousseAndDiposableGoods(String simpleSpell, - boolean showDisableGoods); - + public JSONObject searchAllTousseAndDiposableGoods(String simpleSpell,boolean showDisableGoods); + public List getTousseDefinitionByCode(String departCode); List findTousseDefinitionsBySql(String sql); - + public Double getDisinfectGoodsPrice(TousseDefinition tousseDefinition); - - public boolean updateImageUploadStatus(String tousseDefinitionId, - String imageType); - - public boolean updateVideoUploadStatus(String tousseDefinitionId, - String videoType); - + + public boolean updateImageUploadStatus(String tousseDefinitionId, String imageType); + + public boolean updateVideoUploadStatus(String tousseDefinitionId, String videoType); + + public List> searchTousseOrDiposableGoodsBySpellAndWbCode( String simpleSpell, boolean isSeachTousse, boolean includeCoustomTousse, boolean searchTousseBelonged, Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/TousseDeliverDetailVO.java =================================================================== diff -u -r12331 -r12596 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/TousseDeliverDetailVO.java (.../TousseDeliverDetailVO.java) (revision 12331) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/TousseDeliverDetailVO.java (.../TousseDeliverDetailVO.java) (revision 12596) @@ -4,33 +4,89 @@ private Integer serialNumber; private String tousseName; - private Integer tousseAmount; - private Integer materialAmount; + private Integer recyclingAmount = 0;//�������� + + private Integer packingAmount = 0;//װ������ + + private Integer reviewAmount = 0;//������� + + private Integer sterilizationAmount = 0;//������� + + private Integer sendOutAmount = 0;//�������� + + private Integer materialAmount = 0;//�������������� + public Integer getSerialNumber() { return serialNumber; } + public void setSerialNumber(Integer serialNumber) { this.serialNumber = serialNumber; } + public String getTousseName() { return tousseName; } + public void setTousseName(String tousseName) { this.tousseName = tousseName; } + public Integer getTousseAmount() { - return tousseAmount; + return sendOutAmount; } + public void setTousseAmount(Integer tousseAmount) { - this.tousseAmount = tousseAmount; + this.sendOutAmount = tousseAmount; } + public Integer getMaterialAmount() { return materialAmount; } + public void setMaterialAmount(Integer materialAmount) { this.materialAmount = materialAmount; } - + public Integer getRecyclingAmount() { + return recyclingAmount; + } + + public void setRecyclingAmount(Integer recyclingAmount) { + this.recyclingAmount = recyclingAmount; + } + + public Integer getPackingAmount() { + return packingAmount; + } + + public void setPackingAmount(Integer packingAmount) { + this.packingAmount = packingAmount; + } + + public Integer getReviewAmount() { + return reviewAmount; + } + + public void setReviewAmount(Integer reviewAmount) { + this.reviewAmount = reviewAmount; + } + + public Integer getSterilizationAmount() { + return sterilizationAmount; + } + + public void setSterilizationAmount(Integer sterilizationAmount) { + this.sterilizationAmount = sterilizationAmount; + } + + public Integer getSendOutAmount() { + return sendOutAmount; + } + + public void setSendOutAmount(Integer sendOutAmount) { + this.sendOutAmount = sendOutAmount; + } + } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/TousseItemVO.java =================================================================== diff -u -r12331 -r12596 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/TousseItemVO.java (.../TousseItemVO.java) (revision 12331) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/TousseItemVO.java (.../TousseItemVO.java) (revision 12596) @@ -10,8 +10,9 @@ public class TousseItemVO { private String itemName;// 包名 + private Long tousseInstanceAmount;// 拆包数量/灭菌数量 - + public String getItemName() { return itemName; } @@ -27,5 +28,5 @@ public void setTousseInstanceAmount(Long tousseInstanceAmount) { this.tousseInstanceAmount = tousseInstanceAmount; } - + } Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java =================================================================== diff -u -r12553 -r12596 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 12553) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 12596) @@ -41,6 +41,7 @@ import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.entity.useRecord.UseDiposableGoodsItem; import com.forgon.disinfectsystem.entity.useRecord.UseRecord; import com.forgon.disinfectsystem.idcardinstance.service.IDCardInstanceManager; import com.forgon.disinfectsystem.recyclingapplication.service.RecyclingApplicationManager; @@ -292,6 +293,9 @@ throw new RuntimeException(String.format( "使用记录必须为未审核状态才能修改,当前状态为[%s]!", curUseRecord.getStatus())); } + //一次性物品处理 + curUseRecord.setDiposableGoodsItems(modified.getDiposableGoodsItems()); + // 暂时只需要锁定页面上的,当前记录对应的因为不会修改,所以不需要锁定 Map tousseInstancesMap = new HashMap(); List originalItemList = original @@ -570,6 +574,7 @@ Map applyTousseMap = new HashMap(); Map applyTousseOfSecondSupplyRoomMap = new HashMap(); Map applyDisinfectTousseMap = new HashMap(); + Map applyDiposableGoodsMap = new HashMap(); List useRecordList = new ArrayList(); List tousseInstanceIDs = new ArrayList(); // key-使用记录id,value-该使用记录中包含的器械包实例条码 @@ -678,12 +683,21 @@ } UseRecord useRecord = getUseRecordById(id); useRecordList.add(useRecord); + if(useRecord.getDiposableGoodsItems() != null){ + for (UseDiposableGoodsItem di : useRecord.getDiposableGoodsItems()) { + Integer useAmount = applyDiposableGoodsMap.get(di.getName()); + if(useAmount == null){ + useAmount = 0; + } + applyDiposableGoodsMap.put(di.getName(), useAmount + di.getAmount()); + } + } } Map map = new HashMap(); map.put("applyTousseMap", applyTousseMap); map.put("applyDisinfectTousseMap", applyDisinfectTousseMap); - map.put("applyTousseOfSecondSupplyRoomMap", - applyTousseOfSecondSupplyRoomMap); + map.put("applyTousseOfSecondSupplyRoomMap",applyTousseOfSecondSupplyRoomMap); + map.put("applyDiposableGoodsMap", applyDiposableGoodsMap); map.put("useRecordList", useRecordList); map.put("recordid_tousseInstanceIds", tousseInstanceIDs); return map; @@ -707,9 +721,9 @@ @SuppressWarnings("unchecked") public void mintRecyclingApplication( boolean isAutomaticlyMergeApplications, - boolean isSecondSupplyRoomNeedRecycle, + boolean isSecondSupplyRoomNeedRecycle,Boolean isDgConvertApplication,Boolean isTousseDgMergeConvert, Map useRecordsMap, String applicant, String depart, - String departCoding, String remark,String operationRoom,String patientName,Date applicationCreateDate) { + String departCoding, String remark,String operationRoom,String patientName,Date applicationCreateDate,double dpf) { Map applyTousseMap = (Map) useRecordsMap .get("applyTousseMap"); @@ -719,6 +733,7 @@ .get("applyTousseOfSecondSupplyRoomMap"); List tousseInstanceIds = (List) useRecordsMap .get("recordid_tousseInstanceIds"); + Map applyDiposableGoodsMap = (Map)useRecordsMap.get("applyDiposableGoodsMap"); /*// 待回收状态器械包申请单记录 List recyclingApplicationList = recyclingApplicationManager @@ -761,10 +776,34 @@ tousseInstanceIds,applicationCreateDate,operationRoom); }*/ - //改为不管科室供应室配置定义是否自动合并,都将重新创建新的申请单 - recyclingApplicationManager.createRecyclingApplicationByTousse( - applyTousseMap, applicant, depart, departCoding, remark, - tousseInstanceIds,applicationCreateDate,operationRoom); + //一次性物品是否转换申请单 + if(isDgConvertApplication == null){ + isDgConvertApplication = false; + } + //器械包一次性物品转换成申请单是否合并成一张单 + if(isTousseDgMergeConvert == null){ + isTousseDgMergeConvert = false; + } + if(isDgConvertApplication && !isTousseDgMergeConvert){ + if(applyTousseMap.size() > 0){ + recyclingApplicationManager.createRecyclingApplicationByTousse( + applyTousseMap,new HashMap(), applicant, depart, departCoding, remark, + tousseInstanceIds,applicationCreateDate,operationRoom,dpf); + } + if(applyDiposableGoodsMap.size() > 0){ + recyclingApplicationManager.createRecyclingApplicationByTousse( + new HashMap(),applyDiposableGoodsMap, applicant, depart, departCoding, remark, + tousseInstanceIds,applicationCreateDate,operationRoom,dpf); + } + }else{ + if(!isDgConvertApplication){ + applyDiposableGoodsMap = new HashMap(); + } + //改为不管科室供应室配置定义是否自动合并,都将重新创建新的申请单 + recyclingApplicationManager.createRecyclingApplicationByTousse( + applyTousseMap,applyDiposableGoodsMap, applicant, depart, departCoding, remark, + tousseInstanceIds,applicationCreateDate,operationRoom,dpf); + } //二级供应室是否需要回收(处理所属手术室的包) if (isSecondSupplyRoomNeedRecycle) { @@ -834,50 +873,6 @@ recyclingApplication.setTousseBarcodes(sb.toString()); } - private void mergeRecyclingApplications( - Map applyTousseMap, String remark, - RecyclingApplication recyclingApplication) { - Map tousseItemMap = new HashMap(); - // 初始化tousseItemeMap - List applicationItems = recyclingApplication - .getApplicationItems(); - for (TousseItem tousseItem : applicationItems) { - if (tousseItemMap.get(tousseItem.getTousseName()) == null) { - tousseItemMap.put(tousseItem.getTousseName(), - tousseItem.getAmount()); - } else { - tousseItemMap.put(tousseItem.getTousseName(), - tousseItemMap.get(tousseItem.getAmount() + 1)); - } - } - - CssdUtils.appendRemarkOfInvoicePlan(recyclingApplication, remark); - recyclingApplication.setSubmitTime(new Date()); - - // 合并申请单 - Iterator iterator = applyTousseMap.keySet().iterator(); - while (iterator.hasNext()) { - String tousseName = (String) iterator.next(); - Integer amount = applyTousseMap.get(tousseName); - if (tousseItemMap.get(tousseName) == null) { - TousseItem tempItem = new TousseItem(); - tempItem.setTousseName(tousseName); - tempItem.setAmount(amount); - tempItem.setDiposable("否"); - - tempItem.setInvoicePlan(recyclingApplication); - objectDao.saveOrUpdate(tempItem); - } else { - for (TousseItem tousseItem : applicationItems) { - if (tousseItem.getTousseName().equals(tousseName)) { - tousseItem.setAmount(tousseItem.getAmount() + amount); - objectDao.saveOrUpdate(tousseItem); - } - } - } - } - } - /** * 使用记录合成申请单 * 针对中六的调整:已改为一条使用记录生成一条申请,不再合并,且页面上允许选择不同科室的使用记录进行转换申请单 @author ShuYongFu @since 2016-01-13 @@ -888,7 +883,7 @@ */ public String createRecyclingApplicationByUseRecords(Collection ids, String applicant, String depart, String departCoding,Date applicationCreateDate) { - SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager + SupplyRoomConfig config = supplyRoomConfigManager .getSystemParamsObj(); String returnMsg = "保存成功"; // 获取使用记录参数 @@ -912,6 +907,8 @@ reviewerCode = loginUserData.getUserName(); } String msg = null; + String projectName = CssdUtils.getConfigProperty("project"); + String hospitalNum = ""; for (UseRecord useRecord : useRecordList) { if(useRecord.getStatus().equals(UseRecord.STATUS_APPLIED)){ @@ -940,13 +937,15 @@ useRecord.setStatus(UseRecord.STATUS_APPLIED); useRecord.setStatusSequence(UseRecord.STATUS_SEQ_APPLIED); - - String remarkTemp = useRecord.getRemark(); - if (remarkTemp != null && !"".equals(remarkTemp)) { - remark.append(remarkTemp).append(";"); - } else { - remark.append(""); + if(!"gzfdzl".equals(projectName)){ + String remarkTemp = useRecord.getRemark(); + if (remarkTemp != null && !"".equals(remarkTemp)) { + remark.append(remarkTemp).append(";"); + } else { + remark.append(""); + } } + String washHandNurse = useRecord.getWashHandNurse(); String circuitNurse = useRecord.getCircuitNurse(); if(washHandNurse == null){ @@ -964,11 +963,12 @@ if(StringUtils.isNotBlank(useRecord.getPatientName())){ patientNameSet.add(useRecord.getPatientName()); } + hospitalNum = useRecord.getHospitalNum(); saveOrUpdate(useRecord); // 二级供应室库存处理 if (isSencondSupplyRoom) { // 二级供应室是否回收器械包 - if (!supplyRoomConfig.isSecondSupplyRoomNeedRecycle()) { + if (!config.isSecondSupplyRoomNeedRecycle()) { // 只处理回收的包 String sql = "where po.useRecord_id = " + useRecord.getId(); List list = tousseInstanceManager @@ -996,23 +996,30 @@ } } } - if(washHandNurseSet.size() > 0){ - remark.append("洗手护士:"); - remark.append(StringUtils.join(washHandNurseSet, ",")).append(";"); + + if("gzfdzl".equals(projectName)){ + remark.append(hospitalNum); + }else{ + if(washHandNurseSet.size() > 0){ + remark.append("洗手护士:"); + remark.append(StringUtils.join(washHandNurseSet, ",")).append(";"); + } + if(circuitNurseSet.size() > 0){ + remark.append("巡回护士:"); + remark.append(StringUtils.join(circuitNurseSet, ",")); + } + if(patientNameSet.size() > 0){ + remark.append("病人:"); + remark.append(StringUtils.join(patientNameSet, ",")); + } } - if(circuitNurseSet.size() > 0){ - remark.append("巡回护士:"); - remark.append(StringUtils.join(circuitNurseSet, ",")); - } - if(patientNameSet.size() > 0){ - remark.append("病人:"); - remark.append(StringUtils.join(patientNameSet, ",")); - } // 新建申请单 - mintRecyclingApplication(supplyRoomConfig.getAutoMergeApplication(), - supplyRoomConfig.isSecondSupplyRoomNeedRecycle(), - useRecordsMap, applicant, depart, departCoding, - remark.toString(),operationRoom,patientName,applicationCreateDate); + mintRecyclingApplication(config.getAutoMergeApplication(), + config.isSecondSupplyRoomNeedRecycle(), + config.getIsDgConvertApplication(), + config.getIsTousseDgMergeConvert(), useRecordsMap, applicant, + depart, departCoding, remark.toString(), operationRoom, + patientName, applicationCreateDate,config.getDiposablePriceFluctuation()); return returnMsg; } @@ -1067,8 +1074,8 @@ public int getTousseAmountByDepartAndUserName(String departCoding, String userName,String startDate,String endDate) { String sql = "select count(*) from tousseInstance t,useRecord r where t.useRecord_id = r.id "; sql += "and r.departCoding = '"+departCoding+"' and r.operator = '" + userName + "' "; - sql += "and r.enteringDate between "+dateQueryAdapter.dateAdapter(startDate+" 00:00:00")+" " - + "and " + dateQueryAdapter.dateAdapter(endDate+" 23:59:59"); + sql += "and r.enteringDate between "+dateQueryAdapter.dateAdapter(startDate)+" " + + "and " + dateQueryAdapter.dateAdapter(endDate); ResultSet rs = objectDao.executeSql(sql); try { while(rs.next()){ @@ -1343,7 +1350,7 @@ useRecord.setApplicationTime(now);//由于回调时生成使用记录立即转换为申请单,所以申请时间也是当前时间 useRecord.setPatientName(objectArray[3]); - useRecord.setHospitalNum(patientInfo.getPatientName()); + useRecord.setHospitalNum(objectArray[5]); useRecord.setStatus(UseRecord.STATUS_APPLIED); if(patientInfo != null){ Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java =================================================================== diff -u -r12553 -r12596 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 12553) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/action/SterilizationRecordAction.java (.../SterilizationRecordAction.java) (revision 12596) @@ -883,7 +883,9 @@ toussesInBasket.addAll((List)map.get("result")); } } - if (toussesInBasket != null) { + if (toussesInBasket != null && toussesInBasket.size() > 0) { + List tousseList = new ArrayList(); + tousseList.addAll(toussesInBasket); Collections.sort(tousseList);//按id降序排序 for (TousseInstance tousseInstance : tousseList) { if (tousseInstance != null @@ -1175,5 +1177,84 @@ public void prepare() throws Exception { iniInfo(); } + + public void interfereSterilization(){ + String id = StrutsParamUtils.getPraramValue("id", null); + String sterilizationRecord_id = StrutsParamUtils.getPraramValue("sterilizationRecord_id", null); + String startDate = StrutsParamUtils.getPraramValue("startDate", null); + String endDate = StrutsParamUtils.getPraramValue("endDate", null); + String sterilizationType = StrutsParamUtils.getPraramValue("sterilizationType", null); + String sterilizationUser = StrutsParamUtils.getPraramValue("sterilizationUser", null); + HttpServletResponse response = StrutsParamUtils.getResponse(); + boolean success = true; + try { + sterilizationRecordManager.saveInterfereSterilizationParams(id,sterilizationRecord_id, + startDate, endDate, sterilizationType, sterilizationUser); + response = StrutsParamUtils.getResponse(); + } catch (Exception e) { + success = false; + } + try { + response.setCharacterEncoding("utf-8"); + response.getWriter().print("{success:"+success+",msg:'保存成功!'}"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void loadSterilizationBasket(){ + String id = StrutsParamUtils.getPraramValue("id", null); + JSONArray array = new JSONArray(); + if(StringUtils.isNotBlank(id)){ + String sql = "select r.reviewedBasket_id,c.containerName from " + + "sterilization_reviewed r,ReviewedBasket b ,Container c " + + "where r.reviewedBasket_id = b.id and c.id = b.container_id " + + "and r.sterilizationRecord_id = " + id; + ResultSet rs = objectDao.executeSql(sql); + try { + while(rs.next()){ + Long reviewBasket_id = rs.getLong(1); + String basketName = rs.getString(2); + JSONObject obj = new JSONObject(); + obj.put("reviewBasketId", reviewBasket_id); + obj.put("basketName", basketName); + array.add(obj); + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + } + HttpServletResponse response = StrutsParamUtils.getResponse(); + try { + response.setCharacterEncoding("utf-8"); + response.getWriter().print(array.toString()); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void tousseConvertSterilizationRecord(){ + Long tousseInstanceId = StrutsParamUtils.getPraramLongValue("tousseInstanceId", null); + Long sterilizationRecordId = StrutsParamUtils.getPraramLongValue("sterilizationRecordId", null); + String basketConvert = StrutsParamUtils.getPraramValue("basketConvert", null); + Long reviewedBasket_id = StrutsParamUtils.getPraramLongValue("sterilizationBasket", null); + HttpServletResponse response = StrutsParamUtils.getResponse(); + boolean success = true; + try { + sterilizationRecordManager.tousseConvertSterilizationRecord(tousseInstanceId, sterilizationRecordId, basketConvert, reviewedBasket_id);; + response = StrutsParamUtils.getResponse(); + } catch (Exception e) { + success = false; + } + try { + response.setCharacterEncoding("utf-8"); + response.getWriter().print("{success:"+success+",msg:'保存成功!'}"); + } catch (IOException e) { + e.printStackTrace(); + } + } + } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/YearWorkloadBean.java =================================================================== diff -u -r12331 -r12596 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/YearWorkloadBean.java (.../YearWorkloadBean.java) (revision 12331) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/YearWorkloadBean.java (.../YearWorkloadBean.java) (revision 12596) @@ -9,18 +9,32 @@ */ public class YearWorkloadBean { + private Integer rowSequence;//行序列 + private String month;//年月 + + private Integer columnSequence;//列序号 + + private String columnName;//列名称 - private Integer materialAmount;//处理器械总件数 + private Integer amount;//数量 - private Integer foreignMaterialAmount;//处理外来手术器械总件数 + public YearWorkloadBean(Integer rowSequence,String month,Integer sequence,String columnName,Integer amount){ + this.rowSequence = rowSequence; + this.month = month; + this.columnSequence = sequence; + this.columnName = columnName; + this.amount = amount; + } - private Integer peroxideAmount;//高压灭菌器使用次数 - private Integer EOAmount;//EO灭菌器使用次数 - private Integer HighPressureAmount;//过氧化氢灭菌器使用次数 - - private Integer packageDeliverAmount;//器械包发放数量 + public Integer getRowSequence() { + return rowSequence; + } + public void setRowSequence(Integer rowSequence) { + this.rowSequence = rowSequence; + } + public String getMonth() { return month; } @@ -29,54 +43,29 @@ this.month = month; } - public Integer getMaterialAmount() { - return materialAmount; + public Integer getColumnSequence() { + return columnSequence; } - public void setMaterialAmount(Integer materialAmount) { - this.materialAmount = materialAmount; + public void setColumnSequence(Integer columnSequence) { + this.columnSequence = columnSequence; } - public Integer getForeignMaterialAmount() { - return foreignMaterialAmount; + public String getColumnName() { + return columnName; } - public void setForeignMaterialAmount(Integer foreignMaterialAmount) { - this.foreignMaterialAmount = foreignMaterialAmount; + public void setColumnName(String columnName) { + this.columnName = columnName; } - - - public Integer getPeroxideAmount() { - return peroxideAmount; + public Integer getAmount() { + return amount; } - public void setPeroxideAmount(Integer peroxideAmount) { - this.peroxideAmount = peroxideAmount; + public void setAmount(Integer amount) { + this.amount = amount; } - public Integer getEOAmount() { - return EOAmount; - } - - public void setEOAmount(Integer eOAmount) { - EOAmount = eOAmount; - } - - public Integer getHighPressureAmount() { - return HighPressureAmount; - } - - public void setHighPressureAmount(Integer highPressureAmount) { - HighPressureAmount = highPressureAmount; - } - - public Integer getPackageDeliverAmount() { - return packageDeliverAmount; - } - - public void setPackageDeliverAmount(Integer packageDeliverAmount) { - this.packageDeliverAmount = packageDeliverAmount; - } } Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java =================================================================== diff -u -r12531 -r12596 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 12531) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManagerImpl.java (.../SterilizationRecordManagerImpl.java) (revision 12596) @@ -540,12 +540,9 @@ @Override public void deleteSterilizationRecord( SterilizationRecord sterilizationRecord) { - String userName = AcegiHelper.getLoginUser().getUserFullName(); - String dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") - .format(new Date()); - String description = userName + "在" + dateTime + "删除灭菌记录[id:" + String description = "删除灭菌记录[id:" + sterilizationRecord.getId() + "]"; - appLogManager.saveLog(dateTime, userName, Log.MODEL_STERILIZATION, + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_STERILIZATION, Log.TYPE_DELETE, description); objectDao.delete(sterilizationRecord); @@ -1473,4 +1470,97 @@ // throw new RuntimeException("要添加的器械包不能为空!"); // } } + + /** + * 灭菌参数干预保存 + */ + @Override + public void saveInterfereSterilizationParams(String id,String sterilizationRecord_id, String startDate, + String endDate, String sterilizationType, String sterilizationUser) { + if(StringUtils.isNotBlank(id)){ + String sql = "update tousseInstance set sterileStartTime = '" + + startDate + + "',sterileEndTime = '" + + endDate + + "',sterilingType = '" + + sterilizationType + + "',sterilizationUser = '" + + sterilizationUser + + "' where sterilizationRecord_id = " + sterilizationRecord_id; + objectDao.excuteSQL(sql); + String sql2 = "update SterilizationRecord set sterilizationType = '" + + sterilizationType + + "', sterilizationUser = '" + + sterilizationUser + + "',startDate = " + + dateQueryAdapter.dateAdapter(startDate) + + ",endDate = " + + dateQueryAdapter.dateAdapter(endDate) + + " where id = " + sterilizationRecord_id; + objectDao.excuteSQL(sql2); + + TousseInstance ti = tousseInstanceManager.getTousseInstanceById(id); + String description = ti.getBarcode() + "修改开始时间:"+startDate+",结束时间:"+endDate+",灭菌方式:"+sterilizationType+",sterilizationUser:"+sterilizationUser; + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_INTERFERE, Log.TYPE_UPDATE, description); + } + } + + + /** + * 移动灭菌记录器械包保存 + */ + public void tousseConvertSterilizationRecord(Long tousseId,Long recordId,String isBasketConvert,Long reviewedBasketId){ + TousseInstance ti = tousseInstanceManager.getTousseInstanceById(""+tousseId); + SterilizationRecord record = getSterilizationRecordById(recordId); + if(ti != null && record != null){ + Long oldRecordId = ti.getSterilizationRecord_id(); + if(oldRecordId.equals(recordId)){ + return; + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String tousseSql = "update tousseInstance set sterilizerName = '" + + record.getSterilizerName() + "',sterileFrequency = '" + + record.getFrequency() + "',sterilizationUser = '" + + record.getSterilizationUser() + "',sterileStartTime = '" + + sdf.format(record.getStartDate()) + + "',sterileEndTime = '" + + sdf.format(record.getEndDate()) + "',sterilingType = '" + + record.getSterilizationType() + + "',sterilizationRecord_id = " + recordId ; + + if(!"是".equals(isBasketConvert)){ + tousseSql += ",reviewBasket_id = " + reviewedBasketId; + } + + String basketSql = ""; + if(ti.getReviewBasket_id() != null){ + if("是".equals(isBasketConvert)){ + + tousseSql += " where reviewBasket_id = " + ti.getReviewBasket_id(); + + basketSql = "update sterilization_reviewed set sterilizationRecord_id = " + recordId+" where reviewedBasket_id = " + ti.getReviewBasket_id(); + }else{ + tousseSql += " where id = " + tousseId; + } + }else{ + tousseSql += " where id = " + tousseId; + } + objectDao.excuteSQL(tousseSql); + if(StringUtils.isNotBlank(basketSql)){ + objectDao.excuteSQL(basketSql); + } + + //修改灭菌记录冗余字段 + if(oldRecordId != null){ + SterilizationRecord oldRecord = getSterilizationRecordById(oldRecordId); + updateSterilizationRecordStatisticsInfo(oldRecord); + } + if(recordId != null){ + SterilizationRecord oldRecord = getSterilizationRecordById(recordId); + updateSterilizationRecordStatisticsInfo(oldRecord); + } + String description = ti.getBarcode() + "转移到id:"+recordId+"的灭菌记录中,是否整筐转移:"+isBasketConvert+",转移篮筐id:"+reviewedBasketId; + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_INTERFERE, "U", description); + } + } } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java =================================================================== diff -u -r12386 -r12596 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 12386) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/service/JasperReportManagerImpl.java (.../JasperReportManagerImpl.java) (revision 12596) @@ -6635,11 +6635,11 @@ } if(StringUtils.isNotBlank(startDay)){ sql += " and po.enteringDate >= ? "; - params.add(dateFormat.parse(startDay +" 00:00:00")); + params.add(dateFormat.parse(startDay)); } if(StringUtils.isNotBlank(endDay)){ sql += " and po.enteringDate <= ? "; - params.add(dateFormat.parse(endDay +" 23:59:59")); + params.add(dateFormat.parse(endDay)); } sql += " order by po.enteringDate desc "; List useRecords = objectDao.findByParam(sql,params.toArray() ); @@ -6838,49 +6838,171 @@ endTime += " 23:59:59"; Map optionMap = new HashMap(); - String invoiceSql = ""; - if(StringUtils.isNotBlank(departCoding)){ - invoiceSql = " and i.orgUnitCoding = '"+departCoding+"'"; - } GoodsOption option = goodsOptionManager.getGoodsOption(GoodsOption.MODEL_TOUSSEDELIVERDETAIL, departCoding); if(option != null && StringUtils.isNotBlank(option.getValue())){ for(String goodsName: option.getValue().split(";")){ optionMap.put(goodsName, 1); } } + Map voMap = new HashMap(); + //回收 + String sql2 = "select i.tousseName,sum(i.amount) from RecyclingRecord r,TousseItem i" + + " where r.id = i.recyclingRecord_id and r.orgUnitCoding = '"+departCoding + + "' and r.recyclingTime between "+dateQueryAdapter.dateConverAdapter2(startTime,"yyyy-mm-dd HH24:MI:SS") + + " and "+dateQueryAdapter.dateConverAdapter2(endTime,"yyyy-mm-dd HH24:MI:SS") + + " group by i.tousseName "; + + ResultSet result2 = objectDao.executeSql(sql2); + try { + while(result2.next()){ + String tousseName = result2.getString(1); + tousseName = CssdUtils.filterDisinfectGoodsName(tousseName); + if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ + int tousseAmount = result2.getInt(2); + TousseDeliverDetailVO vo = voMap.get(tousseName); + if(vo == null){ + vo = new TousseDeliverDetailVO(); + voMap.put(tousseName, vo); + } + vo.setTousseName(tousseName); + vo.setRecyclingAmount(tousseAmount); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result2); + } + + //装配 + String sql3 = "select i.tousseName,count(*) from PackingRecord r,tousseInstance i" + + " where r.id = i.packingRecord_id and r.orgUnitCoding = '"+departCoding + + "' and r.packTime between "+dateQueryAdapter.dateConverAdapter2(startTime,"yyyy-mm-dd HH24:MI:SS") + + " and "+dateQueryAdapter.dateConverAdapter2(endTime,"yyyy-mm-dd HH24:MI:SS") + + " group by i.tousseName "; + + ResultSet result3 = objectDao.executeSql(sql3); + try { + while(result3.next()){ + String tousseName = result3.getString(1); + tousseName = CssdUtils.filterDisinfectGoodsName(tousseName); + if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ + int tousseAmount = result3.getInt(2); + TousseDeliverDetailVO vo = voMap.get(tousseName); + if(vo == null){ + vo = new TousseDeliverDetailVO(); + voMap.put(tousseName, vo); + } + vo.setTousseName(tousseName); + vo.setPackingAmount(tousseAmount); + } + } + } catch (SQLException e) { + e.printStackTrace(); + }finally { + DatabaseUtil.closeResultSetAndStatement(result3); + } + + //审核 + String sql4 = "select i.tousseName,count(*) from tousseInstance i" + + " where i.orgUnitCoding = '"+departCoding + + "' and i.reviewTime between "+dateQueryAdapter.dateConverAdapter2(startTime,"yyyy-mm-dd HH24:MI:SS") + + " and "+dateQueryAdapter.dateConverAdapter2(endTime,"yyyy-mm-dd HH24:MI:SS") + + " group by i.tousseName "; + + ResultSet result4 = objectDao.executeSql(sql4); + try { + while(result4.next()){ + String tousseName = result4.getString(1); + tousseName = CssdUtils.filterDisinfectGoodsName(tousseName); + if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ + int tousseAmount = result4.getInt(2); + TousseDeliverDetailVO vo = voMap.get(tousseName); + if(vo == null){ + vo = new TousseDeliverDetailVO(); + voMap.put(tousseName, vo); + } + vo.setTousseName(tousseName); + vo.setReviewAmount(tousseAmount); + } + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(result4); + } + + //灭菌 + String sql5 = "select i.tousseName,count(*) from SterilizationRecord r, tousseInstance i" + + " where r.id = i.sterilizationRecord_id and i.orgUnitCoding = '"+departCoding + + "' and r.endDate between "+dateQueryAdapter.dateConverAdapter2(startTime,"yyyy-mm-dd HH24:MI:SS") + + " and "+dateQueryAdapter.dateConverAdapter2(endTime,"yyyy-mm-dd HH24:MI:SS") + + " group by i.tousseName "; + + ResultSet result5 = objectDao.executeSql(sql5); + try { + while(result5.next()){ + String tousseName = result5.getString(1); + tousseName = CssdUtils.filterDisinfectGoodsName(tousseName); + if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ + int tousseAmount = result5.getInt(2); + TousseDeliverDetailVO vo = voMap.get(tousseName); + if(vo == null){ + vo = new TousseDeliverDetailVO(); + voMap.put(tousseName, vo); + } + vo.setTousseName(tousseName); + vo.setSterilizationAmount(tousseAmount); + } + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(result5); + } + + //发货 String sql = " select ti.tousseName,count(*) from invoice i,TousseInstance ti" - +" where i.id = ti.invoice_id " - + invoiceSql - +" and i.sendTime between "+dateQueryAdapter.dateConverAdapter2(startTime,"yyyy-mm-dd HH24:MI:SS") - +" and "+dateQueryAdapter.dateConverAdapter2(endTime,"yyyy-mm-dd HH24:MI:SS") - +" group by ti.tousseName "; + + " where i.id = ti.invoice_id and i.orgUnitCoding = '" + departCoding + + "' and i.sendTime between "+dateQueryAdapter.dateConverAdapter2(startTime,"yyyy-mm-dd HH24:MI:SS") + + " and "+dateQueryAdapter.dateConverAdapter2(endTime,"yyyy-mm-dd HH24:MI:SS") + + " group by ti.tousseName "; - List voList = new ArrayList(); - Integer serialNumber = 0; ResultSet result = objectDao.executeSql(sql); Map map = new HashMap(); try { while(result.next()){ String tousseName = result.getString(1); if(optionMap.size() == 0 || optionMap.get(tousseName) != null){ - serialNumber++; int tousseAmount = result.getInt(2); - TousseDeliverDetailVO vo = new TousseDeliverDetailVO(); - vo.setSerialNumber(serialNumber); + + TousseDeliverDetailVO vo = voMap.get(tousseName); + if(vo == null){ + vo = new TousseDeliverDetailVO(); + voMap.put(tousseName, vo); + } vo.setTousseName(tousseName); vo.setTousseAmount(tousseAmount); Integer materialAmount = getMaterialAmountByTousse(tousseName,map); vo.setMaterialAmount(materialAmount*tousseAmount); - voList.add(vo); } } } catch (SQLException e) { e.printStackTrace(); }finally { DatabaseUtil.closeResultSetAndStatement(result); } - + List voList = new ArrayList(); + int serialNum = 0; + if(voMap.size() > 0){ + for (String tousseName : voMap.keySet()) { + serialNum++; + TousseDeliverDetailVO vo = voMap.get(tousseName); + vo.setSerialNumber(serialNum); + voList.add(voMap.get(tousseName)); + } + } return voList; } @@ -7289,7 +7411,7 @@ sql = " and i.depart = '" + deptName + "' "; sqlBuilder.append(sql); } - sqlBuilder.append(" order by processType asc"); + sqlBuilder.append(" order by id asc"); ResultSet rs = objectDao.executeSql(sqlBuilder.toString()); try { while (rs.next()) { @@ -7312,7 +7434,16 @@ vo.setRemark(foreignTousseApplication.getRemark()); vo.setPatient(foreignTousseApplication.getPatient()); vo.setSurgery(foreignTousseApplication.getSurgery()); + vo.setHospitalNumber(foreignTousseApplication.getHospitalNumber()); + vo.setAscriptionDepartment(foreignTousseApplication.getAscriptionDepartment()); + vo.setDoctor(foreignTousseApplication.getDoctor()); vo.setProcessType(foreignTousseApplication.getProcessType()); + + List appItems = foreignTousseApplication.getApplicationItems(); + if(appItems != null &&appItems.size()>0){ + vo.setSupplierName(appItems.get(0).getSupplierName()); + } + if(vo.getProcessType() == null){ vo.setProcessType(""); } Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java =================================================================== diff -u -r12386 -r12596 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 12386) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/action/JasperreportsAction.java (.../JasperreportsAction.java) (revision 12596) @@ -23,19 +23,23 @@ import java.util.List; import java.util.Map; import java.util.Set; + import javax.servlet.http.HttpServletResponse; + import net.sf.jasperreports.engine.JRDataSource; import net.sf.jasperreports.engine.JasperFillManager; import net.sf.jasperreports.engine.JasperPrint; import net.sf.jasperreports.engine.JasperReport; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; import net.sf.jasperreports.engine.util.JRLoader; + 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 org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; + import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.disinfectsystem.basedatamanager.reportoption.GoodsOptionManager; @@ -804,27 +808,27 @@ private List getUserRecordOperatorTotalViewDataSource() { List list = new ArrayList(); String sql = " SELECT COUNT(TOUSSENAME) AS AMOUNT, USERECORD.DEPART AS DEPART, USERECORD.OPERATOR AS OPERATOR,TOUSSEINSTANCE.TOUSSENAME AS TOUSSENAME FROM USERECORD INNER JOIN TOUSSEINSTANCE ON USERECORD.ID = TOUSSEINSTANCE.USERECORD_ID WHERE 1 = 1"; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - String startDay = StrutsParamUtils.getPraramValue("startDay", - sdf.format(new Date())); - String endDay = StrutsParamUtils.getPraramValue("endDay", - sdf.format(new Date())); - String departSearch = StrutsParamUtils.getPraramValue("departSearch",""); - String operatorSearch = StrutsParamUtils.getPraramValue("operatorSearch",""); - if(StringUtils.isNotBlank(departSearch) && !departSearch.equals("全部")){ - sql += " and USERECORD.DEPART='" + departSearch +"' "; + String startDay = StrutsParamUtils.getPraramValue("startDay",null); + String endDay = StrutsParamUtils.getPraramValue("endDay",null); + + if(StringUtils.isNotBlank(startDay) && StringUtils.isNotBlank(endDay)){ + String departSearch = StrutsParamUtils.getPraramValue("departSearch",""); + String operatorSearch = StrutsParamUtils.getPraramValue("operatorSearch",""); + if(StringUtils.isNotBlank(departSearch) && !departSearch.equals("全部")){ + sql += " and USERECORD.DEPART='" + departSearch +"' "; + } + if(StringUtils.isNotBlank(operatorSearch)){ + sql += " and USERECORD.operator='" + operatorSearch +"' "; + } + sql += " and USERECORD.enteringDate >=" + dateQueryAdapter.dateAdapter(startDay) ; + sql += " and USERECORD.enteringDate <=" + dateQueryAdapter.dateAdapter(endDay) ; + sql += " GROUP BY USERECORD.DEPART, USERECORD.OPERATOR, TOUSSEINSTANCE.TOUSSENAME "; + try { + list = jasperReportManager.getUseRecordOperatorTotalViewData(sql); + } catch (SQLException e) { + e.printStackTrace(); + } } - if(StringUtils.isNotBlank(operatorSearch)){ - sql += " and USERECORD.operator='" + operatorSearch +"' "; - } - sql += " and USERECORD.enteringDate >=" + dateQueryAdapter.dateAdapter(startDay +" 00:00:00") ; - sql += " and USERECORD.enteringDate <=" + dateQueryAdapter.dateAdapter(endDay +" 23:59:59") ; - sql += " GROUP BY USERECORD.DEPART, USERECORD.OPERATOR, TOUSSEINSTANCE.TOUSSENAME "; - try { - list = jasperReportManager.getUseRecordOperatorTotalViewData(sql); - } catch (SQLException e) { - e.printStackTrace(); - } return list; } @@ -836,16 +840,16 @@ */ private List getUserRecordItemDataSource() throws ParseException { List list = new ArrayList(); - String datePattern = "yyyy-MM-dd"; - SimpleDateFormat dateFormat = new SimpleDateFormat(datePattern); - String startDay = StrutsParamUtils.getPraramValue("startDay", dateFormat.format(new Date())); - String endDay = StrutsParamUtils.getPraramValue("endDay", dateFormat.format(new Date())); + String startDay = StrutsParamUtils.getPraramValue("startDay", null); + String endDay = StrutsParamUtils.getPraramValue("endDay", null); String depart = StrutsParamUtils.getPraramValue("depart", ""); String operatorSearch = StrutsParamUtils.getPraramValue("operatorSearch", ""); if(depart.equals("全部")){ depart = ""; } - list = jasperReportManager.getUseRecordItemDataSource(startDay , endDay,depart,operatorSearch); + if(StringUtils.isNotBlank(startDay) && StringUtils.isNotBlank(endDay)){ + list = jasperReportManager.getUseRecordItemDataSource(startDay , endDay,depart,operatorSearch); + } return list; } @@ -1055,7 +1059,7 @@ }else if(reportName.equals("tousseDeliverDetail")){ String startDay = StrutsParamUtils.getPraramValue("startDay", ""); String endDay = StrutsParamUtils.getPraramValue("endDay", ""); - map.put("title", "器械包发货明细统计("+startDay+" ~ "+endDay+")"); + map.put("title", "器械包各生产环节统计报表("+startDay+" ~ "+endDay+")"); }else if (reportName.equals("tousseWorkLoad")){ String startDay = StrutsParamUtils.getPraramValue("startDay", ""); String endDay = StrutsParamUtils.getPraramValue("endDay", ""); @@ -1720,33 +1724,31 @@ if (depart.equals("全部")) { depart = ""; } - SimpleDateFormat dateFormat = new SimpleDateFormat( - "yyyy-MM-dd"); - String startDay = StrutsParamUtils.getPraramValue("startDay", dateFormat.format(new Date())); - String endDay = StrutsParamUtils.getPraramValue("endDay", dateFormat.format(new Date())); - Map departsMap = jasperReportManager - .getDepartFromUseRecord(depart); - if (departsMap.size() == 0) { - return null; - } - UseRecordBean recordBean = null; - Set departCodingSet = departsMap.keySet(); - Iterator it = departCodingSet.iterator(); - while (it.hasNext()) { - recordBean = new UseRecordBean(); - String coding = it.next();// 部门编码 - String dep = departsMap.get(coding);// 部门名称 - recordBean.setDepart(dep); - String sql = "select u.operator,count(operator) amount from userecord u " - + " where depart='" + dep - + "' and u.enteringDate between " - + dateQueryAdapter.dateAdapter(startDay+" 00:00:00") - + " and " + dateQueryAdapter.dateAdapter(endDay+" 23:59:59") - +" group by operator "; - List itemBeans = jasperReportManager.getUserAndRecordAmount(sql,coding,startDay,endDay); - if(itemBeans.size()!=0){ - recordBean.setItems(itemBeans); - list.add(recordBean); + String startDay = StrutsParamUtils.getPraramValue("startDay", null); + String endDay = StrutsParamUtils.getPraramValue("endDay", null); + if(StringUtils.isNotBlank(startDay) && StringUtils.isNotBlank(endDay)){ + Map departsMap = jasperReportManager.getDepartFromUseRecord(depart); + if (departsMap.size() > 0) { + UseRecordBean recordBean = null; + Set departCodingSet = departsMap.keySet(); + Iterator it = departCodingSet.iterator(); + while (it.hasNext()) { + recordBean = new UseRecordBean(); + String coding = it.next();// 部门编码 + String dep = departsMap.get(coding);// 部门名称 + recordBean.setDepart(dep); + String sql = "select u.operator,count(operator) amount from userecord u " + + " where depart='" + dep + + "' and u.enteringDate between " + + dateQueryAdapter.dateAdapter(startDay) + + " and " + dateQueryAdapter.dateAdapter(endDay) + +" group by operator "; + List itemBeans = jasperReportManager.getUserAndRecordAmount(sql,coding,startDay,endDay); + if(itemBeans.size() != 0){ + recordBean.setItems(itemBeans); + list.add(recordBean); + } + } } } return list; @@ -2188,7 +2190,10 @@ private void getEOParam(Map map) { String depart = StrutsParamUtils.getPraramValue("depart", ""); String month = StrutsParamUtils.getPraramValue("month", ""); - String title = "发货物品统计月报(灭菌程序)" + String goodsSearch = StrutsParamUtils.getPraramValue("goodsSearch", ""); + String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); + + String title = "发货物品统计月报【灭菌程序:" + tousseType + "】" + (StringUtils.isNotBlank(month) ? "(" + month + ")" : ""); Map monthMap = getMonthStartAndEndDate(month); map.put("title", title); @@ -2203,8 +2208,6 @@ } else { sql += " and 1=2 "; } - String goodsSearch = StrutsParamUtils.getPraramValue("goodsSearch", ""); - String tousseType = StrutsParamUtils.getPraramValue("tousseType", ""); if (StringUtils.isNotBlank(depart)) { String[] departArray = depart.split("-"); depart = departArray[departArray.length - 1]; Index: ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/ForeignTousseApplicationVO.java =================================================================== diff -u -r12331 -r12596 --- ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/ForeignTousseApplicationVO.java (.../ForeignTousseApplicationVO.java) (revision 12331) +++ ssts-reports/src/main/java/com/forgon/disinfectsystem/jasperreports/javabeansource/ForeignTousseApplicationVO.java (.../ForeignTousseApplicationVO.java) (revision 12596) @@ -88,6 +88,8 @@ private String roomNumber; // 病室 private String bedNumber; // 床位号 + + private String ascriptionDepartment;//病人所属科室 private String patient;// 病人姓名 @@ -100,6 +102,8 @@ private String surgery;// 手术名称 private Date operationTime;// 手术时间 + + private String supplierName;//供应商 // 处理方式,用于灭菌价格的参考,一般有(普通、加急、夜班集中处理方式) private String processType; @@ -618,4 +622,20 @@ this.tousseItems = tousseItems; } + public String getSupplierName() { + return supplierName; + } + + public void setSupplierName(String supplierName) { + this.supplierName = supplierName; + } + + public String getAscriptionDepartment() { + return ascriptionDepartment; + } + + public void setAscriptionDepartment(String ascriptionDepartment) { + this.ascriptionDepartment = ascriptionDepartment; + } + } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java =================================================================== diff -u -r12331 -r12596 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 12331) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManager.java (.../RecyclingApplicationManager.java) (revision 12596) @@ -103,9 +103,11 @@ boolean committedStatus) throws RecyclingRecordException; public void createRecyclingApplicationByTousse( - Map applyTousseMap, String applicant, + Map applyTousseMap, + Map diposableGoodMap, String applicant, String depart, String departCoding, String remark, - List tousseInstanceIds,Date applicationDate,String operationRoom); + List tousseInstanceIds, Date applicationDate, + String operationRoom,double dpf); /** * 根据申请还物单查找相应的借物单 * 该方法只在借还物单业务中试用 Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java =================================================================== diff -u -r12590 -r12596 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 12590) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/RecyclingApplicationManagerImpl.java (.../RecyclingApplicationManagerImpl.java) (revision 12596) @@ -39,6 +39,7 @@ import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; import com.forgon.directory.model.OrgUnit; +import com.forgon.directory.vo.LoginUserData; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; import com.forgon.disinfectsystem.common.CSSDConstants; import com.forgon.disinfectsystem.common.Constants; @@ -69,6 +70,8 @@ import com.forgon.disinfectsystem.tousseitem.service.TousseItemManager; import com.forgon.disinfectsystem.vo.ApplicationItemVO; import com.forgon.disinfectsystem.vo.TousseItemVo; +import com.forgon.log.model.Log; +import com.forgon.log.service.LogManager; import com.forgon.security.service.AclTools; import com.forgon.serialnumber.model.SerialNum; import com.forgon.serialnumber.service.SerialNumManager; @@ -108,6 +111,13 @@ private DateQueryAdapter dateQueryAdapter; + private LogManager appLogManager; + + + public void setAppLogManager(LogManager appLogManager) { + this.appLogManager = appLogManager; + } + private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private final String tousseTypeFilterStr = TousseDefinition.PACKAGE_TYPE_INSIDE @@ -642,6 +652,7 @@ td.setIsReview(btd.getIsReview()); td.setIsSterile(btd.getIsSterile());//是否灭菌 td.setIsCleanedEntirely(btd.getIsCleanedEntirely());// 默认为拆包清洗 + td.setIsApplyEntireTousse(btd.getIsApplyEntireTousse()); // 消毒物品物包定义的包装以及灭菌程序分别为胶袋和无 td.setPackageType(btd.getPackageType());// 默认的包装类型 td.setSterilingMethod(btd.getSterilingMethod());// 默认的灭菌程序 @@ -1056,6 +1067,18 @@ tousseItem.setAmount(entry.getValue()); tousseItem.setInvoicePlan(recyclingApplication); tousseItem.setDiposable("否"); + TousseDefinition td = tousseDefinitionManager.getTousseDefinitionByName(entry.getKey()); + if (td != null){ + tousseItem.setTousseType(td.getTousseType()); + tousseItem.setTousseDefinitionId(td.getId()); + tousseItem.setIsCleanedEntirely(td.getIsCleanedEntirely()); + tousseItem.setExpressRecycling(td.getExpressRecycling()); + tousseItem.setIsRecycling(td.getIsRecycling()); + tousseItem.setIsCleanedEntirely(td.getIsCleanedEntirely()); + tousseItem.setIsApplyEntireTousse(td.getIsApplyEntireTousse()); + boolean isThereIDCard = tousseDefinitionManager.isThereIDCard(td); + tousseItem.setIsThereIdentificationCard(isThereIDCard?"是":"否"); + } applicationItems.add(tousseItem); } } @@ -1242,6 +1265,10 @@ tousseItem.setIsCleanedEntirely(td.getIsCleanedEntirely()); tousseItem.setExpressRecycling(td.getExpressRecycling()); tousseItem.setIsRecycling(td.getIsRecycling()); + tousseItem.setIsCleanedEntirely(td.getIsCleanedEntirely()); + tousseItem.setIsApplyEntireTousse(td.getIsApplyEntireTousse()); + boolean isThereIDCard = tousseDefinitionManager.isThereIDCard(td); + tousseItem.setIsThereIdentificationCard(isThereIDCard?"是":"否"); } else{ logger.error("找不到器械包定义,器械包名称:" + tousseName); @@ -2145,9 +2172,9 @@ private void reSetDisinfectGoodPrintItem(String tousseType,TousseDefinition td,PrintRowVo vo){ if(TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals(tousseType) && td != null){ - String isCleanedEntirely = td.getIsCleanedEntirely(); - // 非整包清洗,按材料数量打印 - if ("否".equals(isCleanedEntirely)){ + String isApplyEntireTousse = td.getIsApplyEntireTousse(); + // 非整包申请,按材料数量打印 + if ("否".equals(isApplyEntireTousse)){ int miAmount = 0; List miList = td.getMaterialInstances(); @@ -2621,7 +2648,81 @@ return items; } + /** + * 获取物品清单的字符串,包含物品名称和数量,多个物品用逗号分隔 + * 物品清单按物品的名称进行排序 + * @param items 物品集合 + * @return + */ + private String getItemsListText(List items){ + String text = ""; + if (CollectionUtils.isNotEmpty(items)){ + + // 转换为可以修改的List,传入的list可能不允许修改 + List modifiableList = new ArrayList(items); + // 对物品进行排序,按照物品名称 + Collections.sort(modifiableList, new Comparator() { + @Override + public int compare(TousseItem b1, + TousseItem b2) { + return b2.getTousseName().compareTo( + b1.getTousseName()); + } + }); + + for (TousseItem item : modifiableList){ + + if (StringUtils.isNotBlank(text)){ + text += ","; + } + text += item.getTousseName() + ":" + item.getAmount(); + } + } + return text; + } + + /** + * 将TousseItemVo的集合转换为TousseItem的集合 + * @param vos + * @return + */ + private List convert2TousseItems(Collection vos){ + List items = new ArrayList(); + if (CollectionUtils.isNotEmpty(vos)){ + for (TousseItemVo vo : vos){ + TousseItem item = new TousseItem(); + item.setTousseName(vo.getTousseName()); + item.setAmount(vo.getAmount()); + items.add(item); + } + } + return items; + + } + + /** + * 创建申请单修改的日志,记录修改前后的物品清单 + * @param application 申请单 + * @param newTousseItemVoList 修改后的物品集合 + * @param oldItemsList 修改前的物品集合 + */ + private void createLog(RecyclingApplication application, + Collection newTousseItemVoList,List oldItemsList){ + + LoginUserData loginUser = AcegiHelper.getLoginUser(); + + List newItems = convert2TousseItems(newTousseItemVoList); + + String description = "修改申请单[单号:" + + application.getSerialNumber() + "]修改前:" + getItemsListText(oldItemsList) + + ",修改后:" + getItemsListText(newItems); + appLogManager.saveLog(loginUser, Log.MODEL_APPLICATION, + Log.TYPE_UPDATE, description); + } + + + /** * @param application 申请单对象 * @param newTousseItemVoList 申请单上新的物品集合,相对于修改前的物品 * @param committedStatus 提交状态 @@ -2646,15 +2747,19 @@ Date currentDateTime = new Date(); - //申请时间为空 或者 暂存后提交 申请时间赋值 - if(application.getApplicationTime() == null || (committedStatus && !oldCommittedStatus)){ + // 最后的修改时间(最初的提交时间) + Date lastModifiedTime = application.getSubmitTime(); + + //申请时间为空 或者 暂存后提交 申请时间赋值。并且要提交时间为空,即没有提交过,如果提交过该申请单,则不修改申请单的创建时间。 + if(application.getApplicationTime() == null || (committedStatus && !oldCommittedStatus && lastModifiedTime == null)){ application.setApplicationTime(currentDateTime); } // true为提交状态, 否则为未提交状态 application.setCommittedStatus(committedStatus); - // 如果为提交状态则设置提交时间 + // 如果为提交状态则设置提交时间。 + // 考虑到申请时间和提交时间概念上有些模糊,将提交时间改为了申请单的最后修改时间 if (committedStatus) { application.setSubmitTime(currentDateTime); } @@ -2674,6 +2779,10 @@ if (application.getCommittedStatus() && oldCommittedStatus) { Hibernate.initialize(oldItemsList); if (oldItemsList != null && oldItemsList.size() > 0) { + + // 记录修改前后的物品清单日志 + createLog(application, newTousseItemVoList, oldItemsList); + for (TousseItem oldItem : oldItemsList) { int amount = oldItem.getAmount(); if (oldItem.getAmount() == null) { @@ -2737,23 +2846,22 @@ } if ("否".equals(newTousseItem.getDiposable())) { TousseDefinition td = tousseDefinitionManager - .getTousseDefinitionByTousseItem(newTousseItem); - - if (td != null) { - String expressRecycling = td.getExpressRecycling(); - if(StringUtils.isNotBlank(expressRecycling)){ - newTousseItem.setExpressRecycling(expressRecycling); - } + .getTousseDefinitionByNameAndTousseType( + newItemVo.getTousseName(), tousseTypeFilterStr); + String expressRecycling = td.getExpressRecycling(); + if (td != null && StringUtils.isNotBlank(expressRecycling)) { + newTousseItem.setExpressRecycling(expressRecycling); }else{ newTousseItem.setExpressRecycling(TousseDefinition.STR_NO); } if(td != null){ + newTousseItem.setTousseDefinitionId(td.getId()); newTousseItem.setIsRecycling(td.getIsRecycling()); + newTousseItem.setIsApplyEntireTousse(td.getIsApplyEntireTousse()); + newTousseItem.setIsCleanedEntirely(td.getIsCleanedEntirely()); + boolean isThereIDCard = tousseDefinitionManager.isThereIDCard(td); + newTousseItem.setIsThereIdentificationCard(isThereIDCard?"是":"否"); } - if(td != null && !DatabaseUtil.isPoIdValid(newTousseItem.getTousseDefinitionId())){ - newTousseItem.setTousseDefinitionId(td.getId()); - } - // 只给借物单赋值(TODO:检查页面,如果页面有赋值也可去掉),其他的单的价格通过页面传递过来。 if(td != null){ if(InvoicePlan.TYPE_BORROWINGSINGLE.equals(application.getType())){ @@ -2843,8 +2951,6 @@ } } - - // 保存器械包申请单 returnMsg = saveRecyclingApplication( application, tousseMap, newItemsList, oldItemsList,disinfectItemMap); @@ -2886,6 +2992,9 @@ SupplyRoomConfig supplyRoomConfig = supplyRoomConfigManager .getSystemParamsObj(); boolean autoMerge = supplyRoomConfig.getAutoMergeApplication(); + /** + * 只有待回收状态的器械包申请单、待发货状态的一次性物品申请单才会被合并;通用申请单目前不会被合并 + */ if ((recyclingApplication.getType().equals( InvoicePlan.TYPE_TOUSSE_APPLICATION_FORM) && InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE .equals(recyclingApplication.getRecyclingStatus())) @@ -2925,7 +3034,7 @@ // 待保存的申请单 RecyclingApplication toSaveRecyclingApplication = null; - // 带删除的申请单 + // 待删除的申请单 RecyclingApplication toDeleteRecyclingApplication = null; if (existApplication != null) { @@ -2995,11 +3104,18 @@ if (existApplication != null) { needToBeRemoved = recyclingApplication; List needToBeAdded = new ArrayList(); + + Date modifyTime = recyclingApplication + .getApplicationTime(); + + // 设置被合并申请单的最后修改时间 + existApplication.setSubmitTime(modifyTime); + + String modifyTimeString = dateFormat.format(modifyTime); String remarkNeedToBeAdded = "——被 " + recyclingApplication.getApplicant() + " 于" - + dateFormat.format(recyclingApplication - .getApplicationTime()) + "修改 "; + + modifyTimeString + "修改 "; String tousseItemDetails = null; for (TousseItem newItem : recyclingApplication .getApplicationItems()) { @@ -3039,6 +3155,9 @@ tousseItem.setDiposable(newItem.getDiposable()); tousseItem.setTousseDefinitionId(newItem.getTousseDefinitionId()); tousseItem.setDisposableGoodsId(newItem.getDisposableGoodsId()); + tousseItem.setIsApplyEntireTousse(newItem.getIsApplyEntireTousse()); + tousseItem.setIsCleanedEntirely(newItem.getIsCleanedEntirely()); + tousseItem.setIsThereIdentificationCard(newItem.getIsThereIdentificationCard()); tousseItem.setInvoicePlan(existApplication); needToBeAdded.add(tousseItem); if (tousseItemDetails == null) { @@ -3060,7 +3179,16 @@ .getCurrentRemark() != "") ? existApplication .getCurrentRemark() : "") + tousseItemDetails + remarkNeedToBeAdded); - + + // 记录系统日志 + String appendDescription = tousseItemDetails; + // 去掉系统添加备注的前缀文字 + if (appendDescription.startsWith("【系统添加备注】")){ + appendDescription = appendDescription.replace("【系统添加备注】", ""); + } + appendDescription = "提交新申请单,物品被合并到的单号:" + existApplication.getSerialNumber() + "," + appendDescription; + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_APPLICATION, Log.TYPE_UPDATE, appendDescription); + // 取两张申请单较大的紧急度为合并后申请单的紧急度 String[] urgencyOptions = Constants.URGENCY_OPTIONS; int oldUrgencyNum = ArrayUtils.indexOf(urgencyOptions, @@ -3169,6 +3297,10 @@ } tousseItem.setIsRecycling(td.getIsRecycling()); tousseItem.setTousseDefinitionId(td.getId()); + tousseItem.setIsApplyEntireTousse(td.getIsApplyEntireTousse()); + tousseItem.setIsCleanedEntirely(td.getIsCleanedEntirely()); + boolean isThereIDCard = tousseDefinitionManager.isThereIDCard(td); + tousseItem.setIsThereIdentificationCard(isThereIDCard?"是":"否"); } } // 保存申请还物单 @@ -3276,10 +3408,10 @@ @Override public void createRecyclingApplicationByTousse( - Map tousseNameAndAmount, String applicant, + Map tousseNameAndAmount,Map diposableGoodMap, String applicant, String depart, String departCoding, String remark, - List tousseInstanceIds,Date applicationCreateDate,String operationRoom) { - if (tousseNameAndAmount.size() > 0) { + List tousseInstanceIds,Date applicationCreateDate,String operationRoom,double dpf) { + if (tousseNameAndAmount.size() > 0 || diposableGoodMap.size() > 0) { RecyclingApplication recyclingApplication = new RecyclingApplication(); recyclingApplication .setType(RecyclingApplication.TYPE_COMBO_FORM); @@ -3301,6 +3433,43 @@ SetInstanceIdsToApplication(tousseInstanceIds, recyclingApplication); setApplicationStatus(recyclingApplication, tousseNameAndAmount); createApplicationItems(recyclingApplication, tousseNameAndAmount); + List items = recyclingApplication.getApplicationItems(); + if(items == null){ + items = new ArrayList(); + recyclingApplication.setApplicationItems(items); + } + if(diposableGoodMap.size()>0){ + for (Entry entry : diposableGoodMap.entrySet()) { + TousseItem tousseItem = new TousseItem(); + String dgName = entry.getKey(); + tousseItem.setTousseName(dgName); + tousseItem.setAmount(entry.getValue()); + tousseItem.setInvoicePlan(recyclingApplication); + tousseItem.setDiposable("是"); + tousseItem.setTousseType("一次性物品"); + String name = dgName; + String sp = null; + int startIndex = dgName.lastIndexOf("["); + int endIndex = dgName.lastIndexOf("]"); + if(startIndex != -1 && endIndex != -1){ + name = dgName.substring(0,startIndex); + sp = dgName.substring(startIndex + 1,endIndex); + } + DiposableGoods dg = diposableGoodsManager.getDiposableGoodsByName(name, sp); + if(dg != null){ + tousseItem.setDisposableGoodsId(dg.getId()); + Double price = diposableGoodBatchStockManager + .getRecentPrice(dg); + price = MathTools.mul(price, dpf, 2); + Double rowPrice = MathTools.mul(price, + tousseItem.getAmount(), 2); + tousseItem.setPrice(price); + tousseItem.setRowPrice(rowPrice); + } + items.add(tousseItem); + } + } + try { boolean checkRecyclingStatus = true; saveOrUpdateRecyclingApplicationAndAddPackingTask( @@ -3309,7 +3478,6 @@ e.printStackTrace(); } } - } @Override @@ -3433,7 +3601,7 @@ if(StringUtils.isNotBlank(t_tousseItem_id)){ td.setParentID(Long.valueOf(t_tousseItem_id));// 父亲id,页面选择的那个包定义 } - td.setParentID(ancestorTD.getId());// 祖先id,器械包定义管理那里看到的 + td.setAncestorID(ancestorTD.getId());// 祖先id,器械包定义管理那里看到的 td.setHandlerDepartCode(ancestorTD.getHandlerDepartCode()); td.setHandlerDepartName(ancestorTD.getHandlerDepartName()); td.setForDisplay(false); @@ -3450,6 +3618,7 @@ td.setIsTraceable(ancestorTD.getIsTraceable()); td.setExpressRecycling(ancestorTD.getExpressRecycling()); td.setIsCleanedEntirely(ancestorTD.getIsCleanedEntirely());// 默认为拆包清洗 + td.setIsApplyEntireTousse(ancestorTD.getIsApplyEntireTousse()); // 消毒物品物包定义的包装以及灭菌程序分别为胶袋和无 td.setPackageType(ancestorTD.getPackageType());// 默认的包装类型 td.setSterilingMethod(ancestorTD.getSterilingMethod());// 默认的灭菌程序 @@ -3515,6 +3684,10 @@ a_Amount, 2)); tousseItem .setTousseType(TousseDefinition.PACKAGE_TYPE_DISINFECTION); + tousseItem.setIsApplyEntireTousse(td.getIsApplyEntireTousse()); + tousseItem.setIsCleanedEntirely(td.getIsCleanedEntirely()); + boolean isThereIDCard = tousseDefinitionManager.isThereIDCard(td); + tousseItem.setIsThereIdentificationCard(isThereIDCard?"是":"否"); tousseItem.setInvoicePlan(recyclingApplication); tousseItem.setExpressRecycling(td.getExpressRecycling()); tousseNameAndAmount.put(tousseItem.getTousseName(), @@ -3777,8 +3950,11 @@ return tousseItemsMap; } + /** + * 设置申请单的创建时间和最后修改时间 + * @param recyclingApplication + */ private void setApplicationAndSubmitTime(RecyclingApplication recyclingApplication) { - // 设置申请时间和最后提交(更新)时间 Date now = new Date(); if (recyclingApplication.getId() == null || recyclingApplication.getApplicationTime() == null) { recyclingApplication.setApplicationTime(now); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java =================================================================== diff -u -r12332 -r12596 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 12332) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManager.java (.../TousseInstanceManager.java) (revision 12596) @@ -115,6 +115,28 @@ public boolean signByInvoiceId(Collection ids, String signer,Date signDate); /** + * 根据器械包的条码签收器械包 + * @param barcode 器械包的条码 + * @return 执行结果的json字符串 + */ + public String singTousseInstanceByBarcode(String barcode); + /** + * 根据器械包的条码签收器械包,并指定签收人及签收人的科室 + * @param barcode 器械包的条码 + * @param orgUnitCoding 科室编码 + * @param signer 签收人完整名称 + * @return + */ + public String singTousseInstanceByBarcode(String barcode,String orgUnitCoding,String signer); + /** + * 获取科室当天签收的器械包 + * @param departCode 科室编号 + * @departName 科室名称 + * @return 返回所有器械包的名称及数量、总数量 + */ + public String getTodaySignedTousseInstance(String departCode,String departName); + + /** * 根据首尾器械包条码或虚拟篮筐别名查询相应的器械包实例(在审核打包、灭菌管理、发货计划等模块都可能会调用此方法) * 参数约束条件及返回值释义 * 1.basketOrInstanceNotFound 篮筐或器械包实例未找到 Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/action/UseRecordAction.java =================================================================== diff -u -r12531 -r12596 --- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/action/UseRecordAction.java (.../UseRecordAction.java) (revision 12531) +++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/action/UseRecordAction.java (.../UseRecordAction.java) (revision 12596) @@ -1,6 +1,7 @@ package com.forgon.disinfectsystem.useRecord.action; import java.io.IOException; +import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; @@ -21,8 +22,14 @@ import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; +import com.forgon.directory.model.BarcodeDevice; +import com.forgon.disinfectsystem.barcode.service.BarcodeManager; +import com.forgon.disinfectsystem.common.CssdUtils; +import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodBatchStock; +import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance; +import com.forgon.disinfectsystem.entity.useRecord.UseDiposableGoodsItem; import com.forgon.disinfectsystem.entity.useRecord.UseRecord; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.disinfectsystem.useRecord.service.UseRecordManager; @@ -57,6 +64,12 @@ private HttpOptionManager httpOptionManager; + private BarcodeManager barcodeManager; + + public void setBarcodeManager(BarcodeManager barcodeManager) { + this.barcodeManager = barcodeManager; + } + public void setHttpOptionManager(HttpOptionManager httpOptionManager) { this.httpOptionManager = httpOptionManager; } @@ -118,20 +131,36 @@ private void setUseRecordItemsFromParams(UseRecord useRecord,String items){ // items列表 List tousseInstanceList = new LinkedList(); + List diposableGoodsList = new LinkedList(); useRecord.setTousseInstanceList(tousseInstanceList); + useRecord.setDiposableGoodsItems(diposableGoodsList); JSONArray itemsArray = JSONArray.fromObject(items); int size = itemsArray.size(); for (int i = 0; i < size; ++i) { JSONObject obj = itemsArray.getJSONObject(i); if(obj == null){ throw new RuntimeException("器械包参数错误!"); } - TousseInstance tousseInstance = new TousseInstance(); - Long itemId = JSONUtil.optLong(obj,"id",null); - tousseInstance.setId(itemId); - String barcode = JSONUtil.optString(obj,"barcode","");// barcode - tousseInstance.setBarcode(barcode); - tousseInstanceList.add(tousseInstance); + String type = obj.optString("tousseType"); + if("一次性物品".equals(type)){ + Long itemId = JSONUtil.optLong(obj,"id",null); + UseDiposableGoodsItem di = new UseDiposableGoodsItem(); + di.setId(itemId); + String barcode = JSONUtil.optString(obj,"barcode",""); + di.setName(obj.optString("showTousseName")); + di.setBarcode(barcode); + di.setBatchNo(obj.optString("batchNo")); + di.setAmount(obj.optInt("amount")); + di.setValidUntil(obj.optString("validUntil")); + diposableGoodsList.add(di); + }else{ + TousseInstance tousseInstance = new TousseInstance(); + Long itemId = JSONUtil.optLong(obj,"id",null); + tousseInstance.setId(itemId); + String barcode = JSONUtil.optString(obj,"barcode",""); + tousseInstance.setBarcode(barcode); + tousseInstanceList.add(tousseInstance); + } } } @@ -255,18 +284,37 @@ StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); List tousseInstances = tousseInstanceManager .findTousseInstanceListByUseRecordId(Long.valueOf(useRecordId)); - String jsonStr = getTousseInstanceListJson(tousseInstances); + JSONArray array = new JSONArray(); + getTousseInstanceListJson(tousseInstances,array); + UseRecord record = useRecordManager.getUseRecordById(useRecordId); + if(record != null){ + List diList = record.getDiposableGoodsItems(); + if(diList != null){ + for (UseDiposableGoodsItem di : diList) { + JSONObject obj = new JSONObject(); + obj.put("id", di.getId()); + obj.put("barcode", di.getBarcode()); + obj.put("amount", di.getAmount()); + obj.put("tousseDefinitionName", di.getName()); + obj.put("showTousseName", di.getName()); + obj.put("batchNo", di.getBatchNo()); + obj.put("packageType", ""); + obj.put("validUntil", di.getValidUntil()); + obj.put("tousseType", "一次性物品"); + array.add(obj); + } + } + } try { - StrutsParamUtils.getResponse().getWriter().println(jsonStr); + StrutsParamUtils.getResponse().getWriter().println(array.toString()); } catch (IOException e) { e.printStackTrace(); } } - private String getTousseInstanceListJson( - List tousseInstances) { - JSONArray array = new JSONArray(); + private void getTousseInstanceListJson( + List tousseInstances,JSONArray array) { if (tousseInstances != null) { for (TousseInstance ti : tousseInstances) { if (ti != null) { @@ -286,6 +334,7 @@ JSONObject obj = new JSONObject(); obj.put("id", ti.getId()); obj.put("barcode", ti.getBarcode()); + obj.put("amount", 1); obj.put("tousseDefinitionName", tousseDefinitionName); obj.put("showTousseName", ti.getShowTousseName()); obj.put("packageType", ti.getPackageType()); @@ -297,7 +346,6 @@ } } } - return array.toString(); } /** @@ -441,6 +489,68 @@ e.printStackTrace(); } } + + /** + * 加载扫描物品 + */ + public void loadScanedGoods(){ + String barcode = StrutsParamUtils.getPraramValue("barcode", null); + JSONObject obj = new JSONObject(); + if (StringUtils.isNotBlank(barcode)) { + BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(barcode); + if (bd != null) { + if (bd instanceof TousseInstance) { + TousseInstance ti = (TousseInstance) bd; + // 检测该器械包有没有被召回 + if (TousseInstance.STATUS_WAIT_FOR_RECALL.equals(ti.getStatus()) || TousseInstance.STATUS_RECALLED.equals(ti.getStatus())) { + obj.put("msg", "该器械包不能被使用,已被召回!"); + } else { + Date validUntil = ti.getValidUntil(); + String validUntilStr = ""; + if (validUntil != null) { + validUntilStr = new SimpleDateFormat("yyyy-MM-dd") + .format(validUntil); + } + TousseDefinition td = ti.getTousseDefinition(); + String tousseDefinitionName = ""; + String tousseType = ""; + if (td != null) { + tousseType = td.getTousseType(); + tousseDefinitionName = td.getName(); + } + obj.put("id", ti.getId()); + obj.put("barcode", ti.getBarcode()); + obj.put("tousseDefinitionName", tousseDefinitionName); + obj.put("showTousseName", ti.getShowTousseName()); + obj.put("packageType", ti.getPackageType()); + obj.put("validUntil", validUntilStr); + obj.put("status", ti.getStatus()); + obj.put("locationForDisplay",ti.getLocationForDisplay()); + obj.put("materials", null); + obj.put("foreignTousseApp_id",ti.getForeignTousseApp_id()); + obj.put("tousseType", tousseType); + } + } else if (bd instanceof DiposableGoodBatchStock) { + DiposableGoodBatchStock batch = (DiposableGoodBatchStock) bd; + obj.put("barcode", batch.getBarcode()); + obj.put("showTousseName", CssdUtils.getDiposableGoodsName(batch.getDiposableGoods())); + obj.put("batchNo", batch.getBatchNumber()); + obj.put("validUntil", batch.getExpDateStr()); + obj.put("tousseType", "一次性物品"); + } + } + } + HttpServletResponse response = StrutsParamUtils.getResponse(); + response.setCharacterEncoding("UTF-8"); + PrintWriter out; + try { + out = response.getWriter(); + out.print(obj.toString()); + out.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } public UseRecord getModel() { if (useRecord == null) Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r12553 -r12596 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 12553) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 12596) @@ -20,6 +20,7 @@ import net.sf.json.JSONObject; import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.Session; @@ -166,7 +167,8 @@ } } private boolean doDelete(TousseDefinition tousseDefinition){ - appLogManager.saveLog(Log.MODEL_BASEDATA, Log.TYPE_DELETE, "器械包定义[id:" + + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_BASEDATA, Log.TYPE_DELETE, "器械包定义[id:" + tousseDefinition.getId() + ",名称:" + tousseDefinition.getName() + "]"); objectDao.delete(tousseDefinition); return true; @@ -646,8 +648,8 @@ temp.put("id", tousseDefinition.getId()); temp.put("name", tousseDefinition.getName()); temp.put("displayName", displayName); - temp.put("isCleanedEntirely", - tousseDefinition.getIsCleanedEntirely()); + temp.put("isCleanedEntirely",tousseDefinition.getIsCleanedEntirely()); + temp.put("isApplyEntireTousse", tousseDefinition.getIsApplyEntireTousse()); temp.put("spelling", tousseDefinition.getSpelling()); temp.put("tousseType", tousseDefinition.getTousseType()); temp.put("isRecycling", tousseDefinition.getIsRecycling()); @@ -834,7 +836,7 @@ public List> searchTousseOrDiposableGoodsBySpellAndWbCode( String simpleSpell, boolean isSeachTousse, boolean includeCoustomTousse, boolean searchTousseBelonged, - boolean onlySearchRecyclingTousse, boolean displayPrice, + boolean onlySearchRecyclingTousse,boolean showReferencePrice, String pageIndex, String countOfLI, boolean showDisableGoods) { String sql = createQuerySQL(simpleSpell); @@ -900,6 +902,7 @@ temp.put("price", tousseDefinition.getPrice()); temp.put("type", tousseDefinition.getTousseType()); temp.put("isCleanedEntirely", tousseDefinition.getIsCleanedEntirely()); + temp.put("isApplyEntireTousse", tousseDefinition.getIsApplyEntireTousse()); Double borrowPrice = tousseDefinition.getBorrowPrice(); temp.put("borrowPrice", borrowPrice == null ? 0 : borrowPrice); String isDisableIDCard = tousseDefinition.getIsDisableIDCard(); @@ -920,7 +923,7 @@ + DatabaseUtil.getSqlLengthFunctionName(dbConnection) + "(po.name) asc"; List> diposableGoodsList = diposableGoodsManager - .getDiposableGoodsList(sql, displayPrice); + .getDiposableGoodsList(sql,showReferencePrice); mapList = diposableGoodsList; } @@ -1229,7 +1232,7 @@ } // 搜索器械包(含消毒物品)和一次性物品 - public JSONObject searchComboGoods(String searchString, String tousseType) { + public JSONObject searchComboGoods(String searchString, String tousseType,boolean showReferencePrice) { List> mapList = new ArrayList>(); @@ -1252,7 +1255,7 @@ TousseDefinition.PACKAGE_TYPE_DISINFECTION },false); mapList.addAll(searchTousseOrDiposableGoodsBySpellAndWbCode( - searchString, false, false, false,false,true,"1","0",false)); + searchString, false, false, false,false,showReferencePrice,"1","0",false)); } Map map = new HashMap(); @@ -1349,6 +1352,7 @@ obj.put("tousseName", map.get("name")); obj.put("isCleanedEntirely", map.get("isCleanedEntirely")); obj.put("tousseType", map.get("type")); + obj.put("isApplyEntireTousse", map.get("isApplyEntireTousse")); obj.put("isThereIdentificationCard", map.get("isThereIdentificationCard")); array.add(obj); } @@ -1596,7 +1600,7 @@ temp.put("tousseType", tousseDefinition.getTousseType()); temp.put("isCleanedEntirely", tousseDefinition.getIsCleanedEntirely()); - + temp.put("isApplyEntireTousse", tousseDefinition.getIsApplyEntireTousse()); String unit = tousseDefinition.getUnit(); if (unit == null){ unit = ""; Index: ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java =================================================================== diff -u -r12531 -r12596 --- ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java (.../SterilizationRecordManager.java) (revision 12531) +++ ssts-sterile/src/main/java/com/forgon/disinfectsystem/sterilizationmanager/sterilizationrecord/service/SterilizationRecordManager.java (.../SterilizationRecordManager.java) (revision 12596) @@ -63,4 +63,8 @@ Date begin, Date end); public void addTousseInstanceToSterilizationRecord_TRANS_REQUIRED(String tousseInstanceIDs); + + public void saveInterfereSterilizationParams(String id,String sterilizationRecord_id,String startDate,String endDate,String sterilizationType,String sterilizationUser); + + public void tousseConvertSterilizationRecord(Long tousseId,Long recordId,String isBasketConvert,Long reviewedBasketId); } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java =================================================================== diff -u -r12386 -r12596 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 12386) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseInstanceManagerImpl.java (.../TousseInstanceManagerImpl.java) (revision 12596) @@ -18,6 +18,9 @@ import java.util.Map; import java.util.Set; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; import org.apache.commons.collections4.Predicate; @@ -39,6 +42,7 @@ import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedatamanager.container.service.ReviewedBasketManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; +import com.forgon.disinfectsystem.basedatamanager.toussedefinition.service.TousseInstanceUtils; import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; import com.forgon.disinfectsystem.entity.basedatamanager.supplyroomconfig.SupplyRoomConfig; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; @@ -1218,4 +1222,138 @@ Object[] params = new Object[]{signer,signDate,TousseInstance.STATUS_SIGNED}; return objectDao.executeHQL(hql,params); } + + /** + * 签收器械包。单个器械包的签收。 + * @param tousseInstance 要签收的器械包 + * @param signer 签收人完整名称 + * @param signerOrgUnitCoding 签收人部门编号 + * @return 执行结果的字符串,如果签收成功,返回的字符串为null,否则返回对错误的描述信息 + */ + public String signTousseInstance(TousseInstance tousseInstance,String signer, + String signerOrgUnitCoding) { + String msg = null; + if(StringUtils.isBlank(signer)){ + msg = "签收人不能为空"; + return msg; + } + if(tousseInstance != null){ + if (TousseDefinition.PACKAGE_TYPE_DISINFECTION.equals( + tousseInstance.getTousseDefinition().getTousseType())){ + msg = "不能签收消毒物品"; + }else{ + String location = tousseInstance.getLocation(); + String locationForDisplay = tousseInstance.getLocationForDisplay(); + + if (StringUtils.isNotBlank(location) && + !signerOrgUnitCoding.equals(location)) { + msg = "该器械包属于" + locationForDisplay + ",不能被签收"; + } else { + if (StringUtils.isNotBlank(tousseInstance + .getSignedUser())) { + msg = "该器械包已签收,不能重复签收"; + } else { + String status = tousseInstance.getStatus(); + if (!TousseInstance.STATUS_SHIPPED.equals(status)) { + msg = "器械包状态为" + status + ",不能签收"; + } else { + tousseInstance.setSignedDate(new Date()); + tousseInstance.setSignedUser(signer); + tousseInstance.setStatus(TousseInstance.STATUS_SIGNED); + saveOrUpdate(tousseInstance); + } + } + } + } + } + return msg; + } + + @Override + public String singTousseInstanceByBarcode(String barcode) { + String currentUserOrgUnitCoding = AcegiHelper + .getLoginUser().getCurrentOrgUnitCode(); + String loginUserFullName = AcegiHelper + .getLoginUserFullName(); + + return singTousseInstanceByBarcode(barcode, currentUserOrgUnitCoding, loginUserFullName); + } + + @Override + public String singTousseInstanceByBarcode(String barcode, + String orgUnitCoding, String signer) { + String msg = "没有找到对应的器械包"; + String objStr = ""; + boolean success = false; + if (StringUtils.isNotBlank(barcode)) { + TousseInstance tousseInstance = getTousseInstanceByBarcode(barcode); + if(tousseInstance != null){ + msg = signTousseInstance(tousseInstance, signer, orgUnitCoding); + if(msg == null){ + SimpleDateFormat dateFormat = new SimpleDateFormat( + "yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat dateFormat2 = new SimpleDateFormat( + "yyyy-MM-dd"); + success = true; + msg = ""; + objStr = TousseInstanceUtils.tousseInstance2JsonString(dateFormat, dateFormat2, tousseInstance); + } + } + } + JSONObject json = new JSONObject(); + json.put("success", success); + json.put("msg", msg); + json.put("instance", objStr); + return json.toString(); + } + + @Override + public String 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 " + + dateQueryAdapter.dateAdapter(todayStart) + + " and " + + dateQueryAdapter.dateAdapter(todayEnd) + + " and location = '" + + departCode + "' group by tousseName"; + ResultSet rs = objectDao.executeSql(hql); + + Map map = new HashMap(); + + if(rs != null){ + try { + while(rs.next()){ + String name = rs.getString(1); + int sum = rs.getInt(2); + map.put(name, sum); + tousseAmount += sum; + } + } 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(); + } } Index: ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java =================================================================== diff -u -r12386 -r12596 --- ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java (.../ReturnGoodsRecordManagerImpl.java) (revision 12386) +++ ssts-returngoods/src/main/java/com/forgon/disinfectsystem/returngoodsrecord/service/ReturnGoodsRecordManagerImpl.java (.../ReturnGoodsRecordManagerImpl.java) (revision 12596) @@ -553,6 +553,10 @@ if(td != null){ tousseType = td.getTousseType(); item.setTousseDefinitionId(td.getId()); + item.setIsApplyEntireTousse(td.getIsApplyEntireTousse()); + item.setIsCleanedEntirely(td.getIsCleanedEntirely()); + boolean isThereIDCard = tousseDefinitionManager.isThereIDCard(td); + item.setIsThereIdentificationCard(isThereIDCard?"是":"否"); }else{ tousseType = TousseDefinition.PACKAGE_TYPE_INSIDE; }