Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/BeCleanItemManagerImpl.java =================================================================== diff -u -r12809 -r13549 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/BeCleanItemManagerImpl.java (.../BeCleanItemManagerImpl.java) (revision 12809) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/BeCleanItemManagerImpl.java (.../BeCleanItemManagerImpl.java) (revision 13549) @@ -999,98 +999,69 @@ } @Override - public void setClassifiedItemPackingAmount(Long sourceId, - String basketBarcode, String tousseName, int packingAmount, - int unPackAmount) { - String sql = "where po.recyclingRecordId = " + sourceId; - sql += " and po.tousseDefinition.name = '" + tousseName + "'"; - sql += " and po.classifyBasket.containerBarcode in ('" - + basketBarcode.replaceAll(";", "','") + "')"; + public void setClassifiedItemPackingAmount(Long sourceId,String basketBarcode, + String tousseName, int packingAmount, int unPackAmount) { + + String sql = String.format("where po.recyclingRecordId = %s and po.classifyBasket.containerBarcode in ('%s') " + + "and (po.name = '%s' or po.tousseNameForMaterial = '%s')", + sourceId, basketBarcode.replaceAll(";", "','"),tousseName,tousseName); + + Map basketMap = new HashMap(); @SuppressWarnings("unchecked") List list = objectDao.findBySql(ClassifiedItem.class.getSimpleName(), sql); if(list != null && list.size() > 0){ - Map basketMap = new HashMap(); for (ClassifiedItem item : list) { ClassifyBasket basket = item.getClassifyBasket(); - basketMap.put(basket.getContainerName(), basket); - Integer packedAmount = item.getPackingAmount(); - if(packedAmount == null){ - packedAmount = 0; - } - int unPackingAmount = item.getAmount() - packedAmount; - if(unPackingAmount >= packingAmount){ - item.setPackingAmount(packedAmount + packingAmount); - objectDao.saveOrUpdate(item); - break; - }else{ - item.setPackingAmount(item.getAmount()); - packingAmount = (packingAmount - unPackingAmount); - objectDao.saveOrUpdate(item); - } + basketMap.put(basket.getContainerBarcode(), basket); + item.setPackingAmount(item.getPackingAmount() + packingAmount); } - //修改篮筐状态 - updateBasketStatus(basketMap); - //材料 - }else{ - sql = "where po.recyclingRecordId = " + sourceId; - sql += " and po.tousseNameForMaterial = '" + tousseName + "'"; - sql += " and po.classifyBasket.containerBarcode in ('" - + basketBarcode.replaceAll(";", "','") + "')"; - @SuppressWarnings("unchecked") - List materialItems = objectDao.findBySql( - ClassifiedItem.class.getSimpleName(), sql); - if (materialItems != null) { - Map basketMap = new HashMap(); - for (ClassifiedItem item : materialItems) { - ClassifyBasket basket = item.getClassifyBasket(); - //拆包清洗的多个篮筐有没有全部清洗 - if(basket.getWashAndDisinfectRecords().size() > 0){ - basketMap.put(basket.getContainerName(), basket); - if(unPackAmount == 0){ - item.setPackingAmount(item.getAmount()); - objectDao.saveOrUpdate(item); - } - } - } - updateBasketStatus(basketMap); - } } + //修改篮筐状态 + updateBasketStatus(basketMap); } - private void updateBasketStatus(Map basketMap) { - for (String basketName : basketMap.keySet()) { - ClassifyBasket basket = basketMap.get(basketName); - boolean partUnPacking = false; - Set classfiedItems = basket.getClassfiedItems(); - for (ClassifiedItem item : classfiedItems) { - Integer packedAmount = item.getPackingAmount(); - if(packedAmount == null){ - packedAmount = 0; - } - //不追溯的消毒物品不装配 + public void updateBasketStatus(Map map) { + Set basketBarcodeSet = map.keySet(); + for (String basketBarcode : basketBarcodeSet) { + Container container = containerManager + .getContainerByBarcode(basketBarcode); + + //未清洗篮筐不处理 + if (container != null + && !Container.CONTAINER_STATUS_WASHED.equals(container + .getStatus())) { + continue; + } + boolean partPacking = false; + ClassifyBasket basket = map.get(basketBarcode); + for (ClassifiedItem item : basket.getClassfiedItems()) { + TousseDefinition td = null; if (item.getTousseDefinition() != null) { td = item.getTousseDefinition(); } else { td = (TousseDefinition) objectDao.getByProperty( - TousseDefinition.class.getSimpleName(), "name", - item.getTousseNameForMaterial()); + TousseDefinition.class.getSimpleName(), "id", + item.getTousseDefinitionID()); } - if(td != null){ - String tousseType = td.getTousseType(); - if (TousseDefinition.PACKAGE_TYPE_DISINFECTION - .equals(tousseType) - && TousseDefinition.STR_NO.equals(td - .getIsTraceable())) { - continue; + //回收不装配物品不处理 + if (td != null + && TousseDefinition.STR_NO.equals(td.getIsPacking())) { + continue; + } + if(ClassifiedItem.TYPE_MATERIAL.equals(item.getItemType())){ + if (item.getTousseAmountForMaterial() > item.getPackingAmount()) { + partPacking = true; } + }else{ + if (item.getAmount() > item.getPackingAmount()) { + partPacking = true; + } } - if(item.getAmount() > packedAmount){ - partUnPacking = true; - } } - if(!partUnPacking){ - containerManager.updateContainerStatus(basket.getContainerBarcode(), + if (!partPacking) { + containerManager.updateContainerStatus( + basket.getContainerBarcode(), Container.CONTAINER_STATUS_PACKED); } } Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java =================================================================== diff -u -r13518 -r13549 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 13518) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/service/RecyclingRecordManagerImpl.java (.../RecyclingRecordManagerImpl.java) (revision 13549) @@ -628,16 +628,17 @@ for (ClassifiedItem ci : items) { if (ci.getName().equals(name) && ci.getRecyclingRecordId().equals(recordId) - && idCardBarcode.equals(ci.getIdCardBarcode())) { - if ("材料".equals(itemType)){ + && idCardBarcode.equals(ci.getIdCardBarcode()) + && ci.getItemType().equals(itemType)) { + if ("材料".equals(itemType)) { if (tousseNameForMaterial.equals(ci .getTousseNameForMaterial()) && basketGroupBarcodes.equals(ci .getBasketGroupBarcodes())) { classifiedItem = ci; break; } - }else{ + } else { classifiedItem = ci; break; } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/dwr/table/TousseDefinitionTableManager.java =================================================================== diff -u -r13384 -r13549 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/dwr/table/TousseDefinitionTableManager.java (.../TousseDefinitionTableManager.java) (revision 13384) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/dwr/table/TousseDefinitionTableManager.java (.../TousseDefinitionTableManager.java) (revision 13549) @@ -169,7 +169,9 @@ JSONObject obj = new JSONObject(); obj.put("materialName", materialName); obj.put("amount", amount); - obj.put("washClassifyType",md.getWashClassifyType()); + obj.put("washClassifyType", + md.getWashClassifyType() == null ? "" : md + .getWashClassifyType()); array.add(obj); } } Index: ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js =================================================================== diff -u -r13518 -r13549 --- ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 13518) +++ ssts-web/src/main/webapp/disinfectsystem/touchScreen/recycle/recycleForTouchScreen.js (.../recycleForTouchScreen.js) (revision 13549) @@ -23,7 +23,8 @@ var t_idCardBarcode = tousseArray[i].idCardBarcode; var t_amountForMaterial = tousseArray[i].tousseAmountForMaterial; var t_basketGroupBarcodes = tousseArray[i].basketGroupBarcodes; - if(t_basketBarcode == basketBarcode && t_tousseName == tousseName && t_idCardBarcode == idCardBarcode){ + var t_itemType = tousseArray[i].itemType; + if(t_basketBarcode == basketBarcode && itemType == t_itemType && t_tousseName == tousseName && t_idCardBarcode == idCardBarcode){ if(itemType == '材料' && (tousseNameForMaterial != t_tousseNameForMaterial || basketGroupBarcodes != t_basketGroupBarcodes)){ continue; } @@ -573,12 +574,12 @@ var materialName = json[i].materialName; var materialAmount = json[i].amount; var washClassifyType = json[i].washClassifyType; - if(washClassifyType == ""){ +/* if(washClassifyType == ""){ success = false; msg = materialName+",未定义材料分类类型!" return; } - var exist = false; +*/ var exist = false; var basketBarcode = ""; $("#basketsUl li").each(function(){ var hideStr = $(this).find('input').val(); @@ -697,37 +698,35 @@ $("#departCode").val(msg.orgUnit.orgUnitCoding); alertDiv("该科室没有申请回收。"); } */ - }else if(msg.baskets != null && msg.baskets.length > 0){ + }else if(msg.basket != null){ var isBasketLoaded = false; var currentNode; //不装配的篮筐不能回收扫描 - /* var containerStatus = msg.basketStatus; + var containerStatus = msg.basketStatus; if(containerStatus == "清洗完成" || containerStatus == "清洗"){ var bool = window.confirm("【"+msg.basket.containerName + "】内有器械未装配,是否继续使用该篮筐?"); if(!bool){ return false; } - } */ + } - for(var i = 0;i < msg.baskets.length;i++){ - var basketItem = msg.baskets[i]; - $("#basketsUl li").each(function(){ - var hide = $(this).find('input'); - var item = JSON.parse(hide.val()); - if(item.barcode == basketItem.containerBarcode){ - isBasketLoaded = true; - currentNode = $(this); - return false; - } - }); - - if(isBasketLoaded){ - //将篮筐放置在最前面 - $("#basketsUl").prepend(currentNode); - toggleItems(currentNode.find('span')[0]); - }else{ - createBasketUiElement(basketItem.containerBarcode,basketItem.id,basketItem.containerName,basketItem.washClassifyType); - } + var basketItem = msg.basket; + $("#basketsUl li").each(function(){ + var hide = $(this).find('input'); + var item = JSON.parse(hide.val()); + if(item.barcode == basketItem.containerBarcode){ + isBasketLoaded = true; + currentNode = $(this); + return false; + } + }); + + if(isBasketLoaded){ + //将篮筐放置在最前面 + $("#basketsUl").prepend(currentNode); + toggleItems(currentNode.find('span')[0]); + }else{ + createBasketUiElement(basketItem.containerBarcode,basketItem.id,basketItem.containerName,basketItem.washClassifyType); } $("#scanContainerBarcodeTipUl").hide(); }else if(msg.tousseInstance != null){ Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/BeCleanItemManager.java =================================================================== diff -u -r12331 -r13549 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/BeCleanItemManager.java (.../BeCleanItemManager.java) (revision 12331) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedata/becleanitem/service/BeCleanItemManager.java (.../BeCleanItemManager.java) (revision 13549) @@ -1,6 +1,7 @@ package com.forgon.disinfectsystem.basedata.becleanitem.service; import java.util.List; +import java.util.Map; import java.util.Set; import net.sf.json.JSONArray; @@ -78,4 +79,6 @@ String basketBarcode, String tousseName, int packingAmount, int unPackAmount); public JSONArray getJsonArrayRemovedUnderScoreStringInName(Set items,boolean isLoadDefaultCleanMethod); + + public void updateBasketStatus(Map map); } Index: ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java =================================================================== diff -u -r13493 -r13549 --- ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 13493) +++ ssts-recyclingrecord/src/main/java/com/forgon/disinfectsystem/recyclingrecord/action/RecyclingRecordAction.java (.../RecyclingRecordAction.java) (revision 13549) @@ -699,7 +699,7 @@ "recyclingRecordId", null); HttpServletResponse response = StrutsParamUtils.getResponse(); OrgUnit orgUnit = null; - List baskets = new ArrayList(); + ClassifyBasket classifyBasket = null; String basketStatus = null; TousseInstance tousseInstance = null; User user = null; @@ -731,7 +731,6 @@ .getContainerType()) && Container.CONTAINER_PURPOSE_CLEAN_BASKET .equals(container.getPurpose())) { - ClassifyBasket classifyBasket = null; if (StringUtils.isNotBlank(recyclingRecordId)) { RecyclingRecord recyclingRecord = recyclingRecordManager .getRecyclingRecord(recyclingRecordId); @@ -760,7 +759,6 @@ .getContainerName()); classifyBasket.setWashClassifyType(container.getWashClassifyType()); } - baskets.add(classifyBasket); }else{ errorMessage = "您扫描的条码不是清洗篮筐条码!"; } @@ -856,7 +854,7 @@ Map map = new HashMap(); map.put("success", true); map.put("orgUnit", orgUnit); - map.put("baskets", baskets); + map.put("basket", classifyBasket); map.put("basketStatus", basketStatus); map.put("tousseInstance", tousseInstance); map.put("user", user); Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java =================================================================== diff -u -r13416 -r13549 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 13416) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 13549) @@ -146,6 +146,7 @@ List classifyBaskets = new ArrayList( classifyBasketIds.size()); + for (Long id : classifyBasketIds) { if (id != null) { ClassifyBasket paramsClassifyBasket = classifyBasketInfoMap @@ -157,26 +158,23 @@ personInChargeCode = paramsClassifyBasket .getPersonInChargeCode(); } - - ClassifyBasket b = beCleanItemManager.getClassifyBasketById(id - .toString()); - if (b.getContainerBarcode().indexOf(";") != -1) { - String[] barcodeArray = b.getContainerBarcode().split(";"); - for (String barcode : barcodeArray) { - Container basket = (Container) barcodeManager - .getBarcodeByBarcode(barcode); - basket.setStatus(Container.CONTAINER_STATUS_WASHED); - objectDao.saveOrUpdate(basket); - } - } else { - Container basket = (Container) barcodeManager - .getBarcodeByBarcode(b.getContainerBarcode()); + ClassifyBasket b = beCleanItemManager.getClassifyBasketById(id.toString()); + Container basket = (Container) barcodeManager.getBarcodeByBarcode(b.getContainerBarcode()); + //打开历史单据,状态不能修改 + if(Container.CONTAINER_STATUS_WASHLOADING.equals(basket.getStatus())){ basket.setStatus(Container.CONTAINER_STATUS_WASHED); objectDao.saveOrUpdate(basket); + + //是否需要进一步改成装配完成(拆包清洗的器械,扫描其中一个篮筐就可以装配,剩下的未清洗的篮筐在清洗结束后,需要改状态为装配完成) + Map basketMap = new HashMap(); + basketMap.put(basket.getBarcode(), b); + beCleanItemManager.updateBasketStatus(basketMap); } + b.setPersonInCharge(personInCharge); b.setPersonInChargeCode(personInChargeCode); classifyBaskets.add(b); + // 更新装配任务清洗时间 // Set items = b.getClassfiedItems(); // if (items != null) {