Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManagerImpl.java =================================================================== diff -u -r15167 -r15173 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManagerImpl.java (.../TousseTransitionRecordManagerImpl.java) (revision 15167) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManagerImpl.java (.../TousseTransitionRecordManagerImpl.java) (revision 15173) @@ -1,9 +1,21 @@ package com.forgon.disinfectsystem.toussetransition.service; -import org.apache.commons.lang3.StringUtils; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.apache.commons.collections4.CollectionUtils; + +import net.sf.json.JSONArray; + +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.toussetransition.TousseTransitionRecord; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; +import com.forgon.tools.string.StringTools; public class TousseTransitionRecordManagerImpl extends BasePoManagerImpl implements TousseTransitionRecordManager { @@ -27,7 +39,7 @@ * 通过器械包实例条码,获取交接记录 */ public TousseTransitionRecord getByTousseInstanceBarcode(String barcode){ - if(StringUtils.isBlank(barcode)){ + if(StringTools.isBlank(barcode)){ return null; } TousseTransitionRecord ttRecord = new TousseTransitionRecord(); @@ -40,5 +52,44 @@ } return ttRecord; } + + @Override + public void save(InvoicePlan plan, JSONArray tousseBarcodes, + String comfirmor, String comfirmorCode, String operator, + String operatorCode) { + if(plan == null || !(plan instanceof RecyclingApplication)){ + throw new RuntimeException("申请单不能为空"); + } + TousseTransitionRecord record = getFirst("recyclingApplicationId", plan.getId().toString()); + if(record != null){ + throw new RuntimeException("该申请单的交接记录已经存在"); + } + + record = new TousseTransitionRecord(); + record.setHandover(operator); + record.setHandoverCode(operatorCode); + record.setRecyclingApplicationId(plan.getId()); + record.setTakeover(comfirmor); + record.setTakeoverCode(comfirmorCode); + record.setTransitionTime(new Date()); + save(record); + + tousseTransitionItemManager.save(record,tousseBarcodes,getTousseDefineIdTousseItemMap(plan.getApplicationItems())); + } + private Map getTousseDefineIdTousseItemMap(List allTousseItems){ + Map map = new HashMap(); + if(CollectionUtils.isNotEmpty(allTousseItems)){ + for(TousseItem item : allTousseItems){ + if(DatabaseUtil.isPoIdValid(item.getTousseDefinitionId())){ + if(!map.containsKey(item.getTousseDefinitionId())){ + map.put(item.getTousseDefinitionId(), item); + } + } + + } + } + return map; + } + } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/action/DepartmentGroupAction.java =================================================================== diff -u -r12331 -r15173 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/action/DepartmentGroupAction.java (.../DepartmentGroupAction.java) (revision 12331) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/action/DepartmentGroupAction.java (.../DepartmentGroupAction.java) (revision 15173) @@ -18,6 +18,7 @@ import com.forgon.disinfectsystem.basedatamanager.departmentgroup.service.DepartmentGroupManager; import com.forgon.disinfectsystem.entity.recycledepartmentgroup.DepartmentGroup; import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.StrutsResponseUtils; import com.opensymphony.xwork2.ModelDriven; import com.opensymphony.xwork2.Preparable; @@ -83,14 +84,11 @@ map.put("success", true); if(departmentGroup != null){ map.put("data", departmentGroup); - } - StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + } try { - JSONObject jsonObject = JSONObject.fromObject(map); - String jsonStr = jsonObject.toString(); - StrutsParamUtils.getResponse().getWriter().println(jsonStr); + StrutsResponseUtils.output(JSONObject.fromObject(map)); } catch (Exception e) { - map.put("success", false); + StrutsResponseUtils.output(false); e.printStackTrace(); } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManager.java =================================================================== diff -u -r12331 -r15173 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManager.java (.../DepartmentGroupManager.java) (revision 12331) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManager.java (.../DepartmentGroupManager.java) (revision 15173) @@ -3,15 +3,23 @@ import java.util.List; import com.forgon.disinfectsystem.entity.recycledepartmentgroup.DepartmentGroup; +import com.forgon.tools.hibernate.BasePoManager; -public interface DepartmentGroupManager { +public interface DepartmentGroupManager extends BasePoManager { public DepartmentGroup getById(String id); - public void delete(DepartmentGroup group); - - public void save(DepartmentGroup group); - public List getAllGroups(); + + /** + * 获取交接组 + * @return + */ + public List getTransitionGroup(); + /** + * 获取预回收组 + * @return + */ + public List getPrepareRecycleGroup(); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/tousseitem/TousseItem.java =================================================================== diff -u -r14960 -r15173 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/tousseitem/TousseItem.java (.../TousseItem.java) (revision 14960) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/tousseitem/TousseItem.java (.../TousseItem.java) (revision 15173) @@ -126,6 +126,14 @@ private String scanedInstanceBarcode;//已扫描的条码 private Long invoicePlanID;// 申请单ID + /** + * 已经扫描的条码数量,在器械交接中使用 + */ + private Integer scanedAmount; + /** + * 没有扫描的数量。scanedAmount + unscanedAmount = prepareRecycleAmount + */ + private Integer unscanedAmount; public TousseItem(){ @@ -588,4 +596,21 @@ public void setTransferScale(Integer transferScale) { this.transferScale = transferScale; } + + public Integer getScanedAmount() { + return scanedAmount; + } + + public void setScanedAmount(Integer scanedAmount) { + this.scanedAmount = scanedAmount; + } + + public Integer getUnscanedAmount() { + return unscanedAmount; + } + + public void setUnscanedAmount(Integer unscanedAmount) { + this.unscanedAmount = unscanedAmount; + } + } Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java =================================================================== diff -u -r15035 -r15173 --- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 15035) +++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/service/ServiceManagerImpl.java (.../ServiceManagerImpl.java) (revision 15173) @@ -40,6 +40,7 @@ import sun.misc.BASE64Decoder; +import com.forgon.Constants; import com.forgon.databaseadapter.service.DateQueryAdapter; import com.forgon.directory.acegi.tools.AcegiHelper; import com.forgon.directory.model.BarcodeDevice; @@ -50,6 +51,7 @@ import com.forgon.disinfectsystem.barcode.service.BarcodeManager; import com.forgon.disinfectsystem.basedata.becleanitem.service.BeCleanItemManager; import com.forgon.disinfectsystem.basedatamanager.container.service.ReviewedBasketManager; +import com.forgon.disinfectsystem.basedatamanager.departmentgroup.service.DepartmentGroupManager; import com.forgon.disinfectsystem.basedatamanager.rinser.service.RinserManager; import com.forgon.disinfectsystem.basedatamanager.sterilisation.service.SterilisationManager; import com.forgon.disinfectsystem.basedatamanager.supplyroomconfig.service.SupplyRoomConfigManager; @@ -80,13 +82,15 @@ import com.forgon.disinfectsystem.entity.invoicemanager.TimeQuantum; import com.forgon.disinfectsystem.entity.packing.ReviewedBasket; import com.forgon.disinfectsystem.entity.printRecyclingApplicationConfig.PrintConfig; +import com.forgon.disinfectsystem.entity.recycledepartmentgroup.DepartmentGroup; import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsItem; import com.forgon.disinfectsystem.entity.returngoodsrecord.ReturnGoodsRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.proxydisinfection.ProxyDisinfection; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecord; import com.forgon.disinfectsystem.entity.sterilizationmanager.sterilizationrecord.SterilizationRecordPic; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.disinfectsystem.entity.toussetransition.TousseTransitionItem; import com.forgon.disinfectsystem.entity.useRecord.UseRecord; import com.forgon.disinfectsystem.entity.washanddisinfectmanager.washanddisinfectrecord.WashAndDisinfectRecord; import com.forgon.disinfectsystem.invoicemanager.service.InvoiceDepartmentManage; @@ -106,6 +110,8 @@ import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseDefinitionManager; import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager; import com.forgon.disinfectsystem.tousseitem.service.TousseItemManager; +import com.forgon.disinfectsystem.toussetransition.service.TousseTransitionItemManager; +import com.forgon.disinfectsystem.toussetransition.service.TousseTransitionRecordManager; import com.forgon.disinfectsystem.useRecord.service.UseRecordManager; import com.forgon.disinfectsystem.useRecord.service.UseRecordToJson; import com.forgon.disinfectsystem.vo.TousseSimpleVO; @@ -187,6 +193,9 @@ private HttpOptionManager httpOptionManager; private KeyValueManager keyValueManager; private SterileLoadingManager sterileLoadingManager; + private DepartmentGroupManager departmentGroupManager; + private TousseTransitionItemManager tousseTransitionItemManager; + private TousseTransitionRecordManager tousseTransitionRecordManager; public void setPackingManager(PackingManager packingManager) { @@ -330,6 +339,21 @@ this.sterileLoadingManager = sterileLoadingManager; } + public void setDepartmentGroupManager( + DepartmentGroupManager departmentGroupManager) { + this.departmentGroupManager = departmentGroupManager; + } + + public void setTousseTransitionItemManager( + TousseTransitionItemManager tousseTransitionItemManager) { + this.tousseTransitionItemManager = tousseTransitionItemManager; + } + + public void setTousseTransitionRecordManager( + TousseTransitionRecordManager tousseTransitionRecordManager) { + this.tousseTransitionRecordManager = tousseTransitionRecordManager; + } + @Override public String invoke(String remoteAddr, String jsonParams) { JSONObject jsonObject = null; @@ -587,6 +611,101 @@ return new JSONStringer().object().key("success").value(success) .key("error").value(error).endObject().toString(); } + + /** + * 保存器械包交接记录 + * @return + */ + public String saveTransitionRecord(JSONObject params){ + boolean success = false; + String error = ""; + if(params != null){ + JSONArray array = params.optJSONArray("tousseItems"); + if(array != null){ + String invoiceplanId = params.optString("app_id"); + InvoicePlan plan = invoicePlanManager.getInvoicePlanById(invoiceplanId); + for (int i = 0; i < array.size(); i++) { + JSONObject obj = array.getJSONObject(i); + String id = obj.optString("id"); + TousseItem item = null; + if(StringUtils.isNotEmpty(id)){ + item = tousseItemManager.getTousseItemById(id); + } + Integer prepareRecycleAmount = obj + .optInt("prepareRecycleAmount"); + Integer scanedAmount = obj + .optInt("scanedAmount"); + Integer unscanedAmount = obj + .optInt("unscanedAmount"); + if(item == null){ + String td_id = obj.optString("td_id"); + TousseDefinition td = tousseDefinitionManager + .getTousseDefinitionById(td_id); + if (td != null) { + item = new TousseItem(); + item.setAmount(prepareRecycleAmount); + item.setPrepareRecycleAmount(prepareRecycleAmount); + String tousseName = td.getName(); + if (TousseDefinition.PACKAGE_TYPE_DISINFECTION + .equals(td.getTousseType())) { + addDisinfectTousseItem(plan, prepareRecycleAmount, + td,item); + continue; + } + item.setTousseName(tousseName); + item.setTousseType(td.getTousseType()); + item.setDiposable("否"); + item.setTousseDefinitionId(td.getId()); + item.setExpressRecycling(td.getExpressRecycling()); + item.setIsApplyEntireTousse(td.getIsApplyEntireTousse()); + item.setIsCleanedEntirely(td.getIsCleanedEntirely()); + boolean isThereIDCard = tousseDefinitionManager.isThereIDCard(td); + item.setIsThereIdentificationCard(isThereIDCard?"是":"否"); + // 器械包取器械包定义中的价格 + double price = td.getPrice(); + // 消毒物品取材料的消毒价格之和 + if (TousseDefinition.PACKAGE_TYPE_DISINFECTION + .equals(td.getTousseType())) { + price = tousseDefinitionManager + .getDisinfectGoodsPrice(td); + } + item.setPrice(price); + item.setRowPrice(MathTools.mul(price, + prepareRecycleAmount, 2).doubleValue()); + item.setInvoicePlan(plan); + plan.getApplicationItems().add(item); + } else { + JSONUtil.buildErrorMsgJsonResult("未找到对应的器械包"); + } + } + item.setPrepareRecycleAmount(prepareRecycleAmount); + item.setScanedAmount(scanedAmount); + item.setUnscanedAmount(unscanedAmount); + tousseItemManager.saveOrUpdate(item); + } + if (plan != null) { + plan.setIsPrepareRecycled(InvoicePlan.SIGNED_TRUE); + String comfirmor = params.optString("comfirmor"); + String comfirmorCode = params.optString("comfirmorCode"); + String operatorCode = params.optString("operatorCode"); + String operator = params.optString("operator"); + JSONArray tousseBarcodes = params.optJSONArray("tousseBarcodes"); + plan.setPrepareRecycleComfirmor(comfirmor); + plan.setPrepareRecycleOperator(operator); + plan.setPrepareRecycleDateTime(new Date()); + invoicePlanManager.saveInvoicePlan(plan); + tousseTransitionRecordManager.save(plan,tousseBarcodes,comfirmor,comfirmorCode,operator,operatorCode); + success = true; + error = "保存成功"; + } else { + success = false; + error = "申请单不存在"; + } + } + } + return new JSONStringer().object().key("success").value(success) + .key("error").value(error).endObject().toString(); + } private void addDisinfectTousseItem(InvoicePlan plan, Integer prepareRecycleAmount, TousseDefinition td,TousseItem item) { @@ -752,6 +871,174 @@ json.put("data", dataArray); return json.toString(); } + /** + * 获取待交接申请单的物品明细 + * @param params + * @return + */ + public String getWaitTransitionItems(JSONObject params){ + JSONObject obj = new JSONObject(); + JSONArray tousseItemArray = new JSONArray(); + JSONArray tousseBarcodeArray = new JSONArray(); + String comfirmor = ""; + String operator = ""; + String prepareRecycleDateTime = ""; + if(params != null){ + String id = params.optString("id"); + if(StringUtils.isNotBlank(id)){ + InvoicePlan p = invoicePlanManager.getInvoicePlanById(id); + if(p != null && p instanceof RecyclingApplication){ + RecyclingApplication app = (RecyclingApplication)p; + if(app.getUseRecord() == null){ + //必须是使用记录转换而来的 + } + for (TousseItem item : p.getApplicationItems()) { + String tousseType = item.getTousseType(); + if ("一次性物品".equals(tousseType) + || TousseDefinition.PACKAGE_TYPE_DRESSING + .equals(tousseType) + || TousseDefinition.PACKAGE_TYPE_FOREIGN + .equals(tousseType) + || (TousseDefinition.PACKAGE_TYPE_DISINFECTION + .equals(tousseType) && "否".equals(item + .getIsCleanedEntirely())) + || (item.getIsTerminated() != null && item + .getIsTerminated())) { + continue; + } + TousseDefinition td = null; + if(DatabaseUtil.isPoIdValid(item.getTousseDefinitionId())){ + td = tousseDefinitionManager.getTousseDefinitionById(item.getTousseDefinitionId()); + }else{ + td = tousseDefinitionManager.getTousseDefinitionByName(item.getTousseName()); + } + + if (td != null && td.recycling()) { + JSONObject jsonItem = new JSONObject(); + jsonItem.put("id", item.getId()); + String tousseName = item.getTousseName(); + jsonItem.put("tousseName", tousseName); + jsonItem.put("amount", item.getAmount()); + Integer prepareRecycleAmount = item.getPrepareRecycleAmount(); + if(prepareRecycleAmount == null){ + prepareRecycleAmount = item.getAmount(); + } + jsonItem.put("prepareRecycleAmount",prepareRecycleAmount); + jsonItem.put("tousseType", tousseType); + JSONArray barcodes = tousseTransitionItemManager.getJsonArray(item); + int scanedAmount = 0; + int unscanedAmount = 0; + if(item.getScanedAmount() == null || item.getScanedAmount().intValue() == 0){ + scanedAmount = barcodes.size(); + }else{ + scanedAmount = item.getScanedAmount().intValue(); + } + if(item.getUnscanedAmount() == null || item.getUnscanedAmount().intValue() == 0){ + unscanedAmount = MathTools.sub(prepareRecycleAmount, scanedAmount).intValue(); + + } + jsonItem.put("scanedAmount", scanedAmount); + jsonItem.put("unscanedAmount", unscanedAmount); + jsonItem.put("tousseDefineId", item.getTousseDefinitionId()); + tousseItemArray.add(jsonItem); + tousseBarcodeArray.addAll(barcodes); + } + } + comfirmor = p.getPrepareRecycleComfirmor(); + operator = p.getPrepareRecycleOperator(); + if (p.getPrepareRecycleDateTime() != null) { + prepareRecycleDateTime = Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMM.format(p + .getPrepareRecycleDateTime()); + } + obj.put("patientName", app.getUseRecord().getPatientName()); + obj.put("operationRoom", app.getUseRecord().getOperationRoom()); + obj.put("hospitalNum", app.getUseRecord().getHospitalNum()); + obj.put("treatmentNum",app.getUseRecord().getTreatmentNum()); + } + } + } + obj.put("comfirmor", comfirmor); + obj.put("operator", operator); + obj.put("prepareRecycleDateTime", prepareRecycleDateTime); + obj.put("items", tousseItemArray); + obj.put("tousseBarcodes", tousseBarcodeArray); + return obj.toString(); + } + /** + * 获取待交接申请单 + * @param params + * @return + */ + public String getWaitTransitionList(JSONObject params){ + JSONObject json = new JSONObject(); + JSONArray groupArray = new JSONArray(); + JSONArray dataArray = new JSONArray(); + String gorupId = ""; + //申请单分组设置 + if(params != null){ + gorupId = params.optString("groupId"); + if(StringUtils.isBlank(gorupId)){ + List groups = departmentGroupManager.getTransitionGroup(); + + if(CollectionUtils.isNotEmpty(groups)){ + for (DepartmentGroup group : groups) { + JSONObject configObj = new JSONObject(); + configObj.put("id", group.getId()); + configObj.put("name", group.getName()); + groupArray.add(configObj); + } + } + } + } + //发货计划列表 + String orgUntiCodes = null; + if(StringUtils.isNotBlank(gorupId)){ + DepartmentGroup config = departmentGroupManager.get(gorupId); + if(config != null){ + String codeStr = config.getDepartCodes(); + if(StringUtils.isNotBlank(codeStr)){ + codeStr = codeStr.replaceAll(";", "','"); + orgUntiCodes = "'" + codeStr + "'"; + } + } + } + List invoicePlans = invoicePlanManager.getWaitTransitionInvoicePlans(orgUntiCodes); + if(invoicePlans != null){ + for (InvoicePlan plan : invoicePlans) { + if(plan instanceof RecyclingApplication){ + RecyclingApplication app = (RecyclingApplication)plan; + if(app.getUseRecord() == null){ + continue; + } + Integer includeRecyclingItems = app.getIncludeRecyclingItems(); + if (includeRecyclingItems != null + && includeRecyclingItems.intValue() == InvoicePlan.SIGNED_TRUE + .intValue()) { + JSONObject obj = new JSONObject(); + obj.put("id", app.getId()); + obj.put("applicant", app.getApplicant()); + obj.put("department", app.getDepart()); + obj.put("isPrepareRecycled", app.getIsPrepareRecycled()); + obj.put("patientName", app.getUseRecord().getPatientName()); + obj.put("hospitalNum", app.getUseRecord().getHospitalNum()); + obj.put("treatmentNum", app.getUseRecord().getTreatmentNum()); + obj.put("operationRoom", app.getOperationRoom()); + obj.put("tousseBarcodes", app.getTousseBarcodes()); + String appTime = ""; + try { + appTime = Constants.SIMPLEDATEFORMAT_YYYYMMDDHHMM.format(app.getApplicationTime()); + } catch (Exception e) {} + obj.put("appTime", appTime); + dataArray.add(obj); + } + } + } + } + + json.put("groups", groupArray); + json.put("data", dataArray); + return json.toString(); + } public String getUserInfo(JSONObject params){ JSONObject obj = new JSONObject(); @@ -2750,6 +3037,29 @@ } } + // 在器械交接的上下文,根据条码获取信息 + public String getInfoByBarcode_tousseTransition(JSONObject params) { + JSONObject json = null; + final String barcode = params.optString("barcode"); + if (StringUtils.isBlank(barcode)) { + json = JSONUtil.buildJsonObject(false,"缺失参数barcode"); + }else{ + TousseInstance tousseInstance = tousseInstanceManager.getTousseInstanceByBarcode(barcode); + if(tousseInstance == null){ + json = JSONUtil.buildJsonObject(false,String.format("没有找到条码(%s)对应的器械包",barcode)); + }else if(tousseInstance.getTousseFixedBarcode()){ + json = JSONUtil.buildJsonObject(false,String.format("条码(%s)为固定条码,请扫描唯一条码",barcode)); + }else{ + json = JSONUtil.buildJsonObject(true); + json.put("tousseName", tousseInstance.getTousseName()); + json.put("tousseDefinitionId", tousseInstance.getTousseDefinition().getId()); + json.put("barcode", barcode); + } + } + + return json.toString(); + } + private JsonObject userToJson(User user){ JsonObject data = new JsonObject(); data.addProperty("name", user.getName()); Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/departmentgroup/departmentgroupForm.js =================================================================== diff -u -r12331 -r15173 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/departmentgroup/departmentgroupForm.js (.../departmentgroupForm.js) (revision 12331) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/departmentgroup/departmentgroupForm.js (.../departmentgroupForm.js) (revision 15173) @@ -53,7 +53,7 @@ top.Ext4.ComponentQuery.query("#configForm #name")[0].setValue(result.data.name); top.Ext4.ComponentQuery.query("#configForm #departCodes")[0].setValue(result.data.departCodes); top.Ext4.ComponentQuery.query("#configForm #departNames")[0].setValue(result.data.departNames); - + top.Ext4.ComponentQuery.query("#configForm #prepareRecycleType")[0].setValue(result.data.prepareRecycleType); }else{ showResult('系统加载出错,请稍候再试'); } @@ -124,6 +124,12 @@ } function showWindow(id){ + + var prepareRecycleTypeStore = new Ext4.data.Store( { + fields : [{name:'value'},{name:'text'}], + data : [{value:'',text:'空白'}, {value:'预回收',text:'预回收'},{value:'器械交接',text:'器械交接'}] + }); + formPanel = new top.Ext4.form.Panel({ id : 'configForm', frame : true, @@ -160,6 +166,18 @@ allowBlank : false, anchor : '98%' },{ + xtype:'combobox', + id:'prepareRecycleType', + name: 'prepareRecycleType', + store:prepareRecycleTypeStore, + fieldLabel: '预回收属性', + valueField : 'value', + displayField : 'text', + forceSelection : false, + editable:false, + allowBlank:true, + triggerAction : 'all' + },{ xtype : 'textarea', fieldLabel : '科室', id : 'departNames', Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManager.java =================================================================== diff -u -r15167 -r15173 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManager.java (.../TousseTransitionRecordManager.java) (revision 15167) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionRecordManager.java (.../TousseTransitionRecordManager.java) (revision 15173) @@ -1,5 +1,8 @@ package com.forgon.disinfectsystem.toussetransition.service; +import net.sf.json.JSONArray; + +import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.toussetransition.TousseTransitionRecord; import com.forgon.tools.hibernate.BasePoManager; @@ -11,4 +14,16 @@ * @return */ public TousseTransitionRecord getByTousseInstanceBarcode(String barcode); + + /** + * 保存交接记录 + * @param plan 申请单,为RecyclingApplication对象 + * @param tousseBarcodes 扫描的条码信息 + * @param comfirmor 交接人 + * @param comfirmorCode 交接人编码 + * @param operator 接收人 + * @param operatorCode 接收人编码 + */ + void save(InvoicePlan plan, JSONArray tousseBarcodes, String comfirmor, + String comfirmorCode, String operator, String operatorCode); } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionItemManagerImpl.java =================================================================== diff -u -r15167 -r15173 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionItemManagerImpl.java (.../TousseTransitionItemManagerImpl.java) (revision 15167) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionItemManagerImpl.java (.../TousseTransitionItemManagerImpl.java) (revision 15173) @@ -1,6 +1,7 @@ package com.forgon.disinfectsystem.toussetransition.service; import java.util.List; +import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @@ -10,6 +11,7 @@ import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.entity.toussetransition.TousseTransitionItem; +import com.forgon.disinfectsystem.entity.toussetransition.TousseTransitionRecord; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.BasePoManagerImpl; @@ -30,6 +32,7 @@ JSONObject json = new JSONObject(); json.put("tousseBarcode", item.getTousseBarcode()); json.put("tousseName", tousseItem.getTousseName()); + json.put("tousseDefineId", tousseItem.getTousseDefinitionId() + ""); array.add(json); } } @@ -50,4 +53,33 @@ return null; } } + + @Override + public void save(TousseTransitionRecord record, JSONArray tousseBarcodes,Map map) { + if(tousseBarcodes == null || tousseBarcodes.isEmpty()){ + throw new RuntimeException("器械包条码不能为空"); + } + if(record == null){ + throw new RuntimeException("交接记录不能为空"); + } + if(map == null){ + throw new RuntimeException("未关联申请项"); + } + for (int i = 0; i < tousseBarcodes.size(); i++) { + JSONObject obj = tousseBarcodes.getJSONObject(i); + String tousseBarcode = obj.optString("tousseBarcode"); + Long tousseDefineId = obj.optLong("tousseDefineId"); + String tousseName = obj.optString("tousseName"); + TousseTransitionItem item = new TousseTransitionItem(); + item.setTousseBarcode(tousseBarcode); + TousseItem ti = map.get(tousseDefineId); + if(ti == null){ + throw new RuntimeException(String.format("器械包%s未找到申请项", tousseName)); + } + item.setTousseItemId(ti.getId()); + item.setTousseTransitionRecordId(record.getId()); + save(item); + } + + } } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java =================================================================== diff -u -r15149 -r15173 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 15149) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManagerImpl.java (.../InvoicePlanManagerImpl.java) (revision 15173) @@ -72,6 +72,7 @@ import com.forgon.tools.SqlBuilder; import com.forgon.tools.date.DateTools; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.string.StringTools; import com.forgon.tools.util.SqlUtils; /** @@ -276,6 +277,36 @@ return getWaitingforRecyclingInvoicePlans(sql); } + public List getWaitTransitionInvoicePlans(String orgUnitCodings){ + String sql = "where (po.recyclingStatus = '" + + InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE + + "' or po.recyclingStatus = '" + + InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE + + "') and po.committedStatus=true"; + if (StringUtils.isNotBlank(orgUnitCodings)) { + // departCoding字段为字符串,需要加单引号查询 + if (!orgUnitCodings.startsWith("'")){ + orgUnitCodings = "'" + orgUnitCodings + "'"; + } + + sql += " and po.departCoding in (" + orgUnitCodings + ")"; + } + String handleDepartCode = AcegiHelper.getCurrentOrgUnitCode(); + if(StringTools.isNotBlank(handleDepartCode)){ + sql += " and po.handleDepartCoding='" + handleDepartCode + "'"; + } + // 此处是触摸屏回收待回收列表调用,而触摸屏回收不处理外来器械包,所以要加上过滤 + sql += " and po.type != '" + InvoicePlan.TYPE_FOREIGNTOUSSEAPPLIACTION + + "'"; + sql += " and ( po.includeRecyclingItems is null or po.includeRecyclingItems = " + + InvoicePlan.SIGNED_TRUE + " )"; + sql += " and po.isPrepareRecycled = " + InvoicePlan.SIGNED_FALSE; + sql += " and ( po.useRecord is not null )"; + sql += " order by po.sequence,po.departCoding,po.applicationTime"; + + return getWaitingforRecyclingInvoicePlans(sql); + } + public List getExpressRecyclingTousse(int supplyRoomType, String handleDepartCodings){ String sql = String.format("where po.invoicePlan.recyclingStatus in('%s','%s') and po.invoicePlan.committedStatus=true", InvoicePlan.RECYCLINGSTATUS_AWAITRECYCLE,InvoicePlan.RECYCLINGSTATUS_PARTRECYCLE); Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java =================================================================== diff -u -r15149 -r15173 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 15149) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/recyclingapplication/service/InvoicePlanManager.java (.../InvoicePlanManager.java) (revision 15173) @@ -12,6 +12,7 @@ import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan; import com.forgon.disinfectsystem.entity.invoicemanager.LostMaterialItem; import com.forgon.disinfectsystem.entity.invoicemanager.TimeQuantum; +import com.forgon.disinfectsystem.entity.recyclingapplication.RecyclingApplication; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.recyclingapplication.vo.InvoicePlanVo; import com.forgon.disinfectsystem.vo.ApplicationItemVO; @@ -50,6 +51,12 @@ public int getInvoicePlanAmount(String sql); public List getAwaitForRecyclingInvoicePlan(int supplyRoomType,String orgUnitCodings); + /** + * 获取待交接物品的申请单 + * @param orgUnitCodings + * @return + */ + public List getWaitTransitionInvoicePlans(String orgUnitCodings); public List getWaitingforRecyclingInvoicePlans(String handleDepartCoding,String applicationOrgUnitCoding,String applicationType); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManagerImpl.java =================================================================== diff -u -r12331 -r15173 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManagerImpl.java (.../DepartmentGroupManagerImpl.java) (revision 12331) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/departmentgroup/service/DepartmentGroupManagerImpl.java (.../DepartmentGroupManagerImpl.java) (revision 15173) @@ -6,36 +6,39 @@ import net.sf.json.JSONObject; import com.forgon.disinfectsystem.entity.recycledepartmentgroup.DepartmentGroup; +import com.forgon.tools.hibernate.BasePoManagerImpl; import com.forgon.tools.hibernate.ObjectDao; -public class DepartmentGroupManagerImpl implements DepartmentGroupManager { - - private ObjectDao objectDao; - - public void setObjectDao(ObjectDao objectDao) { - this.objectDao = objectDao; +public class DepartmentGroupManagerImpl extends BasePoManagerImpl implements DepartmentGroupManager { + public DepartmentGroupManagerImpl() { + super(DepartmentGroup.class); } + private static final String PREPARE_RECYCLE_TYPE_TRANSITION = "器械交接"; + private static final String PREPARE_RECYCLE_TYPE_RECYCLE = "预回收"; + @Override public DepartmentGroup getById(String id) { return (DepartmentGroup)objectDao.getByProperty(DepartmentGroup.class.getSimpleName(), "id", Long.valueOf(id)); } @Override - public void delete(DepartmentGroup group) { - if(group != null){ - objectDao.delete(group); - } + public List getAllGroups() { + return objectDao.findAllObjects(DepartmentGroup.class.getSimpleName()); } + private List getGroup(String prepareRecycleType){ + String hql = " where po.prepareRecycleType='" + prepareRecycleType + "' order by orderNum asc"; + return objectDao.findBySql(poName, hql); + } @Override - public void save(DepartmentGroup group) { - objectDao.saveOrUpdate(group); + public List getTransitionGroup() { + return getGroup(PREPARE_RECYCLE_TYPE_TRANSITION); } @Override - public List getAllGroups() { - return objectDao.findAllObjects(DepartmentGroup.class.getSimpleName()); + public List getPrepareRecycleGroup() { + return getGroup(PREPARE_RECYCLE_TYPE_RECYCLE); } } Index: ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionItemManager.java =================================================================== diff -u -r15167 -r15173 --- ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionItemManager.java (.../TousseTransitionItemManager.java) (revision 15167) +++ ssts-recyclingapplication/src/main/java/com/forgon/disinfectsystem/toussetransition/service/TousseTransitionItemManager.java (.../TousseTransitionItemManager.java) (revision 15173) @@ -1,9 +1,12 @@ package com.forgon.disinfectsystem.toussetransition.service; +import java.util.Map; + import net.sf.json.JSONArray; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; import com.forgon.disinfectsystem.entity.toussetransition.TousseTransitionItem; +import com.forgon.disinfectsystem.entity.toussetransition.TousseTransitionRecord; import com.forgon.tools.hibernate.BasePoManager; /** @@ -24,4 +27,11 @@ * @return */ public Long getTousseTranstitionRecordIdByBarcode(String barcode); + /** + * 保存交接记录明细项 + * @param record + * @param tousseBarcodes + * @param map + */ + public void save(TousseTransitionRecord record, JSONArray tousseBarcodes, Map map); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/recycledepartmentgroup/DepartmentGroup.java =================================================================== diff -u -r12331 -r15173 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/recycledepartmentgroup/DepartmentGroup.java (.../DepartmentGroup.java) (revision 12331) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/recycledepartmentgroup/DepartmentGroup.java (.../DepartmentGroup.java) (revision 15173) @@ -7,10 +7,13 @@ import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.Table; + import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; +import com.forgon.tools.string.StringTools; + /*** * 部门分组 * @author wangyi @@ -30,6 +33,11 @@ private Integer orderNum; + /** + * 预回收属性,可选值为空白,预回收,器械交接 + */ + private String prepareRecycleType; + @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { @@ -75,6 +83,14 @@ public void setOrderNum(Integer orderNum) { this.orderNum = orderNum; } + + public String getPrepareRecycleType() { + return StringTools.defaultString(prepareRecycleType); + } + + public void setPrepareRecycleType(String prepareRecycleType) { + this.prepareRecycleType = StringTools.defaultString(prepareRecycleType); + } }