Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java =================================================================== diff -u -r15856 -r15859 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 15856) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManagerImpl.java (.../TousseDefinitionManagerImpl.java) (revision 15859) @@ -61,6 +61,7 @@ import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.db.InitDbConnection; +import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.hibernate.ObjectDao; import com.forgon.tools.json.JSONUtil; import com.forgon.tools.string.StringTools; @@ -70,12 +71,11 @@ * @author WangYi */ -public class TousseDefinitionManagerImpl implements TousseDefinitionManager { - +public class TousseDefinitionManagerImpl extends BasePoManagerImpl + implements TousseDefinitionManager { + private Logger logger = Logger.getLogger(TousseDefinitionManagerImpl.class); - private ObjectDao objectDao; - private InitDbConnection dbConnection; private SupplyRoomConfigManager supplyRoomConfigManager; @@ -96,6 +96,11 @@ private LogManager appLogManager; + public TousseDefinitionManagerImpl() { + super(TousseDefinition.class); + // TODO Auto-generated constructor stub + } + public void setAppLogManager(LogManager appLogManager) { this.appLogManager = appLogManager; } @@ -126,10 +131,6 @@ this.supplyRoomConfigManager = supplyRoomConfigManager; } - public void setObjectDao(ObjectDao objectDao) { - this.objectDao = objectDao; - } - public void setDbConnection(InitDbConnection dbConnection) { this.dbConnection = dbConnection; } Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/washTransition/service/WashTransitionItemManager.java =================================================================== diff -u -r15819 -r15859 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/washTransition/service/WashTransitionItemManager.java (.../WashTransitionItemManager.java) (revision 15819) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/washTransition/service/WashTransitionItemManager.java (.../WashTransitionItemManager.java) (revision 15859) @@ -23,6 +23,12 @@ */ public JSONObject buildWashTransitionItem(IDCardInstance idCardInstance); /** + * 根据包定义id创建清洗交接明细项。在添加清洗交接界面,当标识牌条码丢失的时候,通过选择包定义来实现 + * @param tousseDefinitionId 包定义id + * @return + */ + public JSONObject buildWashTransitionItem(String tousseDefinitionId); + /** * 将清洗交接明细项转换为json.只转换本身的属性,不转换关联对象 * @param washTransitionItem * @return Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/toussetransition/WashTransitionItem.java =================================================================== diff -u -r15775 -r15859 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/toussetransition/WashTransitionItem.java (.../WashTransitionItem.java) (revision 15775) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/toussetransition/WashTransitionItem.java (.../WashTransitionItem.java) (revision 15859) @@ -36,12 +36,16 @@ @JsonIgnore private WashTransitionRecord washTransitionRecord; /** - * 标识牌关联的包实例id + * 标识牌关联的包实例id,可能为空 */ private Long tousseInstanceId; /** - * 标识牌条码 + * 器械包定义id。正常情况下,是包实例的包定义id(不是祖先id),如果标识牌丢失,此记录的就是添加的时候,选择的包定义的id,此时,包实例及标识牌条码都为空 */ + private Long tousseDefinitionId; + /** + * 标识牌条码,可能为空,如标识牌条码丢失 + */ private String idCardBarcode; /** * 包名称 @@ -72,6 +76,12 @@ public void setTousseInstanceId(Long tousseInstanceId) { this.tousseInstanceId = tousseInstanceId; } + public Long getTousseDefinitionId() { + return tousseDefinitionId; + } + public void setTousseDefinitionId(Long tousseDefinitionId) { + this.tousseDefinitionId = tousseDefinitionId; + } public String getIdCardBarcode() { return idCardBarcode; } Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java =================================================================== diff -u -r15856 -r15859 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 15856) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/service/TousseDefinitionManager.java (.../TousseDefinitionManager.java) (revision 15859) @@ -16,11 +16,12 @@ import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.vo.TousseItemVo; +import com.forgon.tools.hibernate.BasePoManager; /** * @author WangYi */ -public interface TousseDefinitionManager { +public interface TousseDefinitionManager extends BasePoManager { public void saveOrUpdate(TousseDefinition tousseDefinition); @@ -29,8 +30,6 @@ public TousseDefinition getTousseDefinitionById(Long id); public TousseDefinition getById_ForUpdate_MANDATORY(String id); - - public boolean delete(TousseDefinition tousseDefinition); public boolean deleteTousseDefinitionById(String id); Index: ssts-packing/src/main/java/com/forgon/disinfectsystem/washTransition/service/WashTransitionItemManagerImpl.java =================================================================== diff -u -r15851 -r15859 --- ssts-packing/src/main/java/com/forgon/disinfectsystem/washTransition/service/WashTransitionItemManagerImpl.java (.../WashTransitionItemManagerImpl.java) (revision 15851) +++ ssts-packing/src/main/java/com/forgon/disinfectsystem/washTransition/service/WashTransitionItemManagerImpl.java (.../WashTransitionItemManagerImpl.java) (revision 15859) @@ -12,6 +12,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.container.Container; 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.becleanitem.ClassifiedItem; import com.forgon.disinfectsystem.entity.becleanitem.ClassifyBasket; import com.forgon.disinfectsystem.entity.idcarddefinition.IDCardDefinition; @@ -20,6 +21,8 @@ import com.forgon.disinfectsystem.entity.toussetransition.WashTransitionMaterial; import com.forgon.disinfectsystem.entity.toussetransition.WashTransitionRecord; import com.forgon.disinfectsystem.idcarddefinition.service.IDCardDefinitionManager; +import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; +import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.disinfectsystem.washanddisinfectmanager.washanddisinfectrecord.service.ClassifiedItemManager; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; @@ -32,8 +35,9 @@ WashTransitionItemManager { private WashTransitionMaterialManager washTransitionMaterialManager; private IDCardDefinitionManager idCardDefinitionManager; - private ClassifiedItemManager classifiedItemManager; private ContainerManager containerManager; + private TousseDefinitionManager tousseDefinitionManager; + private TousseInstanceManager tousseInstanceManager; public WashTransitionItemManagerImpl() { super(WashTransitionItem.class); @@ -50,13 +54,21 @@ } public void setClassifiedItemManager(ClassifiedItemManager classifiedItemManager) { - this.classifiedItemManager = classifiedItemManager; } public void setContainerManager(ContainerManager containerManager) { this.containerManager = containerManager; } + public void setTousseDefinitionManager( + TousseDefinitionManager tousseDefinitionManager) { + this.tousseDefinitionManager = tousseDefinitionManager; + } + + public void setTousseInstanceManager(TousseInstanceManager tousseInstanceManager) { + this.tousseInstanceManager = tousseInstanceManager; + } + /** * 验证标识牌是否已经做过清洗交接。返回true表示已经交接过,false则还没有交接 * @param idCardInstance 标识牌.如果为null,返回false @@ -81,9 +93,13 @@ if(idCardTransited(idCardInstance)){ return JSONUtil.buildJsonObject(false, "此标识牌已经录过交接记录,请不要重复录入"); } + TousseInstance tousseInstance = tousseInstanceManager.get(idCardInstance.getLastTousseInstanceId()); + if(tousseInstance != null && !tousseInstance.isRecycled()){ + return JSONUtil.buildJsonObject(false, "此标识牌未回收,请先使用此标识牌进行回收操作"); + } Collection classifiedItemIds = idCardInstance.classifiedItemIds(); if(CollectionUtils.isEmpty(classifiedItemIds)){ - return JSONUtil.buildJsonObject(false, "此标识牌未关联清洗篮筐,请先使用此标识牌进行回收操作"); + return JSONUtil.buildJsonObject(false, "此标识牌未关联清洗篮筐,请先回收标识牌"); } String where = "barcode in (select containerBarcode from " + ClassifyBasket.class.getSimpleName() @@ -108,14 +124,23 @@ if(td == null){ return JSONUtil.buildJsonObject(false, "标识牌绑定的包定义已经被删除"); } - + JSONObject jitem = doBuildWashTransitionItem(idCardInstance.getBarcode(),idCardInstance.getLastTousseInstanceId(), td); + return JSONUtil.buildJsonObject(true, jitem); + } + + private JSONObject doBuildWashTransitionItem(String idCardBarcode,Long tousseInstanceId, + TousseDefinition td) { + if(td == null){ + return null; + } if(CollectionUtils.isEmpty(td.getMaterialInstances())){ return JSONUtil.buildJsonObject(false, "包定义(id:" + td.getId()+ ")不包含任务材料"); } WashTransitionItem item = new WashTransitionItem(); - item.setIdCardBarcode(idCardInstance.getBarcode()); - item.setTousseInstanceId(idCardInstance.getLastTousseInstanceId()); + item.setIdCardBarcode(idCardBarcode); + item.setTousseInstanceId(tousseInstanceId); + item.setTousseDefinitionId(td.getId()); item.setTousseName(td.getName()); List materials = new LinkedList(); @@ -130,8 +155,17 @@ JSONObject jitem = toJson(item); JSONArray jmaterials = washTransitionMaterialManager.toJson(materials); jitem.put("washTransitionMaterials", jmaterials); - return JSONUtil.buildJsonObject(true, jitem); + return jitem; } + + @Override + public JSONObject buildWashTransitionItem(String tousseDefinitionId) { + TousseDefinition td = tousseDefinitionManager.get(tousseDefinitionId); + if(td == null){ + return JSONUtil.buildJsonObject(false, "包定义(id:" + tousseDefinitionId + ")已经被删除"); + } + return doBuildWashTransitionItem(null,null,td); + } @Override public JSONObject toJson(WashTransitionItem washTransitionItem) { @@ -140,6 +174,7 @@ json.put("id", washTransitionItem.getId()); json.put("idCardBarcode", washTransitionItem.getIdCardBarcode()); json.put("tousseInstanceId", washTransitionItem.getTousseInstanceId()); + json.put("tousseDefinitionId", washTransitionItem.getTousseDefinitionId()); json.put("tousseName", washTransitionItem.getTousseName()); return json; } @@ -159,6 +194,15 @@ if(DatabaseUtil.isPoIdValid(tousseId)){ item.setTousseInstanceId(tousseId); } + long tousseDefinitionId = json.optLong("tousseDefinitionId"); + if(DatabaseUtil.isPoIdValid(tousseDefinitionId)){ + item.setTousseDefinitionId(tousseDefinitionId); + }else{ + TousseInstance ti = tousseInstanceManager.get(tousseId); + if(ti != null && ti.getTousseDefinition() != null){ + item.setTousseDefinitionId(ti.getTousseDefinition().getId()); + } + } item.setIdCardBarcode(json.optString("idCardBarcode")); item.setTousseName(json.optString("tousseName")); return item; Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseInstance.java =================================================================== diff -u -r15541 -r15859 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseInstance.java (.../TousseInstance.java) (revision 15541) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/TousseInstance.java (.../TousseInstance.java) (revision 15859) @@ -24,6 +24,7 @@ import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.string.StringTools; import com.forgon.tools.util.ForgonDateUtils; /** @@ -920,7 +921,15 @@ } return false; } + /** + * 判断包状态是否是已回收 + * @return + */ @Transient + public boolean isRecycled(){ + return StringTools.equals(STATUS_RECYCLED, status); + } + @Transient public boolean canInvoice() { if (!TousseInstance.STATUS_STERILED.equals(status) && !TousseInstance.STATUS_DISINFECTED.equals(status) Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r15809 -r15859 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 15809) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 15859) @@ -3297,6 +3297,17 @@ } } } + public String buildWashTransitionItem(JSONObject params){ + String tousseDefineId =params.optString("tousseDefineId"); + if(StringTools.isBlank(tousseDefineId)){ + return JSONUtil.buildJsonObject(false, "缺失参数tousseDefineId").toString(); + } + JSONObject json = washTransitionItemManager.buildWashTransitionItem(tousseDefineId); + if(json != null){ + return JSONUtil.buildJsonObject(true, json).toString(); + } + return JSONUtil.buildJsonObject(false, "操作失败").toString(); + } /** * 提交清洗交接记录 * @param params