Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/godownEntry/godownEntryView.js =================================================================== diff -u -r22637 -r22690 --- ssts-web/src/main/webapp/disinfectsystem/assestManagement/godownEntry/godownEntryView.js (.../godownEntryView.js) (revision 22637) +++ ssts-web/src/main/webapp/disinfectsystem/assestManagement/godownEntry/godownEntryView.js (.../godownEntryView.js) (revision 22690) @@ -116,6 +116,21 @@ ]) }); +/** + * 审核人store + */ +var verifierStore = new Ext.data.Store({ + proxy : new Ext.data.HttpProxy({ + url : WWWROOT + '/systemmanage/user/loadUserByDepartmentCode!loadUserByDepartmentCode.do', + method : 'POST' + }), + reader : new Ext.data.JsonReader({ + totalProperty : 'totalCount', + root : 'data' + }, [ + {name : 'name',mapping : 'name'} + ]) +}); batchNumStore = new top.Ext.data.Store({ proxy : new top.Ext.data.HttpProxy({ @@ -387,14 +402,15 @@ success : function(response, options) { var result = response.responseText; if (result != null && result != "null") { - var resultObj = JSON.parse(result); - +// var resultObj = JSON.parse(result); + var resultObj = Ext.util.JSON.decode(result); if(!resultObj.success){ - showResult(resultObj.errMsg); + showResult(resultObj.message); return; } - if(resultObj.barcodeType == '条码信息'){ - var info = JSON.parse(resultObj.barcodeInformation.information); + if(resultObj.data.barcodeType == '条码信息'){ +// var info = JSON.parse(resultObj.data.barcodeInformation.information); + var info = resultObj.data.barcodeInformation.information; if(!isUndefinedOrNullOrEmpty(info.disposableGoodsName)){ top.Ext.getCmp('name1').setValue(info.disposableGoodsName); top.Ext.getCmp('disposableGoodsID').setValue(info.disposableGoodsId); @@ -424,6 +440,47 @@ }); } +/** + * 扫描科室核对人条码 + */ +function loadUserVerifierByBarcode(verifierBarcode){ + var verifierId; + if(verifierBarcode == "supplyRoomVerifierBarcode"){ + verifierId = 'supplyRoomVerifier'; + }else if(verifierBarcode == "equipmentVerifierBarcode"){ + verifierId = 'equipmentVerifier'; + } + var barcode = top.Ext.getCmp(verifierBarcode).getValue(); + top.Ext.getCmp(verifierBarcode).setValue('');// 清除条码 + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/godownEntryAction!loadBarcodeDeviceInfo.do', + params : { + barcode : barcode, + isUserBarcode : true + }, + success : function(response, options) { + var result = response.responseText; + if (result != null && result != "null") { + var resultObj = Ext.util.JSON.decode(result); +// var resultObj = JSON.parse(result); + if(!resultObj.success){ + showResult(resultObj.message); + return; + } + if(resultObj.data.barcodeType == '条码信息'){ + top.Ext.getCmp(verifierId).setValue(resultObj.data.userFullName); + } + }else{ + showResult('输入的条码无效!'); + } + }, + failure : function(response, options) { + alert(1); + var result = Ext.decode(response.responseText); + } + }); +} + var selectModel = new top.Ext.grid.CheckboxSelectionModel(); //从入库单列表点添加或点击列表中某一行的单都会调用此function function addGodownEntry() { @@ -531,7 +588,7 @@ } }] }, { - columnWidth : .20, + columnWidth : .15, layout : 'form', labelWidth : 60, items : [{ @@ -579,7 +636,115 @@ cls : 'fieldReadOnlyNoRemove', anchor : '95%' }] - }, { + },{ + hidden : !sstsConfig.showDisposableGoodsGodownEntryVerifier || (commonEntry.isOpen() ? false:true), + columnWidth : .25, + layout : 'form', + labelWidth : 130, + items :[{ + xtype : 'textfield', + fieldLabel :'扫描供应室核对人条码', + id : 'supplyRoomVerifierBarcode', + name : 'supplyRoomVerifierBarcode', + width : 100, + enableKeyEvents : true, + listeners : { + render : function(c) { + c.getEl().on('keypress',function(e) { + if (e.getKey() == 13) {// 输入;号键,grid重新加载 + loadUserVerifierByBarcode('supplyRoomVerifierBarcode'); + } + }); + } + } + }] + },{ + hidden : !sstsConfig.showDisposableGoodsGodownEntryVerifier|| (commonEntry.isOpen() ? false:true), + columnWidth : .25, + layout : 'form', + labelWidth : 80, + items:[{ + xtype : 'combo', + fieldLabel : '供应室核对人', + id : 'supplyRoomVerifier', + name : 'supplyRoomVerifier', + queryParam : 'spell', + valueField : 'name', + displayField : 'name', + store : verifierStore, + forceSelection : true, + lazyInit : true, + minChars : 0, + listWidth:100, + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + allowBlank : true, + width : 100, + listeners : { + select : function(combo, record, index) { + top.Ext.getCmp('supplyRoomVerifier').setValue(record.data.name); + top.Ext.getCmp('equipmentVerifierBarcode').focus(); + }, + specialkey : function(field, ee) { + if (ee.getKey() == Ext.EventObject.ENTER) { + top.Ext.getCmp('equipmentVerifierBarcode').focus(); + } + } + } + }] + },{ + hidden : !sstsConfig.showDisposableGoodsGodownEntryVerifier|| (commonEntry.isOpen() ? false:true), + columnWidth : .25, + layout : 'form', + labelWidth : 130, + items :[{ + xtype : 'textfield', + fieldLabel :'扫描设备科核对人条码', + id : 'equipmentVerifierBarcode', + name : 'equipmentVerifierBarcode', + width : 100, + enableKeyEvents : true, + listeners : { + render : function(c) { + c.getEl().on('keypress',function(e) { + if (e.getKey() == 13) {// 输入;号键,grid重新加载 + loadUserVerifierByBarcode('equipmentVerifierBarcode'); + } + }); + } + } + }] + },{ + hidden : !sstsConfig.showDisposableGoodsGodownEntryVerifier|| (commonEntry.isOpen() ? false:true), + columnWidth : .25, + layout : 'form', + labelWidth : 80, + items:[{ + xtype : 'combo', + fieldLabel : '设备科核对人', + id : 'equipmentVerifier', + name : 'equipmentVerifier', + queryParam : 'spell', + valueField : 'name', + displayField : 'name', + store : verifierStore, + forceSelection : true, + lazyInit : true, + minChars : 0, + listWidth:100, + triggerAction : 'all', + hideTrigger : true, + typeAhead : false, + allowBlank : true, + width : 100, + listeners : { + select : function(combo, record, index) { + top.Ext.getCmp('equipmentVerifier').setValue(record.data.name); + } + } + }] + },{ columnWidth : 1, layout : 'form', labelWidth : 40, @@ -1308,6 +1473,37 @@ }); } },{ + text : '保存核对人', + hidden: verifierUpdateButton || !sstsConfig.showDisposableGoodsGodownEntryVerifier||(commonEntry.isOpen()?false:true), + handler : function(){ + var supplyRoomVerifier = top.Ext.getCmp('supplyRoomVerifier').getValue();//供应室核对员 + var equipmentVerifier = top.Ext.getCmp('equipmentVerifier').getValue();//设备科核对员 + if(isUndefinedOrNullOrEmpty(equipmentVerifier)){ + showResult('设备科核对员不能为空!'); + return false; + }; + if(isUndefinedOrNullOrEmpty(supplyRoomVerifier)){ + showResult('供应室核对员不能为空!'); + return false; + }; + // 设置表单参数json + setFormParams(form,['id','equipmentVerifier','supplyRoomVerifier']); + form.form.submit({ + url : WWWROOT + '/disinfectSystem/godownEntryAction!saveGodownEntryVerifier.do', + method : 'POST', + waitMsg : '正在保存数据,请稍候', + waitTitle : '提交表单', + success : function(form, action) { + showResult(action.result.message); + godownEntryWin.close(); + grid.dwrReload(); + }, + failure : function(form, action) { + alert(action.result.message); + } + }); + } + },{ text : '打印新批次', hidden : commonEntry.isOpen() ? false:true, handler : function(){ @@ -1824,6 +2020,8 @@ top.Ext.getCmp("time").setValue(Ext.util.Format.date(new Date(action.result.data.time.time), 'Y-m-d H:i')); setWareHouseInfo(action.result.data.warehouseID,action.result.data.warehouseName); top.Ext.getCmp("wareHouse1").setValue(action.result.data.warehouseID); + top.Ext.getCmp("equipmentVerifier").setValue(action.result.data.equipmentVerifier); + top.Ext.getCmp("supplyRoomVerifier").setValue(action.result.data.supplyRoomVerifier); for(var i = 0 ;i < action.result.data.itemsList.length ;i++){ var specification = action.result.data.itemsList[i].diposableGoods.specification; Index: ssts-web/src/main/webapp/disinfectsystem/config/gdsy/config.js =================================================================== diff -u -r22653 -r22690 --- ssts-web/src/main/webapp/disinfectsystem/config/gdsy/config.js (.../config.js) (revision 22653) +++ ssts-web/src/main/webapp/disinfectsystem/config/gdsy/config.js (.../config.js) (revision 22690) @@ -259,5 +259,7 @@ //回收时,申请数量与回收数量不一致,是否要确认 confirmRecyclingAmount:false, //是否显示一次性物品盘点汇总信息。默认为false - showGatherDisposableGoodsInventoryRecordItems:true + showGatherDisposableGoodsInventoryRecordItems:true, + //是否显示一次性物品入库单核对人员信息。默认为false + showDisposableGoodsGodownEntryVerifier:true } \ No newline at end of file Index: ssts-web/src/main/resources/systemset/operationDefine.xml =================================================================== diff -u -r22535 -r22690 --- ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 22535) +++ ssts-web/src/main/resources/systemset/operationDefine.xml (.../operationDefine.xml) (revision 22690) @@ -294,6 +294,7 @@ + Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManagerImpl.java =================================================================== diff -u -r22637 -r22690 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManagerImpl.java (.../GodownEntryManagerImpl.java) (revision 22637) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManagerImpl.java (.../GodownEntryManagerImpl.java) (revision 22690) @@ -3032,5 +3032,48 @@ + "#&" + disposableGoodsBatch.getBatchNumber() + "#&" + specification); } + + @Override + public void saveOrUpdateGodownEntryVerifier(String formParams,JSONObject jsonObj) { + jsonObj.put(JSONUtil.JSON_KEY_SUCCESS, false); + try { + if(StringUtils.isBlank(formParams)){ + throw new RuntimeException("参数非法,formParams不能为空!"); + } + JSONObject formParamsObject = JSONObject.fromObject(formParams); + //1 获得入库单id,设备科核对人,供应室核对人 + Long id = JSONUtil.optLong(formParamsObject,"id",null); + String newEVerifier = JSONUtil.optString(formParamsObject,"equipmentVerifier",null);//设备科核对人 + String newOVerifier = JSONUtil.optString(formParamsObject,"supplyRoomVerifier",null);//供应室核对人 + if(DatabaseUtil.isPoIdValid(id)){ + //2 根据入库单id获得入库单 + GodownEntry entry = (GodownEntry) objectDao.getByProperty_ForUpdate(GodownEntry.class.getSimpleName(), "id", Long.valueOf(id)); + if(entry == null){ + throw new RuntimeException("入库单已被删除"); + } + + //3 记录修改前的入库单核对人 + String originalEVerifier = entry.getEquipmentVerifier(); + String originalOVerifier = entry.getSupplyRoomVerifier(); + + //4 修改入库单核对人 + entry.setEquipmentVerifier(newEVerifier); + entry.setSupplyRoomVerifier(newOVerifier); + objectDao.saveOrUpdate(entry); + + //5 记录日志 + String operationDescription = "修改一次性物品入库单(单号="+ entry.getSerialNumber() + +")的核对人员 修改前:设备科核对人="+originalEVerifier+"供应室核对人="+originalOVerifier + +"。修改后:设备科核对人="+newEVerifier+",供应室核对人="+newOVerifier; + appLogManager.saveLog(AcegiHelper.getLoginUser(), Log.MODEL_DISPOSABLEGOODS, Log.TYPE_UPDATE, operationDescription); + jsonObj.put(JSONUtil.JSON_KEY_SUCCESS, true); + jsonObj.put(JSONUtil.JSON_KEY_MESSAGE, "保存核对人成功"); + }else{ + throw new RuntimeException("参数非法,入库单id不能为空!"); + } + } catch (Exception e) { + jsonObj.put(JSONUtil.JSON_KEY_MESSAGE, e.getMessage()); + } + } } Index: ssts-web/src/main/webapp/disinfectsystem/assestManagement/godownEntry/godownEntryView.jsp =================================================================== diff -u -r20273 -r22690 --- ssts-web/src/main/webapp/disinfectsystem/assestManagement/godownEntry/godownEntryView.jsp (.../godownEntryView.jsp) (revision 20273) +++ ssts-web/src/main/webapp/disinfectsystem/assestManagement/godownEntry/godownEntryView.jsp (.../godownEntryView.jsp) (revision 22690) @@ -60,7 +60,12 @@ SSTS_WarehouseEntry_Import = false; + var SSTS_WarehouseEntryVerifier_Update = true; + + SSTS_WarehouseEntryVerifier_Update = false; + + var verifierUpdateButton = SSTS_WarehouseEntryVerifier_Update; var saveButton = SSTS_WarehouseEntry_Create && SSTS_WarehouseEntry_Update && SSTS_WarehouseEntry_Delete; Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/GodownEntryAction.java =================================================================== diff -u -r22637 -r22690 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/GodownEntryAction.java (.../GodownEntryAction.java) (revision 22637) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/action/GodownEntryAction.java (.../GodownEntryAction.java) (revision 22690) @@ -39,6 +39,7 @@ import com.forgon.disinfectsystem.entity.assestmanagement.GodownEntryItem; import com.forgon.disinfectsystem.entity.basedatamanager.barcodeinformation.BarcodeInformation; import com.forgon.disinfectsystem.entity.tousseitem.TousseItem; +import com.forgon.security.model.User; import com.forgon.tools.MapTools; import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.StrutsResponseUtils; @@ -733,38 +734,38 @@ } public String loadBarcodeDeviceInfo() { String barcode = StrutsParamUtils.getPraramValue("barcode", ""); - Map returnMsg = new HashMap(); - returnMsg.put("success", false); - returnMsg.put("errMsg", "加载失败"); - + String isUserBarcode = StrutsParamUtils.getPraramValue("isUserBarcode",""); + JSONObject json = new JSONObject(); try { if (StringUtils.isBlank(barcode)) { throw new RuntimeException("条码不能为空!"); } BarcodeDevice barcodeDevice = barcodeManager .getBarcodeByBarcode(barcode); - if (barcodeDevice == null){ + if (barcodeDevice == null && isUserBarcode.equals("true")){ + throw new RuntimeException("查无此人员"); + }else if(barcodeDevice == null){ throw new RuntimeException("查无此物品"); } - if(barcodeDevice instanceof BarcodeInformation){// 高值耗材处理 - returnMsg.put("barcodeType", BarcodeDevice.BARCODE_TYPE_BARCODEINFORMATION); - returnMsg.put("barcodeInformation", barcodeDevice); + if(isUserBarcode.equals("true")){ + if(barcodeDevice instanceof User){//人员处理 + User user = (User) barcodeDevice; + json.put("barcodeType", BarcodeDevice.BARCODE_TYPE_BARCODEINFORMATION); + json.put("userFullName", user.getFullName()); + } }else{ - throw new RuntimeException("不支持的条码类型!"); + if(barcodeDevice instanceof BarcodeInformation){// 高值耗材处理 + json.put("barcodeType", BarcodeDevice.BARCODE_TYPE_BARCODEINFORMATION); + json.put("barcodeInformation", barcodeDevice); + }else{ + throw new RuntimeException("不支持的条码类型!"); + } } - - returnMsg.put("success", true); } catch (Exception e) { e.printStackTrace(); - returnMsg.put("errMsg", e.getMessage()); + StrutsResponseUtils.output(JSONUtil.buildJsonObject(false, e.getMessage())); } - try { - StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); - String jsonStr = JSONUtil.toJSONString(returnMsg,true); - StrutsParamUtils.getResponse().getWriter().print(jsonStr); - } catch (IOException e) { - e.printStackTrace(); - } + StrutsResponseUtils.output(true, json); return null; } @Override @@ -840,6 +841,18 @@ StrutsResponseUtils.output(JSONUtil.buildJsonObject(false, "请选择要打印的入库单!")); } } - + + /** + * 修改入库单核对人 + */ + public void saveGodownEntryVerifier() { + String idStr = StrutsParamUtils.getPraramValue("id", ""); + String formParams = StrutsParamUtils.getPraramValue("formParams", ""); + JSONObject jsonObj = new JSONObject(); + if(StringUtils.isNotBlank(idStr)){ + godownEntryManager.saveOrUpdateGodownEntryVerifier(formParams,jsonObj); + } + StrutsResponseUtils.output(jsonObj); + } } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/GodownEntry.java =================================================================== diff -u -r21278 -r22690 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/GodownEntry.java (.../GodownEntry.java) (revision 21278) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/assestmanagement/GodownEntry.java (.../GodownEntry.java) (revision 22690) @@ -125,6 +125,16 @@ public final static Integer DATA_STASUS_ERROR = 0; public final static Integer DATA_STASUS_SUCC = 1; + /** + * 设备科审核人(广东省医院这边无菌物品入库需要双人核对) + */ + private String equipmentVerifier ; + + /** + * 供应室审核人(广东省医院这边无菌物品入库需要双人核对) + */ + private String supplyRoomVerifier; + @JsonIgnore private List itemsList = new ArrayList(); @@ -153,6 +163,22 @@ this.id = id; } + public String getEquipmentVerifier() { + return equipmentVerifier; + } + + public void setEquipmentVerifier(String equipmentVerifier) { + this.equipmentVerifier = equipmentVerifier; + } + + public String getSupplyRoomVerifier() { + return supplyRoomVerifier; + } + + public void setSupplyRoomVerifier(String supplyRoomVerifier) { + this.supplyRoomVerifier = supplyRoomVerifier; + } + public String getSerialNumber() { return serialNumber; } Index: ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManager.java =================================================================== diff -u -r22637 -r22690 --- ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManager.java (.../GodownEntryManager.java) (revision 22637) +++ ssts-diposablegoods/src/main/java/com/forgon/disinfectsystem/diposablegoods/service/GodownEntryManager.java (.../GodownEntryManager.java) (revision 22690) @@ -112,4 +112,12 @@ * @return */ public String printyGodownEntryNewBatch(List godownEntryIdsStrList); + + + /** + * 修改入库单核对人员 + * @param formParams 前台的核对人数据 例如:{"id":"888","equipmentVerifier":"刘德华","supplyRoomVerifier":"周润发"} + * @param jsonObj + */ + public void saveOrUpdateGodownEntryVerifier(String formParams,JSONObject jsonObj); }