Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/becleanitem/ClassifyBasket.java =================================================================== diff -u -r14128 -r15219 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/becleanitem/ClassifyBasket.java (.../ClassifyBasket.java) (revision 14128) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/becleanitem/ClassifyBasket.java (.../ClassifyBasket.java) (revision 15219) @@ -57,6 +57,8 @@ private Date recyclingTime; // 回收时间 + private String position; // 位置 + @JsonIgnore private Set classfiedItems = new HashSet(); @JsonIgnore @@ -74,7 +76,14 @@ this.id = id; } - + public String getPosition() { + return position; + } + + public void setPosition(String position) { + this.position = position; + } + public Date getRecyclingTime() { return recyclingTime; } Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/position/positionView.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/position/positionView.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/position/positionView.js (revision 15219) @@ -0,0 +1,176 @@ +var entityName = "位置管理"; +var grid; + +// 删除 +function deletePosition(grid) { + + var records = grid.getSelectionModel().getSelections(); + + if (records.length == 0) { + showResult("请选择要删除的位置!"); + return false; + } + var ids = null; + for ( var i = 0, len = records.length; i < len; i++) { + if (ids == null) { + ids = records[i].data['id']; + } else { + ids = ids + ';' + records[i].data['id']; + } + } + top.Ext.MessageBox + .confirm("请确认", + "是否确定要删除选中的位置信息?", + function(button, text) { + if ("yes" == button){ + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/baseData/positionAction!deletePosition.do', + params : { + ids : ids + },success : function(response, options) { + var result = Ext.decode(response.responseText); + var success = result.success; + if (true != success) { + showResult('该位置已被使用,不能删除。'); + return; + } else { + showResult('删除成功!'); + grid.dwrReload(); + } + }, + failure : function(response, options) { + showResult('删除请求失败。'); + } + });} + }); +} + +var loadFormData = function(grid) { + var records = grid.getSelectionModel().getSelections(); + if (records.length == 0) { + showResult("请选择要修改的位置!"); + return false; + } + if (records.length > 1) { + showResult("一次只能修改一个位置!"); + return false; + } + id = records[0].data['id']; + addAndEditPosition(id); +}; + +function modify(v,data){ + loadFormData(grid); +} + +Ext.onReady(function() { + Ext.QuickTips.init(); + + var columns = [ + {header : "条码",width : 120,dataIndex : 'barcode', renderer : modifyRecord}, + {header : "位置",width : 120,dataIndex : 'positionName'}, + {header : "类型",width : 120,dataIndex : 'positionType'}, + {header : "备注",width : 120,dataIndex : 'remark'} + ]; + + var filters = new Ext.grid.GridFilters({ + filters : [ + {type:'string',dataIndex:'barcode'}, + {type:'string',dataIndex:'positionName'}, + {type:'string',dataIndex:'positionType'}, + {type:'string',dataIndex:'remark'} + ] + }); + + var readerDetail = [ { + name : 'id' + }, { + name : 'barcode' + }, { + name : 'positionName' + },{ + name : 'positionType' + },{ + name : 'remark' + }]; + + var sign = true; + var tbar = [ { + text : '添加', + iconCls : 'btn_ext_application_add', + handler : function() { + addAndEditPosition(0); + } + }, '-', { + text : '修改', + iconCls : 'btn_ext_application_edit', + id : 'editTbar', + handler : function() { + loadFormData(grid); + } + }, '-', { + text : '删除', + iconCls : 'btn_ext_application_del', + handler : function() { + deletePosition(grid); + } + }, '-', { + text : '打印条码', + iconCls : 'icon_print', + handler:function (){ + var sm = grid.getSelectionModel(); + if(sm.getSelected()){ + var recs=sm.getSelections(); + for(var i=0;i + Index: ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml =================================================================== diff -u -r15165 -r15219 --- ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 15165) +++ ssts-web/src/main/resources/spring/applicationContext-disinfectsystem-service.xml (.../applicationContext-disinfectsystem-service.xml) (revision 15219) @@ -359,7 +359,29 @@ + + + + + + + + + + + PROPAGATION_REQUIRED + + + + + + + + Index: ssts-web/src/main/webapp/homepage/menuconfigure.js =================================================================== diff -u -r15204 -r15219 --- ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 15204) +++ ssts-web/src/main/webapp/homepage/menuconfigure.js (.../menuconfigure.js) (revision 15219) @@ -519,6 +519,7 @@ {hidden :SSTS_Container,text:"容器管理",href:WWWROOT+'/disinfectsystem/basedatamanager/container/containerView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_Supplier,text:"供应商管理",href:WWWROOT+'/disinfectsystem/basedatamanager/supplier/supplierView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_SupplyRoomType,text:"条码信息",href:WWWROOT+'/disinfectsystem/basedatamanager/barcodeInformation/barcodeInformation.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, + {hidden :!((sstsConfig.hasOwnProperty('haveRinserPosition')) && sstsConfig.haveRinserPosition),text:"位置管理",href:WWWROOT+'/disinfectsystem/basedatamanager/position/positionView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_CleanMethod,text:"清洗程序管理",href:WWWROOT+'/disinfectsystem/basedatamanager/cleanmethod/cleanMethodView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_Rinser,text:"清洗机管理",href:WWWROOT+'/disinfectsystem/basedatamanager/rinser/rinserView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, {hidden :SSTS_Sterilisation,text:"灭菌程序管理",href:WWWROOT+'/disinfectsystem/basedatamanager/sterilisation/sterilisationView.jsp?editMode=true',hrefTarget:linkTarget,leaf:true}, Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/barcode/dwr/table/BarcodeTableManager.java =================================================================== diff -u -r14297 -r15219 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/barcode/dwr/table/BarcodeTableManager.java (.../BarcodeTableManager.java) (revision 14297) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/barcode/dwr/table/BarcodeTableManager.java (.../BarcodeTableManager.java) (revision 15219) @@ -79,6 +79,8 @@ }else if(barcodeDevice instanceof IDCardInstance) { obj.put("returnType", "tousseInstance"); + }else if(barcodeDevice.getType()!=null && barcodeDevice.getType().equals(BarcodeDevice.BARCODE_TYPE_POSITION)){ + obj.put("returnType", "position"); }else{ obj.put("message", "条码类型不对,请扫描科室/用户/标识牌/器械包/清洗筐/清洗程序/清洗机条码!"); } Index: ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectForm.js =================================================================== diff -u -r14796 -r15219 --- ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectForm.js (.../washAndDisinfectForm.js) (revision 14796) +++ ssts-web/src/main/webapp/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/washAndDisinfectForm.js (.../washAndDisinfectForm.js) (revision 15219) @@ -146,6 +146,11 @@ barcode = top.Ext.getCmp('inputText').getValue(); top.Ext.getCmp('inputText').setValue(""); } + var position = top.Ext.getCmp('position').getValue(); + if(position == null || position == ''){ + showResult("请先扫描位置"); + return; + } var root = top.Ext.getCmp('basketTreePanel').root; var node = root.findChild('barcode', barcode); if (node) { @@ -186,6 +191,7 @@ var personInCharge = top.Ext.getCmp('personInCharge').getValue(); var personInChargeCode = top.Ext.getCmp('personInChargeCode').getValue(); + var position = top.Ext.getCmp('position').getValue(); var basket = new top.Ext.tree.TreeNode({ id : array[0], name : array[1], @@ -194,6 +200,7 @@ barcode : array[3], personInCharge:personInCharge, personInChargeCode:personInChargeCode, + position : position, cls : 'master-task', iconCls : 'task-folder', uiProvider : Ext.tree.ColumnNodeUI, @@ -387,6 +394,7 @@ barcode : containerlItems[3], personInCharge : containerlItems[4], personInChargeCode : containerlItems[5], + position : containerlItems[6], cls : 'master-task', iconCls : 'task-folder', uiProvider : Ext.tree.ColumnNodeUI, @@ -419,6 +427,9 @@ top.Ext.getCmp('personInCharge').setValue(basket.attributes.personInCharge); top.Ext.getCmp('personInChargeCode').setValue(basket.attributes.personInChargeCode); } + if(basket.attributes.position != null && basket.attributes.position != ''){ + top.Ext.getCmp('position').setValue(basket.attributes.position); + } } } @@ -476,7 +487,8 @@ return ''; } }, - {header : '责任人',width : 50,dataIndex : 'personInCharge'}], + {header : '责任人',width : 50,dataIndex : 'personInCharge'}, + {header : '位置',width : 80,dataIndex : 'position',hidden : !((sstsConfig.hasOwnProperty('haveRinserPosition')) && sstsConfig.haveRinserPosition)}], loader: new Ext.tree.TreeLoader({uiProviders:{'col': Ext.tree.ColumnNodeUI}}), root: new top.Ext.tree.AsyncTreeNode({ text : '' @@ -664,6 +676,19 @@ name : 'personInChargeCode', id : 'personInChargeCode' }, { + columnWidth : 0.5, + layout : 'form', + hidden : !((sstsConfig.hasOwnProperty('haveRinserPosition')) && sstsConfig.haveRinserPosition), + items : [{ + xtype : 'textfield', + fieldLabel : "位置", + name : "position", + readOnly : true, + id : "position", + anchor : '99%', + cls:'fieldReadOnlyNoRemove' + }] + },{ columnWidth : .5, layout : 'form', hidden : true, @@ -718,7 +743,9 @@ loadWashProgramByBarcode(barcode); }else if(result.returnType == 'user'){ loadUserByBarcode(barcode); - }else{ + }else if(result.returnType == 'position'){ + loadPositionByBarcode(barcode); + }else{ showResult(result.message); } }else{ @@ -1345,7 +1372,8 @@ classifyBasketInfo.push({ classifyBasketID: node.attributes.id, personInCharge: node.attributes.personInCharge, - personInChargeCode: node.attributes.personInChargeCode + personInChargeCode: node.attributes.personInChargeCode, + position: node.attributes.position }); }); top.Ext.getCmp('classifyBasketInfo').setValue(JSON.stringify(classifyBasketInfo)); @@ -1441,7 +1469,7 @@ if(!isUndefinedOrNullOrEmpty(responseText)){ var result = top.Ext.decode(responseText); if(!result.success){ - showResult("输入的条码有误!"); + showResult("不允许登记非本科室人员,请扫描本科室人员条码!"); return; } top.Ext.getCmp('personInCharge').setValue(result.fullName); @@ -1485,6 +1513,25 @@ } }); } +//根据条码获取位置名称 +function loadPositionByBarcode(barcode){ + if(isUndefinedOrNullOrEmpty(barcode)){ + showResult('条码不能为空!'); + return ; + } + PositionTableManager.getPositionNameByBarcode(barcode,true,function(responseText){ + if(!isUndefinedOrNullOrEmpty(responseText)){ + var result = top.Ext.decode(responseText); + if(!result.success){ + showResult(result.message); + return; + } + top.Ext.getCmp('position').setValue(result.name); + }else{ + showResult('找不到该条码所对应的位置信息'); + } + }); +} function cancel() { washAndDisinfectRecordWin.close(); Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/position/dwr/table/PositionTableManager.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/position/dwr/table/PositionTableManager.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/position/dwr/table/PositionTableManager.java (revision 15219) @@ -0,0 +1,70 @@ +package com.forgon.disinfectsystem.basedatamanager.position.dwr.table; + +import java.util.List; +import java.util.Map; + +import net.sf.json.JSONObject; + +import org.apache.commons.lang3.StringUtils; + +import com.forgon.component.grid.GridManager; +import com.forgon.disinfectsystem.basedatamanager.position.service.PositionManager; +import com.forgon.disinfectsystem.entity.basedatamanager.position.Position; + +/** + * @author JC 2016.09.29 + */ + +public class PositionTableManager { + + private GridManager gridManager; + + private PositionManager positionManager; + + public void setPositionManager(PositionManager positionManager) { + this.positionManager = positionManager; + } + + public void setGridManager(GridManager gridManager) { + this.gridManager = gridManager; + } + + public String findPositionTableList(Map> parameterMap) { + String sql = "where 1=1 "; + return gridManager.renderGrid(parameterMap, Position.class + .getSimpleName(), sql, new String[] {"rinsers"}); + } + /** + * 通过条码获取位置名称,目前位置有清洗机和灭菌炉两种, + * @param barcode + * @param isWashPosition + */ + public String getPositionNameByBarcode(String barcode,Boolean isWashPosition){ + String name = ""; + if(StringUtils.isBlank(barcode)){ + return name; + } + Position ps = positionManager.getPositionByBarcode(barcode); + JSONObject obj = new JSONObject(); + if(ps == null){ + obj.put("success", false); + obj.put("message", "找不到位置信息!"); + return obj.toString(); + } + if(isWashPosition && !"清洗机".equals(ps.getPositionType())){ + obj.put("success", false); + obj.put("message", "请扫描清洗机的位置!"); + return obj.toString(); + } + if(!isWashPosition && !"灭菌炉".equals(ps.getPositionType())){ + obj.put("success", false); + obj.put("message", "请扫描灭菌炉的位置!"); + return obj.toString(); + } + obj.put("success", true); + obj.put("name", ps.getPositionName()); + obj.put("message", "获取位置成功!"); + return obj.toString(); + } + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/position/action/PositionAction.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/position/action/PositionAction.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/position/action/PositionAction.java (revision 15219) @@ -0,0 +1,211 @@ +package com.forgon.disinfectsystem.basedatamanager.position.action; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import javax.servlet.http.HttpServletResponse; + +import net.sf.json.JSONObject; +import net.sf.json.JsonConfig; +import net.sf.json.util.PropertyFilter; + +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 com.forgon.directory.model.BarcodeDevice; +import com.forgon.disinfectsystem.basedatamanager.position.service.PositionManager; +import com.forgon.disinfectsystem.entity.basedatamanager.position.Position; +import com.forgon.serialnumber.model.SerialNum; +import com.forgon.serialnumber.service.SerialNumManager; +import com.forgon.tools.StrutsParamUtils; +import com.forgon.tools.json.JsonPropertyFilter; +import com.opensymphony.xwork2.ModelDriven; +import com.opensymphony.xwork2.Preparable; + +/** + * @author JC 2016.09.29 + */ + +@ParentPackage(value = "default") +@Namespace(value = "/disinfectSystem/baseData") +@Action(value = "positionAction") +public class PositionAction implements ModelDriven, Preparable { + + private Position position; + + private PositionManager positionManager; + + private SerialNumManager serialNumManager; + + public void setSerialNumManager(SerialNumManager serialNumManager) { + this.serialNumManager = serialNumManager; + } + + public void setPositionManager(PositionManager positionManager) { + this.positionManager = positionManager; + } + + /** + * 保存前检查是否重复 + * @return + */ + public String validate(){ + String id = StrutsParamUtils.getPraramValue("validateId",null); + String name = StrutsParamUtils.getPraramValue("valifateName",null); + String message = "{success:true,message:'验证成功',stauts:1}"; + boolean result = positionManager.verifyPosition(id,name); + if(!result){ + message = "{success:false,message:'已存在相同名称的清洗机位置',stauts:0}";; + } + HttpServletResponse httpServletResponse = StrutsParamUtils + .getResponse(); + httpServletResponse.setContentType("text/html;charset=UTF-8"); + try { + httpServletResponse.getWriter().print(message); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + public String savePosition() { + if (position != null) { + try{ + position.setType(BarcodeDevice.BARCODE_TYPE_POSITION); + //设置条码 + String barcode = position.getBarcode(); + if(StringUtils.isBlank(position.getBarcode())){ + barcode = serialNumManager.getSerialNumberStr(SerialNum.TYPE_BARCODE); + position.setBarcode(barcode); + } + positionManager.saveOrUpdate(position); + //返回条码、供页面打印 + HttpServletResponse httpServletResponse = StrutsParamUtils + .getResponse(); + try { + httpServletResponse.getWriter().print("{success:true,barcode:'"+barcode+"'}"); + } catch (IOException e) { + e.printStackTrace(); + } + }catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + + public void deletePosition() { + String idStr = StrutsParamUtils.getPraramValue("ids", ""); + String message = ""; + try { + if (StringUtils.isNotBlank(idStr)) { + String[] str = idStr.split(";"); + for (String id : str) { + positionManager.deletePositionById(id); + message = "{success:true}"; + } + } + } catch (Exception e) { + message = "{success:false}"; + e.printStackTrace(); + } + HttpServletResponse httpServletResponse = StrutsParamUtils + .getResponse(); + httpServletResponse.setCharacterEncoding("UTF-8"); + try { + httpServletResponse.getWriter().print(message); + } catch (IOException e) { + e.printStackTrace(); + } + } + + public void loadPosition() { + StrutsParamUtils.getResponse().setCharacterEncoding("UTF-8"); + JsonConfig config = new JsonConfig(); + PropertyFilter propertyFilter = new JsonPropertyFilter(new String[] {"rinsers"}); + config.setJsonPropertyFilter(propertyFilter); + + Map map = new HashMap(); + map.put("success", true); + map.put("data", position); + try { + JSONObject jsonObject = JSONObject.fromObject(map, config); + String jsonStr = jsonObject.toString(); + StrutsParamUtils.getResponse().getWriter().println(jsonStr); + } catch (Exception e) { + e.printStackTrace(); + } + } + +// public void findCleanMethodArr() { +// List list = cleanMethodManager.getAllCleanMethod(); +// StringBuffer buff = new StringBuffer("["); +// if (list != null && list.size() > 0) { +// for (int i = 0; i < list.size(); i++) { +// CleanMethod cleanMethod = list.get(i); +// if (buff.length() > 1) { +// buff.append(","); +// } +// buff.append("['").append(cleanMethod.getId()).append("','") +// .append(cleanMethod.getCleanMethod()).append("'") +// .append(cleanMethod.getBarcode()).append("',") +// .append(cleanMethod.getCleanMinutes()) +// .append("]"); +// } +// } +// buff.append("]"); +// HttpServletResponse response = StrutsParamUtils.getResponse(); +// try { +// response.setCharacterEncoding("utf-8"); +// response.getWriter().print(buff.toString()); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } + +// public void findCleanMethodArrClone() { +// List list = rinserPositionManager.getAllRinserPosition(); +// StringBuffer buff = new StringBuffer("["); +// if (list != null && list.size() > 0) { +// for (int i = 0; i < list.size(); i++) { +// RinserPosition rinserPosition = list.get(i); +// if (buff.length() > 1) { +// buff.append(","); +// } +// buff.append("['").append(rinserPosition.getId()).append("','") +// .append(rinserPosition.getPositionName().replaceAll("\\s", "")).append("'") +// .append("]"); +// } +// } +// buff.append("]"); +// HttpServletResponse response = StrutsParamUtils.getResponse(); +// try { +// response.setCharacterEncoding("utf-8"); +// response.getWriter().print(buff.toString()); +// } catch (IOException e) { +// e.printStackTrace(); +// } +// } + + public void iniInfo() { + + String id = StrutsParamUtils.getPraramValue("id", ""); + if (StringUtils.isNotBlank(id) && !id.equals("0")) { + position = positionManager.getPositionById(id); + } else { + position = new Position(); + } + } + + public Position getModel() { + return position; + } + + public void prepare() throws Exception { + iniInfo(); + } +} Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/position/positionForm.js =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/position/positionForm.js (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/position/positionForm.js (revision 15219) @@ -0,0 +1,225 @@ +var id; +var formObj; +var positionWin; +function addAndEditPosition(id) { + this.id = id; + + formObj = new top.Ext.FormPanel( { + id : 'positionForm', + frame : true, + labelSeparator : ':', + bodyStyle : 'padding:5px 5px 0px 5px', + labelWidth : 90, + labelAlign : 'right', + autoHeight:true, + autoScroll : true, + items : [ { + xtype : 'hidden', + name : 'id', + id : 'id' + }, { + layout : 'column', + items : [ { + columnWidth : 0.5, + layout : 'form', + items : [ { + xtype : 'textfield', + fieldLabel : "条形码", + name : "barcode", + id : "barcode", + cls : 'fieldReadOnlyNoRemove', + allowBlank : true, + readOnly : true, + anchor : '90%' + } ] + }, { + columnWidth : 0.5, + layout : 'form', + items : [ { + xtype : 'textfield', + fieldLabel : "位置名称", + name : "positionName", + id : "positionName", + allowBlank : false, + anchor : '90%' + }] + },{ + + columnWidth : 0.5, + layout : 'form', + items : [ { + xtype : 'combo', + fieldLabel : "位置类型", + name : "positionType", + id : "positionType", + store : new Ext.data.SimpleStore( { + fields : [ 'value'], + data : [['清洗机'],['灭菌炉']] + }), + valueField : 'value', + displayField : 'value', + editable : false, + mode : 'local', + triggerAction : 'all', + allowBlank : false, + anchor : '90%' + }] + },{ + columnWidth : 0.5, + layout : 'form', + items : [{ + xtype : 'textarea', + fieldLabel : '备注', + height : 50, + id : 'remark', + name : 'remark', + maxLength : 665, + allowBlank : true, + anchor : '90%' + }] + }] + } ], + buttons : [{ + id : 'preview', + text : '打印预览', + handler : printBarcode + },{ + id : 'saveAndPrint', + text : '保存并打印', + handler : saveAndPrint + },{ + id : 'saveBtn', + text : '保存', + handler : save + }, { + text : '取消', + id : 'saveAndNewBtn', + handler : cancel + } ] + }); + + positionWin = new top.Ext.Window( { + id : 'positionWin', + layout : 'fit', + title : '位置信息', + width : 550, + border : false, + modal : true, + autoHeight : true, + plain : true, + items : [ formObj ] + }); + positionWin.show(); + + if(id != 0){ + formObj.form + .load( { + url : WWWROOT + '/disinfectSystem/baseData/positionAction!loadPosition.do', + method : 'GET', + waitMsg : '正在加载数据,请稍候', + success : function(form, action) { + }, + failure : function(form, action) { + }, + params : { + id : id + } + }); + } +} + +function printBarcode(barcode,type){ + var name = top.Ext.getCmp('positionName').getValue(); + var unit = ""; + DWREngine.setAsync(false); + SupplyRoomConfigTableManager.getUnitName(function(unitName){ + if(unitName != null && unitName != ""){ + unit = unitName; + } + }); + DWREngine.setAsync(true); + if(type == 0){//直接打印 + defaultPrint(barcode,name,unit); + }else{//打印预览 + var barcodeStr = top.Ext.getCmp('barcode').getValue(); + preview(barcodeStr,name,unit); + } +} + +function validateAndSubmit(print){ + Ext.Ajax.request({ + url : WWWROOT + '/disinfectSystem/baseData/positionAction!validate.do', + params : {validateId : top.Ext.getCmp('id').getValue(),valifateName:top.Ext.getCmp('positionName').getValue()}, + success : function(response, options) { + var result = Ext.decode(response.responseText); + if(result.stauts == 1){ + formObj.form.submit( { + url : WWWROOT + '/disinfectSystem/baseData/positionAction!savePosition.do', + method : 'POST', + waitMsg : '正在保存数据,请稍候', + waitTitle : '提交表单', + success : function(form, action) { + if(print){ + var barcodeStr = action.result.barcode; + printBarcode(barcodeStr,0); + } + positionWin.close(); + showResult('保存成功'); + grid.dwrReload(); + }, + failure : function(form, action) { + showResult(action.result.message); + top.Ext.getCmp('saveBtn').enable(); + top.Ext.getCmp('saveAndPrint').enable(); + } + }); + }else{ + showResult(result.message); + top.Ext.getCmp('saveBtn').enable(); + top.Ext.getCmp('saveAndPrint').enable(); + } + }, + failure : function(response, options) { + var result = Ext.decode(response.responseText); + showResult(result.cause); + } + }); +} + +function save() { + this.disable(); + if(Ext.util.Format.trim(top.Ext.getCmp("positionName").getValue()).length==0){ + showResult('位置不能仅为空格'); + top.Ext.getCmp("position").markInvalid(); + this.enable(); + return false; + } + if (!formObj.form.isValid()) { + showResult('请正确填写表单各值'); + this.enable(); + return false; + } + var print = false; + validateAndSubmit(print); +} + +function saveAndPrint(){ + this.disable(); + if(Ext.util.Format.trim(top.Ext.getCmp("positionName").getValue()).length==0){ + showResult('位置不能仅为空格'); + top.Ext.getCmp("position").markInvalid(); + this.enable(); + return false; + } + if (!formObj.form.isValid()) { + showResult('请正确填写表单各值'); + this.enable(); + return false; + } + var print = true; + validateAndSubmit(print); +} + +function cancel() { + positionWin.close(); +} Index: ssts-web/src/main/webapp/WEB-INF/dwr.xml =================================================================== diff -u -r15116 -r15219 --- ssts-web/src/main/webapp/WEB-INF/dwr.xml (.../dwr.xml) (revision 15116) +++ ssts-web/src/main/webapp/WEB-INF/dwr.xml (.../dwr.xml) (revision 15219) @@ -63,6 +63,10 @@ + + + + Index: ssts-web/src/main/webapp/disinfectsystem/config/dgszyy/config.js =================================================================== diff -u -r14555 -r15219 --- ssts-web/src/main/webapp/disinfectsystem/config/dgszyy/config.js (.../config.js) (revision 14555) +++ ssts-web/src/main/webapp/disinfectsystem/config/dgszyy/config.js (.../config.js) (revision 15219) @@ -55,5 +55,7 @@ //金额的小数位数 moneyDigitCount:4, //回收界面,标识牌通知方式:1弹出提示框,2语音播报,3提示框和语音,其他值无操作 - idCardUseAmountNoticeType:1 + idCardUseAmountNoticeType:1, + //清洗机是否有位置 + haveRinserPosition : true } \ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/position/positionView.jsp =================================================================== diff -u --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/position/positionView.jsp (revision 0) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/position/positionView.jsp (revision 15219) @@ -0,0 +1,69 @@ +<%@ page contentType="text/html; charset=UTF-8"%> +<%@ include file="/common/taglibs.jsp"%> + + + +位置信息 + + + + + +<%@ include file="/common/includeExtJsAndCss.jsp"%> + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ +
+ + \ No newline at end of file Index: forgon-core/src/main/java/com/forgon/directory/model/BarcodeDevice.java =================================================================== diff -u -r14820 -r15219 --- forgon-core/src/main/java/com/forgon/directory/model/BarcodeDevice.java (.../BarcodeDevice.java) (revision 14820) +++ forgon-core/src/main/java/com/forgon/directory/model/BarcodeDevice.java (.../BarcodeDevice.java) (revision 15219) @@ -41,6 +41,7 @@ public static final String BARCODE_TYPE_WAREHOUSE = "仓库"; public static final String BARCODE_TYPE_EXPENSIVEDIPOSABLEGOODS = "高值耗材"; public static final String BARCODE_TYPE_BARCODEINFORMATION = "条码信息"; + public static final String BARCODE_TYPE_POSITION = "位置"; @Id @GeneratedValue(strategy = GenerationType.AUTO) Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/position/Position.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/position/Position.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/position/Position.java (revision 15219) @@ -0,0 +1,60 @@ +package com.forgon.disinfectsystem.entity.basedatamanager.position; + +import javax.persistence.Entity; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; + +import com.forgon.directory.model.BarcodeDevice; +/** + * + * @author JC 2016.09.29 + * + */ +@Entity +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class Position extends BarcodeDevice{ + /** + * 位置名称 + */ + private String positionName; + /** + * 位置类型 清洗机还是灭菌炉的位置 + */ + private String positionType; + /** + * 备注 + */ + private String remark; + /** + * id + */ + + public Position(){ + setType(BarcodeDevice.BARCODE_TYPE_POSITION); + } + + public String getPositionName() { + return positionName; + } + + public void setPositionName(String positionName) { + this.positionName = positionName; + } + + public String getPositionType() { + return positionType; + } + + public void setPositionType(String positionType) { + this.positionType = positionType; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } +} Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java =================================================================== diff -u -r14830 -r15219 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java (.../WashAndDisinfectRecordAction.java) (revision 14830) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/action/WashAndDisinfectRecordAction.java (.../WashAndDisinfectRecordAction.java) (revision 15219) @@ -240,8 +240,10 @@ Long classifyBasketID = obj.optLong("classifyBasketID", 0); String personInCharge = JSONUtil.optString(obj, "personInCharge", ""); String personInChargeCode = JSONUtil.optString(obj, "personInChargeCode", ""); + String position = JSONUtil.optString(obj, "position", ""); classifyBasket.setPersonInCharge(personInCharge); classifyBasket.setPersonInChargeCode(personInChargeCode); + classifyBasket.setPosition(position); if(DatabaseUtil.isPoIdValid(classifyBasketID)){ classifyBasketInfoMap.put(classifyBasketID, classifyBasket); } @@ -575,9 +577,10 @@ } String personInCharge = StringUtils.defaultIfEmpty(classifyBasket.getPersonInCharge(), ""); String personInChargeCode = StringUtils.defaultIfEmpty(classifyBasket.getPersonInChargeCode(), ""); + String position = StringUtils.defaultIfEmpty(classifyBasket.getPosition(), ""); String basketStr = classifyBasketId + "," + containerNames + "," - + count + "," + containerBarcodes +","+personInCharge+","+personInChargeCode+ "$" + + count + "," + containerBarcodes +","+personInCharge+","+personInChargeCode+ "," + position + "$" + material; if (StringUtils.isBlank(jsonStr)) { jsonStr = basketStr; Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/position/service/PositionManager.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/position/service/PositionManager.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/position/service/PositionManager.java (revision 15219) @@ -0,0 +1,33 @@ +package com.forgon.disinfectsystem.basedatamanager.position.service; + +import java.util.List; + +import com.forgon.disinfectsystem.entity.basedatamanager.position.Position; + + +/** + * @author JC 2016.09.29 + */ +public interface PositionManager { + + public void saveOrUpdate(Position position); + + public Position getPositionById(String id); + + public void deletePositionById(String id); + /** + * 根据名称,判断位置是否存在,忽略id存在的那条数据 + */ + public boolean verifyPosition(String id,String name); + + public List getAllPosition(); + + public Position getPositionByName(String name); + /** + * 获取位置 + * @param barcode + * @return + */ + public Position getPositionByBarcode(String barcode); + +} Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/position/service/PositionManagerImpl.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/position/service/PositionManagerImpl.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/basedatamanager/position/service/PositionManagerImpl.java (revision 15219) @@ -0,0 +1,65 @@ +package com.forgon.disinfectsystem.basedatamanager.position.service; + +import java.util.List; + +import org.apache.commons.lang.StringUtils; + +import com.forgon.disinfectsystem.entity.basedatamanager.position.Position; +import com.forgon.tools.hibernate.ObjectDao; + +/** + * @author JC 2016.09.29 + */ + +public class PositionManagerImpl implements PositionManager { + + private ObjectDao objectDao; + + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } + + public void saveOrUpdate(Position position) { + objectDao.saveOrUpdate(position); + } + + public Position getPositionById(String id) { + return (Position) objectDao.getByProperty(Position.class + .getSimpleName(), "id", Long.valueOf(id)); + } + + public void deletePositionById(String id) { + objectDao.delete(getPositionById(id)); + } + /** + * 根据名称,判断位置是否存在,忽略id存在的那条数据 + */ + public boolean verifyPosition(String id, String positionName) { + String sql = "where po.positionName = '" + positionName + "'"; + if (StringUtils.isNotEmpty(id)) { + sql += " and po.id != " + id; + } + if (objectDao.getBySql(Position.class.getSimpleName(), sql) != null) { + return false; + } else { + return true; + } + } + + @SuppressWarnings("unchecked") + public List getAllPosition() { + return objectDao.findAllObjects(Position.class.getSimpleName()); + } + + @Override + public Position getPositionByName(String name) { + return (Position) objectDao.getByProperty(Position.class + .getSimpleName(), "positionName", name); + } + + public Position getPositionByBarcode(String barcode){ + Position ps = (Position)objectDao.getByProperty(Position.class + .getSimpleName(), "barcode", barcode); + return ps; + } +} Index: ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java =================================================================== diff -u -r15198 -r15219 --- ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 15198) +++ ssts-wash/src/main/java/com/forgon/disinfectsystem/washanddisinfectmanager/washanddisinfectrecord/service/WashAndDisinfectRecordManagerImpl.java (.../WashAndDisinfectRecordManagerImpl.java) (revision 15219) @@ -241,10 +241,12 @@ ClassifyBasket paramsClassifyBasket = classifyBasketInfoMap.get(id); String personInCharge = ""; String personInChargeCode = ""; + String position = ""; if (paramsClassifyBasket != null) { personInCharge = paramsClassifyBasket.getPersonInCharge(); personInChargeCode = paramsClassifyBasket .getPersonInChargeCode(); + position = paramsClassifyBasket.getPosition(); } ClassifyBasket classifyBasket = beCleanItemManager.getClassifyBasketById(id.toString()); if(classifyBasket != null){ @@ -265,6 +267,7 @@ } classifyBasket.setPersonInCharge(personInCharge); classifyBasket.setPersonInChargeCode(personInChargeCode); + classifyBasket.setPosition(position); classifyBaskets.add(classifyBasket); } }