Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManagerImpl.java =================================================================== diff -u -r16856 -r16893 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManagerImpl.java (.../ComboTousseManagerImpl.java) (revision 16856) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManagerImpl.java (.../ComboTousseManagerImpl.java) (revision 16893) @@ -34,10 +34,6 @@ this.objectDao = objectDao; } - @Override - public void saveOrUpdate(ComboTousseComposite comboTousseComposite) { - objectDao.saveOrUpdate(comboTousseComposite); - } @Override public List> getComboTousseMsg(TousseDefinition tousseDefinition) { @@ -77,23 +73,6 @@ } } - /** - * 另存为新的聚合包 - * - * @param comboTousseComposites 要保存的聚合包信息 - * @param tousseDefinition {@link TousseDefinition} - */ - private void saveOrUpdateNewComboTousses(List comboTousseComposites, TousseDefinition tousseDefinition) { - List list = new LinkedList<>(); - for (ComboTousseComposite comboTousseComposite : comboTousseComposites) { - ComboTousseComposite combo = new ComboTousseComposite(); - combo.setComboTousseDefinitionId(tousseDefinition.getId()); - combo.setTousseDefinitionId(comboTousseComposite.getTousseDefinitionId()); - combo.setSequence(comboTousseComposite.getSequence()); - list.add(combo); - } - objectDao.batchSaveOrUpdate(list); - } @Override @Transactional(propagation = Propagation.REQUIRED) @@ -181,4 +160,21 @@ return query.list(); } + /** + * 另存为新的聚合包 + * + * @param comboTousseComposites 要保存的聚合包信息 + * @param tousseDefinition {@link TousseDefinition} + */ + private void saveOrUpdateNewComboTousses(List comboTousseComposites, TousseDefinition tousseDefinition) { + List list = new LinkedList<>(); + for (ComboTousseComposite comboTousseComposite : comboTousseComposites) { + ComboTousseComposite combo = new ComboTousseComposite(); + combo.setComboTousseDefinitionId(tousseDefinition.getId()); + combo.setTousseDefinitionId(comboTousseComposite.getTousseDefinitionId()); + combo.setSequence(comboTousseComposite.getSequence()); + list.add(combo); + } + objectDao.batchSaveOrUpdate(list); + } } Index: ssts-web/src/main/webapp/js/common.js =================================================================== diff -u -r16644 -r16893 --- ssts-web/src/main/webapp/js/common.js (.../common.js) (revision 16644) +++ ssts-web/src/main/webapp/js/common.js (.../common.js) (revision 16893) @@ -2441,7 +2441,7 @@ function getExtObj() { var extObj; try { - extObj = Ext || top.Ext; + extObj = top.Ext || Ext; } catch (error) { // 如果Ext2不存在则用Ext4 Index: ssts-web/src/main/webapp/js/extCompOperationUtil.js =================================================================== diff -u -r15795 -r16893 --- ssts-web/src/main/webapp/js/extCompOperationUtil.js (.../extCompOperationUtil.js) (revision 15795) +++ ssts-web/src/main/webapp/js/extCompOperationUtil.js (.../extCompOperationUtil.js) (revision 16893) @@ -4,18 +4,55 @@ var extCompOperationUtil = (function () { var gOperation; + + var motionObj; + + //动作的常量 + var constants = { + UP: 'up', + DOWN: 'down', + BOTTOM: 'bottom', + TOP: 'top' + }; /** * extJS组件操作工具类工厂,用来返回需要创建的对象,以后扩展可以通过增加对应的组件操作对象,然后用这个工厂返回 * @constructor */ var ExtCompOperationUtilFactory = function () { this.getGridOperation = function () { - if (isUndefinedOrNullOrEmpty(gOperation)){ + if (isUndefinedOrNullOrEmpty(gOperation)) { gOperation = new GridOperation(); } return gOperation; + }; + this.getMotionObj = function () { + if (isUndefinedOrNullOrEmpty(motionObj)) { + motionObj = new MotionObj(); + } + return motionObj; } } + + //动作的类,用于获取上下最上最下的动作 + var MotionObj = function () { + this.getConstant = function (name) { + return constants[name]; + }; + this.getUp = function () { + return constants.UP; + }; + this.getDown = function () { + return constants.DOWN; + }; + this.getBottom = function () { + return constants.BOTTOM; + }; + this.getTop = function () { + return constants.TOP; + }; + }; + + //grid表单操作对象,支持每行上,下,置顶,置底操作 var GridOperation = function () { /** @@ -52,11 +89,11 @@ var operation = {}; // border是边界值判断(即最上和最低的位置) // pos是要插入的对应位置 - if (motion == 'up') { + if (motion == motionObj.getUp()) { operation.border = 0; operation.pos = rowIndex - 1; } - else if (motion == 'down') { + else if (motion == motionObj.getDown()) { operation.border = size - 1; operation.pos = rowIndex + 1; } @@ -71,8 +108,7 @@ } return operation; } - } - + }; return new ExtCompOperationUtilFactory(); })(); \ No newline at end of file Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r16858 -r16893 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 16858) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 16893) @@ -352,13 +352,26 @@ if(!DatabaseUtil.isPoIdValid(tousseDefinition.getId())){ newTousse = true; } + + //如果是聚合包,则清空他的任务组 + if (TousseDefinition.PACKAGE_TYPE_COMBO.equals(tousseDefinition.getTousseType())){ + tousseDefinition.setTaskGroup(null); + } tousseDefinitionManager.saveTousseDefinition(tousseDefinition, upload,null,null); - String motion = StrutsParamUtils.getPraramValue("motion", null); - if (StringUtils.isNotBlank(motion) && "comboTousse".equals(motion)){ - String comboTousseArray = StrutsParamUtils.getPraramValue("comboTousseArray", null); - comboTousseManagerImpl.saveOrUpdateComboTousses(comboTousseArray, tousseDefinition, newTousse); + + if (TousseDefinition.PACKAGE_TYPE_COMBO.equals(tousseDefinition.getTousseType())){ + // String motion = StrutsParamUtils.getPraramValue("motion", null); + // if (StringUtils.isNotBlank(motion) && "comboTousse".equals(motion)){ + //聚合包的所属科室用了handlerDepartName和handlerCode,所以聚合包的处理科室用cssdCode和cssdName来传值 + String cssdCode = StrutsParamUtils.getPraramValue("cssdCode", null); + String cssdName = StrutsParamUtils.getPraramValue("cssdName", null); + String taskGroup = StrutsParamUtils.getPraramValue("taskGroup", null); + String comboTousseArray = StrutsParamUtils.getPraramValue("comboTousseArray", null); + comboTousseManagerImpl.saveOrUpdateComboTousses(comboTousseArray, tousseDefinition, newTousse); + // } } + if(newTousse && (tousseDefinition.isInsideTousse() || tousseDefinition.isDisinfection() || tousseDefinition.isDressing())){ @@ -1155,7 +1168,7 @@ } }); config.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); - Map map = new HashMap(); + Map map = new HashMap<>(); map.put("success", true); map.put("data", tousseDefinition); JSONObject jsonObject = JSONObject.fromObject(map, config); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/dwr/table/TousseDefinitionTableManager.java =================================================================== diff -u -r16101 -r16893 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/dwr/table/TousseDefinitionTableManager.java (.../TousseDefinitionTableManager.java) (revision 16101) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/dwr/table/TousseDefinitionTableManager.java (.../TousseDefinitionTableManager.java) (revision 16893) @@ -85,6 +85,13 @@ + TousseDefinition.PACKAGE_TYPE_CUSTOM + "' and po.tousseType != '" + TousseDefinition.PACKAGE_TYPE_FOREIGN + "'"; + Map sqlWhereParamMap = gridManager.getParamFromView(parameterMap); + String tousseType = sqlWhereParamMap.get("tousseType"); + if (StringUtils.isNotBlank(tousseType) && TousseDefinition.PACKAGE_TYPE_COMBO.equals(tousseType)){ + //如果类型是聚合包,则查出聚合包 + sql += String.format(" and po.tousseType = '%s'", tousseType); + } + //现在器械包定义的handlerDepartCode这个字段已经不用了,所以去掉条件过滤,防止二级供应室用户看不到该字段值不为该用户所在科室的器械包 /*if (currentOrgUnitCode == null || (currentOrgUnitCode != null && currentOrgUnitCode.equals(departCode))) {// 当前登录用户是一级供应室的人,可查全部 Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManager.java =================================================================== diff -u -r16856 -r16893 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManager.java (.../ComboTousseManager.java) (revision 16856) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManager.java (.../ComboTousseManager.java) (revision 16893) @@ -1,8 +1,6 @@ package com.forgon.disinfectsystem.tousse.comboTousse.service; -import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.ComboTousseComposite; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; -import net.sf.json.JSONArray; import java.util.List; import java.util.Map; @@ -14,8 +12,6 @@ */ public interface ComboTousseManager { - void saveOrUpdate(ComboTousseComposite comboTousseComposite); - /** * 获取聚合包下的器械包相关信息 * @@ -32,6 +28,13 @@ */ List> getTousse(String spell); + /** + * 保存或者修改聚合包 + * + * @param comboTousseArray 聚合包下的器械包 + * @param tousseDefinition 这个聚合包的相关信息 + * @param newTousse 是否另存为聚合包 + */ void saveOrUpdateComboTousses(String comboTousseArray, TousseDefinition tousseDefinition, boolean newTousse); } Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousse.jsp =================================================================== diff -u -r16856 -r16893 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousse.jsp (.../comboTousse.jsp) (revision 16856) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousse.jsp (.../comboTousse.jsp) (revision 16893) @@ -87,6 +87,7 @@ + @@ -117,6 +118,7 @@
+
\ No newline at end of file Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousse.js =================================================================== diff -u -r16856 -r16893 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousse.js (.../comboTousse.js) (revision 16856) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousse.js (.../comboTousse.js) (revision 16893) @@ -245,13 +245,6 @@ addAndEditTousse(0, '否'); } }, '-', { - text: '添加外来器械包', - hidden: true, - iconCls: 'btn_ext_add_foreignTousse', - handler: function () { - addAndEditForeignTousseDefinition(0); - } - }, '-', { text: '修改', hidden: SSTS_ComboTousse_update, iconCls: 'btn_ext_application_edit', @@ -266,30 +259,32 @@ handler: function () { deleteTousse(grid); } - }/*,'-'*/, { - text: '打印器械包明细单', - hidden: SSTS_ComboTousse_delete, - iconCls: 'icon_print', - handler: function () { - var rows = grid.getSelectionModel().getSelections(); - if (rows.length == 0) { - showResult('请选择需要打印的器械包!'); - return; - } - var ids = []; - for (var i = 0; i < rows.length; ++i) { - ids.push(rows[i].get("id")); - } - printTousseDefinitionMaterial(ids.join(';')); - } - }]; + } + // , { + // text: '打印器械包明细单', + // hidden: SSTS_ComboTousse_delete, + // iconCls: 'icon_print', + // handler: function () { + // var rows = grid.getSelectionModel().getSelections(); + // if (rows.length == 0) { + // showResult('请选择需要打印的器械包!'); + // return; + // } + // var ids = []; + // for (var i = 0; i < rows.length; ++i) { + // ids.push(rows[i].get("id")); + // } + // printTousseDefinitionMaterial(ids.join(';')); + // } + // } + ]; var dwrCallParams = null; Ext.ux.ForgonPageGrid.prototype.getGridParameterMap = function () { }; grid = new Ext.ux.ForgonPageGrid({ - title: '器械包列表', + title: '聚合包列表', tbar: tbar, pageSize: 20, defaultSortField: 'id', Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousseForm.js =================================================================== diff -u -r16856 -r16893 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousseForm.js (.../comboTousseForm.js) (revision 16856) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousseForm.js (.../comboTousseForm.js) (revision 16893) @@ -5,12 +5,15 @@ var configStore; var materialsPanel; var materialConfig; +var productMode = false; //器械包修改缓存,用于保存修改聚合包下的器械包用 var modifyRecord; //定义首篮筐的label变量 var beginBarcodeLabel = '扫描条码:'; var hiddenEndBarcode = true;//隐藏尾篮筐 var useRecordOperationRoomAllowBlank = false; +top.gridOperation = extCompOperationUtil.getGridOperation(); +top.motionObj = extCompOperationUtil.getMotionObj(); if (sstsConfig.disableLoadToVirtualBasket == false) { beginBarcodeLabel = '条码/篮筐(首):'; @@ -103,72 +106,18 @@ configStore.add(p);// 插入到最后一行 top.Ext.getCmp('configGrid').startEditing(n, 0);// 开始编辑0单元格 } -function setMaterialSequence() { +/** + * 设置序号 + */ +function setSequence() { var configStore = top.Ext.getCmp('configGrid').getStore(); for (var i = 0; i < configStore.getCount(); ++i) { var record = configStore.getAt(i); record.set('sequence', i + 1); } } -function moveTopMaterial() { - var rows = top.Ext.getCmp('configGrid').getSelectionModel().getSelections();// 返回值为所点击的行 - var configStore = top.Ext.getCmp('configGrid').getStore(); - if (rows) { - for (var i = 0; i < rows.length; i++) { - var index = configStore.indexOf(rows[i]); - if (index != 0) { - configStore.remove(rows[i]); - configStore.insert(0, rows[i]); - } - } - } -} -function moveUpMaterial() { - var rows = top.Ext.getCmp('configGrid').getSelectionModel().getSelections();// 返回值为所点击的行 - var configStore = top.Ext.getCmp('configGrid').getStore(); - if (rows) { - for (var i = 0; i < rows.length; i++) { - var index = configStore.indexOf(rows[i]); - if (index != 0) { - configStore.remove(rows[i]); - configStore.insert(index - 1, rows[i]); - } - } - } -} -function moveDownMaterial() { - var rows = top.Ext.getCmp('configGrid').getSelectionModel().getSelections();// 返回值为所点击的行 - var configStore = top.Ext.getCmp('configGrid').getStore(); - if (rows) { - for (var i = 0; i < rows.length; i++) { - var index = configStore.indexOf(rows[i]); - var total = configStore.getCount(); - if (index != total - 1) { - configStore.remove(rows[i]); - configStore.insert(index + 1, rows[i]); - } - } - } -} - -function moveBottomMaterial() { - var rows = top.Ext.getCmp('configGrid').getSelectionModel().getSelections();// 返回值为所点击的行 - var configStore = top.Ext.getCmp('configGrid').getStore(); - if (rows) { - for (var i = 0; i < rows.length; i++) { - var index = configStore.indexOf(rows[i]); - var total = configStore.getCount(); - if (index != total - 1) { - configStore.remove(rows[i]); - configStore.insert(total - 1, rows[i]); - } - } - } -} - - function addAndEditTousse(id, isUploadVideo) { this.id = id; tousseDefinitionID = id; @@ -373,12 +322,14 @@ { id: 'id', header: "聚合包表主键", + hidden: productMode, dataIndex: 'id', width: 140 }, { id: 'tousseDefinitionId', header: "器械包id", + hidden: productMode, dataIndex: 'tousseDefinitionId', width: 140 }, @@ -419,7 +370,8 @@ listeners: { select: function (combo, record, index) { var result = configStore.find('tousseDefinitionId', record.get('tousseDefinitionId')); - if (result == 0) { + if (result != -1) { + showResult('已经存在相同的器械包!请不要重复添加'); combo.setValue(''); return false; } @@ -442,10 +394,10 @@ header: '移动', width: 100, renderer: function (v, p, record) { - var str = "" - + "  " - + "  " - + "  "; + var str = "" + + "  " + + "  " + + "  "; return str; }, menuDisabled: true, @@ -458,20 +410,6 @@ {name: 'tousseDefinitionName'} ]); - // materialConfig = Ext.data.Record.create([ - // {name: 'id'}, - // {name: 'count'}, - // {name: 'materileName'}, - // {name: 'name'}, - // {name: 'specification'}, - // {name: 'snumber'} - // - // ]); - - // var groupNumRecord = Ext.data.Record.create([ - // {name: 'groupNum'} - // ]); - materialsPanel = new top.Ext.grid.EditorGridPanel({ id: 'configGrid', name: 'configGrid', @@ -565,6 +503,10 @@ id: 'handlerDepartCode' }, { xtype: 'hidden', + name: 'cssdCode', + id: 'cssdCode' + }, { + xtype: 'hidden', name: 'uuid_vedioNames', id: 'uuid_vedioNames' }, { @@ -675,11 +617,12 @@ anchor: '100%', listeners: { select: function (combo, record, index) { + //这里的所属科室借用了原来的处理科室的位置,处理科室改成cssdCode和cssdName combo.setValue(record.data.departName); top.Ext.getCmp("handlerDepartCode").setValue(record.data.departCode); - taskGroupJsonStore.baseParams["handlerDepartCode"] = record.data.departCode; - taskGroupJsonStore.load(); - top.Ext.getCmp("taskGroup").enable(); + // taskGroupJsonStore.baseParams["handlerDepartCode"] = record.data.departCode; + // taskGroupJsonStore.load(); + // top.Ext.getCmp("taskGroup").enable(); } } }] @@ -800,7 +743,72 @@ id: 'externalCode', anchor: '100%' }] - }, { + }, + { + columnWidth: .25, + layout: 'form', + items: [{ + xtype: 'combo', + fieldLabel: '处理科室', + id: 'cssdName', + name: 'cssdName', + editable: false, + valueField: 'departName', + displayField: 'departName', + store: new Ext.data.Store({ + proxy: new Ext.data.HttpProxy({ + url: WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!getHandlerDeparts.do', + method: 'POST' + }), + reader: new Ext.data.JsonReader({ + totalProperty: 'totalCount', + root: 'data' + }, [ + {name: 'departCode', mapping: 'departCode'}, + {name: 'departName', mapping: 'departName'} + ]) + }), + forceSelection: true, + allowBlank: false, + triggerAction: 'all', + anchor: '100%', + listeners: { + select: function (combo, record, index) { + combo.setValue(record.data.departName); + top.Ext.getCmp("cssdCode").setValue(record.data.departCode); + taskGroupJsonStore.baseParams["handlerDepartCode"] = record.data.departCode; + taskGroupJsonStore.load(); + top.Ext.getCmp("taskGroup").enable(); + } + } + }] + }, + { + columnWidth: .25, + layout: 'form', + items: [{ + xtype: 'combo', + fieldLabel: '任务组', + id: 'taskGroup', + name: 'taskGroup', + disabled: (id == 0 ? true : false), + editable: false, + valueField: 'taskGroupName', + displayField: 'taskGroupName', + store: taskGroupJsonStore, + forceSelection: true, + allowBlank: false, + triggerAction: 'all', + anchor: '100%', + listeners: { + beforequery: function () { + taskGroupJsonStore.baseParams["handlerDepartCode"] = top.Ext.getCmp("cssdCode").getValue(); + taskGroupJsonStore.load(); + } + } + }] + }, + { columnWidth: .7, layout: 'form', id: 'videoPanel', @@ -811,7 +819,6 @@ disabled: true, name: "vedioNamesForDisplay", id: "vedioNamesForDisplay", -// width:300, anchor: '100%', cls: 'fieldReadOnlyNoRemove' }] @@ -984,6 +991,7 @@ top.Ext.getCmp('vedioNamesForDisplay').setValue(videoName); } } + //读取聚合包下的器械包 configStore.load({params: {id: tousseDefinition.id}}); }, failure: function (form, action) { @@ -1077,7 +1085,7 @@ var comboTousse = []; var configStore = top.Ext.getCmp('configGrid').getStore(); // 设置序号 - setMaterialSequence(); + setSequence(); configStore.each(function (item) { comboTousse.push({ id: item.get('id'), @@ -1137,7 +1145,6 @@ return false; } - // TODO: 2017/1/18 校验聚合包下的器械包非空 // var materialsCount = configStore.getCount(); // if (materialsCount <= 0) { // showResult('材料不能为空!');