Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManager.java =================================================================== diff -u -r16952 -r17174 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManager.java (.../ComboTousseManager.java) (revision 16952) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManager.java (.../ComboTousseManager.java) (revision 17174) @@ -53,5 +53,20 @@ */ List getComboTousseTdByTdId(Long tousseDefinitionId); + /** + * 保存该聚合包下对应的多个科室 + * + * @param tousseDefinition 器械包 + * @param unitIds 科室的编号列表 + */ + void saveOrUpdateComboTousseOrgUnit(TousseDefinition tousseDefinition, String unitIds); + + /** + * 根据聚合包id查找该聚合包下的所属科室 + * @param tousseDefinitionId 聚合包id + * @return 聚合包下的所有所属科室 + */ + List> getComboTousseOrgUnitByTdId(Long tousseDefinitionId); + } Index: forgon-core/src/main/java/com/forgon/command/DeleteCommand.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/command/DeleteCommand.java (revision 0) +++ forgon-core/src/main/java/com/forgon/command/DeleteCommand.java (revision 17174) @@ -0,0 +1,33 @@ +package com.forgon.command; + +import com.forgon.tools.hibernate.ObjectDao; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote 数据操作删除实现 + * @since 2017-02-28 + */ +public class DeleteCommand implements DataBaseCommand { + + protected ObjectDao objectDao; + + public DeleteCommand(ObjectDao objectDao) { + this.objectDao = objectDao; + } + + + @Override + public void execute(Map param) { + + } + + @Override + public Collection getStringHandleList(List oldList, List newList) { + return CollectionUtils.subtract(oldList, newList); + } +} Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java =================================================================== diff -u -r17135 -r17174 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 17135) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/toussedefinition/action/TousseDefinitionAction.java (.../TousseDefinitionAction.java) (revision 17174) @@ -385,9 +385,11 @@ } String tousseType = tousseDefinition.getTousseType(); - //如果是聚合包,则清空他的任务组 + //如果是聚合包,则清空他的任务组,处理科室和处理科室编号字段(因为聚合包的所属科室可以多个,所以会在另外一张表中有关联) if (TousseDefinition.PACKAGE_TYPE_COMBO.equals(tousseType)){ tousseDefinition.setTaskGroup(null); + tousseDefinition.setHandlerDepartName(null); + tousseDefinition.setHandlerDepartCode(null); } tousseDefinitionManager.saveTousseDefinition(tousseDefinition, upload,null,null); @@ -400,7 +402,8 @@ String taskGroup = StrutsParamUtils.getPraramValue("taskGroup", null); String comboTousseArray = StrutsParamUtils.getPraramValue("comboTousseArray", null); comboTousseManagerImpl.saveOrUpdateComboTousses(comboTousseArray, tousseDefinition, newTousse); - + String handlerDepartCodes = StrutsParamUtils.getPraramValue("handlerDepartCodes", null); + comboTousseManagerImpl.saveOrUpdateComboTousseOrgUnit(tousseDefinition, handlerDepartCodes); //添加相应的供应室处理器械包配置 Long id = tousseDefinition.getId(); List cssdHandleTousses = cssdHandleTousseManager.getByHql("tousseDefinitionId=" + id); @@ -1426,6 +1429,22 @@ logger.error(e,e); } } + + public void loadComboTousseUnit(){ + Long comboTousseDefinitionId = StrutsParamUtils.getPraramLongValue("comboTousseDefinitionId", null); + List> list = comboTousseManagerImpl.getComboTousseOrgUnitByTdId(comboTousseDefinitionId); + StringBuilder unitCodes = new StringBuilder(); + StringBuilder unitNames = new StringBuilder(); + for (Map map : list) { + unitCodes.append(map.get("unitCode")).append(","); + unitNames.append(map.get("unitName")).append(","); + } + JSONObject jsonObject = new JSONObject(); + jsonObject.put("success", true); + jsonObject.put("unitCodes", unitCodes.substring(0, unitCodes.length() - 1)); + jsonObject.put("unitNames", unitNames.substring(0, unitNames.length() - 1)); + StrutsResponseUtils.output(jsonObject); + } /** * 读取聚合包的处理科室与任务组信息 Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseOrgUnitAdd.java =================================================================== diff -u --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseOrgUnitAdd.java (revision 0) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseOrgUnitAdd.java (revision 17174) @@ -0,0 +1,54 @@ +package com.forgon.disinfectsystem.tousse.comboTousse.service; + +import com.forgon.command.AddCommand; +import com.forgon.directory.model.OrgUnit; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.ComboTousseOrgUint; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; +import com.forgon.tools.hibernate.ObjectDao; + +import java.util.Collection; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote 聚合包所属部门添加实现类 + * @since 2017-02-28 + */ +public class ComboTousseOrgUnitAdd extends AddCommand { + + + public ComboTousseOrgUnitAdd(ObjectDao objectDao) { + super(objectDao); + } + + /** + * 根据需要添加的部门编号列表和这些部门的列表来构造最终需要添加的数据 + * + * @param orgUnits 从数据库查找出来的部门列表 + * @param addCommandLists 需要添加的部门编号列表 + * @param tousseDefinition {@link TousseDefinition} + * @return 最终需要插入数据库的信息 + */ + public List getAddLists(List orgUnits, Collection addCommandLists, TousseDefinition tousseDefinition) { + List addList = new LinkedList<>(); + for (OrgUnit orgUnit : orgUnits) { + if (addCommandLists.contains(orgUnit.getOrgUnitCoding())) { + ComboTousseOrgUint comboTousseOrgUint = new ComboTousseOrgUint(); + comboTousseOrgUint.setTousseType(TousseDefinition.PACKAGE_TYPE_COMBO); + comboTousseOrgUint.setUnitCode(orgUnit.getOrgUnitCoding()); + comboTousseOrgUint.setUnitName(orgUnit.getName()); + comboTousseOrgUint.setComboTousseDefinitionId(tousseDefinition.getId()); + addList.add(comboTousseOrgUint); + } + } + return addList; + } + + @Override + public void execute(Map param) { + List addLists = (List) param.get("addLists"); + objectDao.batchSaveOrUpdate(addLists); + } +} Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseOrgUnitDelete.java =================================================================== diff -u --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseOrgUnitDelete.java (revision 0) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseOrgUnitDelete.java (revision 17174) @@ -0,0 +1,30 @@ +package com.forgon.disinfectsystem.tousse.comboTousse.service; + +import com.forgon.command.DeleteCommand; +import com.forgon.tools.hibernate.ObjectDao; + +import java.util.Collection; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote 聚合包所属部门删除实现类 + * @since 2017-02-28 + */ +public class ComboTousseOrgUnitDelete extends DeleteCommand { + + + public ComboTousseOrgUnitDelete(ObjectDao objectDao) { + super(objectDao); + } + + @Override + public void execute(Map param) { + Collection deleteCommandLists = (Collection) param.get("deleteLists"); + Long comboTousseDefinitionId = (Long) param.get("comboTousseDefinitionId"); + String sql = "delete from ComboTousseOrgUint where comboTousseDefinitionId = ? and unitCode = ?"; + for (String deleteCommandList : deleteCommandLists) { + objectDao.executeHQL(sql, comboTousseDefinitionId, deleteCommandList); + } + } +} Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManagerImpl.java =================================================================== diff -u -r16952 -r17174 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManagerImpl.java (.../ComboTousseManagerImpl.java) (revision 16952) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseManagerImpl.java (.../ComboTousseManagerImpl.java) (revision 17174) @@ -1,19 +1,26 @@ package com.forgon.disinfectsystem.tousse.comboTousse.service; import com.beust.jcommander.ParameterException; +import com.forgon.directory.model.OrgUnit; +import com.forgon.directory.service.OrgUnitManager; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.ComboTousseComposite; +import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.ComboTousseOrgUint; import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition; import com.forgon.tools.Constants; import com.forgon.tools.hibernate.ObjectDao; import net.sf.json.JSONArray; import org.apache.commons.beanutils.ConvertUtils; +import org.apache.commons.collections4.map.HashedMap; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.hibernate.Query; +import org.hibernate.SQLQuery; import org.hibernate.Session; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import java.util.Arrays; +import java.util.Collection; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -27,13 +34,19 @@ protected Logger logger = Logger.getLogger(this.getClass()); + private OrgUnitManager orgUnitManager; + private ObjectDao objectDao; public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; } + public void setOrgUnitManager(OrgUnitManager orgUnitManager) { + this.orgUnitManager = orgUnitManager; + } + @Override public List> getComboTousseMsg(TousseDefinition tousseDefinition) { try { @@ -143,8 +156,109 @@ } } + /* @Override + @Transactional(propagation = Propagation.REQUIRED) + public void saveOrUpdateComboTousseOrgUnit(TousseDefinition tousseDefinition, String unitIds) { + try { + if (StringUtils.isBlank(unitIds)) { + throw new ParameterException("所属科室编号不能为空!"); + } + String[] unitId = unitIds.split(Constants.IDS_SEPARATOR_COMMA); + List uIds = Arrays.asList(unitId); + List orgUnits = orgUnitManager.getByCodes(uIds); + List lists = new LinkedList<>(); + //先删除原来聚合包下的所属科室,然后重新插入 + this.deleteComboTousseOrgUintByComboTousseTdId(tousseDefinition.getId()); + for (OrgUnit orgUnit : orgUnits) { + ComboTousseOrgUint comboTousseOrgUint = new ComboTousseOrgUint(); + comboTousseOrgUint.setTousseType(TousseDefinition.PACKAGE_TYPE_COMBO); + comboTousseOrgUint.setUnitCode(orgUnit.getOrgUnitCoding()); + comboTousseOrgUint.setUnitName(orgUnit.getName()); + comboTousseOrgUint.setComboTousseDefinitionId(tousseDefinition.getId()); + lists.add(comboTousseOrgUint); + } + objectDao.batchSaveOrUpdate(lists); + } + catch (Exception e) { + logger.error(e); + throw new RuntimeException(e); + } + }*/ @Override + @Transactional(propagation = Propagation.REQUIRED) + public void saveOrUpdateComboTousseOrgUnit(TousseDefinition tousseDefinition, String unitIds) { + try { + if (StringUtils.isBlank(unitIds)) { + throw new ParameterException("所属科室编号不能为空!"); + } + String[] unitId = unitIds.split(Constants.IDS_SEPARATOR_COMMA); + List newList = Arrays.asList(unitId); + List orgUnits = orgUnitManager.getByCodes(newList); + List oldList = this.getComboTousseOrgUintByComboTousseTdId(tousseDefinition.getId()); + ComboTousseOrgUnitAdd addCommand = new ComboTousseOrgUnitAdd(objectDao); + ComboTousseOrgUnitDelete deleteCommand = new ComboTousseOrgUnitDelete(objectDao); + //获得需要删除的部门编号列表 + Collection deleteCommandLists = deleteCommand.getStringHandleList(oldList, newList); + //获得需要添加的部门编号列表 + Collection addCommandLists = addCommand.getStringHandleList(oldList, newList); + logger.info("聚合包要删除的所属部门:" + deleteCommandLists); + logger.info("聚合包要添加的所属部门:" + addCommandLists); + List addLists = addCommand.getAddLists(orgUnits, addCommandLists, tousseDefinition); + Map param = new HashedMap<>(); + param.put("addLists", addLists); + param.put("deleteLists", deleteCommandLists); + param.put("comboTousseDefinitionId", tousseDefinition.getId()); + ComboTousseOrgUnitProducer commandProducer = new ComboTousseOrgUnitProducer(); + commandProducer.addCommands(addCommand); + commandProducer.addCommands(deleteCommand); + commandProducer.handleCommand(param); + } + catch (Exception e) { + logger.error(e); + throw new RuntimeException(e); + } + } + + /** + * 根据comboTousseDefinitionId来删除对应的科室 + * + * @param comboTousseDefinitionId 聚合包定义的id + */ + @Transactional(propagation = Propagation.REQUIRED) + private void deleteComboTousseOrgUintByComboTousseTdId(Long comboTousseDefinitionId) { + try { + String sql = "delete from ComboTousseOrgUint where comboTousseDefinitionId = ?"; + SQLQuery sqlQuery = objectDao.getHibernateSession().createSQLQuery(sql); + sqlQuery.setParameter(0, comboTousseDefinitionId); + sqlQuery.executeUpdate(); + } + catch (Exception e) { + logger.error(e); + throw new RuntimeException(e); + } + } + + /** + * 根据聚合包id找出这个聚合包下的所属部门编号 + * + * @param comboTousseDefinitionId 聚合包id + * @return 部门编号列表 + */ + private List getComboTousseOrgUintByComboTousseTdId(Long comboTousseDefinitionId) { + String hql = "select c.unitCode from ComboTousseOrgUint c where c.comboTousseDefinitionId = ?"; + Session session = objectDao.getHibernateSession(); + return (List) session.createQuery(hql).setParameter(0, comboTousseDefinitionId).list(); + } + + @Override + public List> getComboTousseOrgUnitByTdId(Long tousseDefinitionId) { + String sql = "SELECT unitCode AS \"unitCode\", unitName AS \"unitName\" FROM ComboTousseOrgUint WHERE comboTousseDefinitionId = ? "; + List> list = objectDao.findSqlByParam(sql, new Object[]{tousseDefinitionId}); + return list; + } + + @Override public List getComboTousseTdByTdId(Long tousseDefinitionId) { String hql = "from ComboTousseComposite where tousseDefinitionId = ?"; return (List) objectDao.findHqlByParam(hql, new Object[]{tousseDefinitionId}, -1, -1, ComboTousseComposite.class); Index: forgon-core/src/main/java/com/forgon/command/AddCommand.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/command/AddCommand.java (revision 0) +++ forgon-core/src/main/java/com/forgon/command/AddCommand.java (revision 17174) @@ -0,0 +1,34 @@ +package com.forgon.command; + +import com.forgon.tools.hibernate.ObjectDao; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote 数据操作添加实现 + * @since 2017-02-28 + */ +public class AddCommand implements DataBaseCommand { + + + protected ObjectDao objectDao; + + public AddCommand(ObjectDao objectDao) { + this.objectDao = objectDao; + } + + @Override + public Collection getStringHandleList(List oldList, List newList) { + return CollectionUtils.subtract(newList, oldList); + } + + + @Override + public void execute(Map param) { + + } +} Index: forgon-core/src/main/java/com/forgon/command/DataBaseCommand.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/command/DataBaseCommand.java (revision 0) +++ forgon-core/src/main/java/com/forgon/command/DataBaseCommand.java (revision 17174) @@ -0,0 +1,28 @@ +package com.forgon.command; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote 操作数据的命令模式总接口, 用于处理一对多,多那方的批量更新 + * @since 2017-02-28 + */ +public interface DataBaseCommand { + + /** + * 命令的执行 + * + * @param param 要执行所需要用到的参数 + */ + void execute(Map param); + + /** + * 获得需要添加,删除,更新的列表 + * @param oldList 原来存在数据库的列表 + * @param newList 页面传过来需要更新的列表 + * @return 根据不同实现类,返回添加,删除,更新用到的对应列表 + */ + Collection getStringHandleList(List oldList, List newList); +} Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseOrgUnitProducer.java =================================================================== diff -u --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseOrgUnitProducer.java (revision 0) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/comboTousse/service/ComboTousseOrgUnitProducer.java (revision 17174) @@ -0,0 +1,34 @@ +package com.forgon.disinfectsystem.tousse.comboTousse.service; + +import com.forgon.command.DataBaseCommand; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote 聚合包所属部门处理调用类 + * @since 2017-02-28 + */ +public class ComboTousseOrgUnitProducer { + + private List commands = new ArrayList<>(); + + public void addCommands(DataBaseCommand command) { + commands.add(command); + } + + + /** + * 处理这些添加,删除,更新的命令 + * + * @param param 要执行命令的参数 + */ + public void handleCommand(Map param) { + for (DataBaseCommand command : commands) { + command.execute(param); + } + commands.clear(); + } +} Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousse.js =================================================================== diff -u -r16931 -r17174 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousse.js (.../comboTousse.js) (revision 16931) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousse.js (.../comboTousse.js) (revision 17174) @@ -116,14 +116,15 @@ return false; } id = records[0].data['id']; - var type = records[0].data['tousseType']; - if (type == PACKAGE_TYPE_FOREIGN) { - addAndEditForeignTousseDefinition(id); - } else if (type == PACKAGE_TYPE_CUSTOM) { - addAndEditCustomTousse(null, id, "00", refresh); - } else { - addAndEditTousse(id, records[0].data['isUploadVideo']); - } + addAndEditTousse(id, records[0].data['isUploadVideo']); + // var type = records[0].data['tousseType']; + // if (type == PACKAGE_TYPE_FOREIGN) { + // addAndEditForeignTousseDefinition(id); + // } else if (type == PACKAGE_TYPE_CUSTOM) { + // addAndEditCustomTousse(null, id, "00", refresh); + // } else { + // addAndEditTousse(id, records[0].data['isUploadVideo']); + // } }; Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/ComboTousseOrgUint.java =================================================================== diff -u --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/ComboTousseOrgUint.java (revision 0) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/basedatamanager/toussedefinition/ComboTousseOrgUint.java (revision 17174) @@ -0,0 +1,99 @@ +package com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition; + +import org.hibernate.annotations.Cache; +import org.hibernate.annotations.CacheConcurrencyStrategy; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * @author zhonghaowen + * @apiNote 聚合包所对应的科室 + * @since 2017-02-27 + */ +@Entity +@Table(name = "ComboTousseOrgUint") +@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) +public class ComboTousseOrgUint { + + /** + * id,主键/自增长 + */ + private Long id; + + /** + * 聚合包的包定义id + */ + private Long comboTousseDefinitionId; + + /** + * 对应科室的编号 + */ + private String unitCode; + + /** + * 对应科室的名字 + */ + private String unitName; + + /** + * 器械包的类型(目前只有聚合包可以对应多个科室,所以这个类型是聚合包,如果以后器械包也可以对应多个科室,这里的类型就要存对应的类型) + */ + private String tousseType; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getComboTousseDefinitionId() { + return comboTousseDefinitionId; + } + + public void setComboTousseDefinitionId(Long comboTousseDefinitionId) { + this.comboTousseDefinitionId = comboTousseDefinitionId; + } + + public String getUnitCode() { + return unitCode; + } + + public void setUnitCode(String unitCode) { + this.unitCode = unitCode; + } + + public String getUnitName() { + return unitName; + } + + public void setUnitName(String unitName) { + this.unitName = unitName; + } + + public String getTousseType() { + return tousseType; + } + + public void setTousseType(String tousseType) { + this.tousseType = tousseType; + } + + @Override + public String toString() { + return "ComboTousseOrgUint{" + + "id=" + id + + ", comboTousseDefinitionId=" + comboTousseDefinitionId + + ", unitCode='" + unitCode + '\'' + + ", unitName='" + unitName + '\'' + + ", tousseType='" + tousseType + '\'' + + '}'; + } +} Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousseForm.js =================================================================== diff -u -r16967 -r17174 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousseForm.js (.../comboTousseForm.js) (revision 16967) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousseForm.js (.../comboTousseForm.js) (revision 17174) @@ -117,7 +117,124 @@ } } +function crearteHandlerDepartNameCombo(departStore) { + return new top.Ext.form.ComboBox({ + store: departStore, + displayField: 'departName', + valueField: 'departCode', + id: 'handlerDepartName', + name: 'handlerDepartName', + typeAhead: false, + width: 120, + fieldLabel: '所属科室', + matchFieldWidth: false, + triggerAction: 'all', + // emptyText: '请选择', + selectOnFocus: true, + forceSelection: true, + allowBlank: false, + editable: false, + triggerAction: 'all', + mode: 'local', + // lazyInit: true, + anchor: '100%', + // tpl: '
{text}
', + tpl: '
{departName}
', + onSelect: function (record, index) { + var me = this; + if (me.fireEvent('beforeselect', me, record, index) != false) { + record.set('check', !record.get('check')); + //displayField的值 + var str = []; + //valueField的值 + var strValue = []; + me.store.each(function (rc) { + if (rc.get('check')) { + str.push(rc.get('departName')); + strValue.push(rc.get('departCode')); + rc.set('color', '#afd7af'); + } + else { + rc.set('color', ''); + } + }); + me.setValue(str.join()); + top.Ext.getCmp("handlerDepartCodes").setValue(strValue.join()); + me.fireEvent('select', me, record, index); + } + }, + listeners: { + expand: function (value) { + //监听下拉事件 + var me = this; + me.view.setWidth(200); + me.list.setWidth(200); + var deptCodes = top.Ext.getCmp("handlerDepartCodes").getValue().split(','); + for (var i = 0; i < deptCodes.length; i++) { + me.store.findBy(function (item) { + if (item.get('departCode') == deptCodes[i]) { + item.set('check', true); + item.set('color', '#afd7af'); + } + }); + } + } + } + }) +} + +/** + * 读取聚合包下的处理科室与任务组 + * @param id 聚合包id + * @param taskGroupJsonStore 任务组的数据源 + */ +function loadTaskGroupAndHandleDepart(id, taskGroupJsonStore) { + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!loadComboTousseTaskGroup.do', + params: {id: id}, + success: function (response, options) { + var result = Ext.decode(response.responseText); + if (result.success) { + top.Ext.getCmp('cssdCode').setValue(result.cssdCode); + var data = Ext.decode('{"data": [{departCode:"' + result.cssdCode + '",departName:"' + result.cssdName + '"}]}'); + //因为是本地数据源,且store的autoLoad属性为true,所以不需要再loadData了,否则将会出现重复数据选项 + //cssdNameStore.loadData(data,true); + top.Ext.getCmp('cssdName').setValue(result.cssdName); + var taskGroupData = Ext.decode('{"data": [{taskGroupName:"' + result.taskGroup + '"}]}'); + taskGroupJsonStore.loadData(taskGroupData, true); + top.Ext.getCmp('taskGroup').setValue(result.taskGroup); + } else { + //showResult("未找到聚合包处理科室与任务组配置数据"); + } + }, + failure: function (response, options) { + showResult("加载聚合包处理科室与任务组报错"); + } + }); +} + +/** + * 读取聚合包下的所属科室 + * @param id 聚合包的id + */ +function loadComboTousseUnit(id) { + Ext.Ajax.request({ + url: WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!loadComboTousseUnit.do', + params: {comboTousseDefinitionId: id}, + success: function (response, options) { + var result = Ext.decode(response.responseText); + if (result.success) { + top.Ext.getCmp("handlerDepartCodes").setValue(result.unitCodes); + top.Ext.getCmp('handlerDepartName').setValue(result.unitNames); + } + }, + failure: function (response, options) { + showResult("加载聚合包所属科室报错"); + } + }); +} + function addAndEditTousse(id, isUploadVideo) { this.id = id; tousseDefinitionID = id; @@ -322,6 +439,7 @@ //所属科室store var departStore = new Ext.data.Store({ + autoLoad: true, proxy: new Ext.data.HttpProxy({ url: WWWROOT + '/disinfectSystem/baseData/supplyRoomConfigAction!getAllOrgUnitName.do', method: 'POST' @@ -528,6 +646,10 @@ id: 'handlerDepartCode' }, { xtype: 'hidden', + name: 'handlerDepartCodes', + id: 'handlerDepartCodes' + }, { + xtype: 'hidden', name: 'cssdCode', id: 'cssdCode' }, { @@ -612,42 +734,44 @@ anchor: '100%' }] }, - { + // { + // columnWidth: .25, + // layout: 'form', + // items: [{ + // xtype: 'combo', + // fieldLabel: '所属科室', + // id: 'handlerDepartName', + // name: 'handlerDepartName', + // queryParam: 'spell', + // // editable: false, + // valueField: 'departName', + // displayField: 'departName', + // listWidth: 180, + // lazyInit: true, + // typeAhead: false, + // store: departStore, + // forceSelection: true, + // allowBlank: false, + // triggerAction: 'all', + // 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(); + // } + // } + // }] + // }, + + { columnWidth: .25, layout: 'form', items: [{ xtype: 'combo', - fieldLabel: '所属科室', - id: 'handlerDepartName', - name: 'handlerDepartName', - queryParam: 'spell', - // editable: false, - valueField: 'departName', - displayField: 'departName', - listWidth: 180, - lazyInit: true, - typeAhead: false, - store: departStore, - forceSelection: true, - allowBlank: false, - triggerAction: 'all', - 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(); - } - } - }] - }, { - columnWidth: .25, - layout: 'form', - items: [{ - xtype: 'combo', fieldLabel: '默认包装类型', id: 'packageType', name: 'packageType', @@ -760,8 +884,7 @@ id: 'externalCode', anchor: '100%' }] - }, - { + }, { columnWidth: .25, layout: 'form', items: [{ @@ -797,8 +920,7 @@ } } }] - }, - { + }, { columnWidth: .25, layout: 'form', items: [{ @@ -826,6 +948,11 @@ }] }, { + columnWidth: .75, + layout: 'form', + items: [crearteHandlerDepartNameCombo(departStore)] + }, + { columnWidth: .7, layout: 'form', id: 'videoPanel', @@ -884,8 +1011,7 @@ } }] - } - ] + }] }, { columnWidth: 0.5, layout: 'form', @@ -898,10 +1024,9 @@ height: 400, //width : 475, labelWidth: 60, - items: [ - showTousseImage - ] - }] + items: [showTousseImage] + } + ] }], buttons: [{ id: 'saveBtn', @@ -959,7 +1084,8 @@ uploadVideoWindow(videoType); } }] - }); + }) + ; tousseWin = new top.Ext.Window({ id: 'tousseWin', @@ -991,7 +1117,6 @@ if (id != 0) { formObj.form.load({ url: WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!loadComboTousse.do', - // url: WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!loadTousseDefinition.do', method: 'GET', waitMsg: '正在加载数据,请稍候', params: {id: id}, @@ -1012,30 +1137,9 @@ //读取聚合包下的器械包 configStore.load({params: {id: tousseDefinition.id}}); //读取聚合包下的处理科室与任务组 - Ext.Ajax.request({ - url: WWWROOT + '/disinfectSystem/baseData/tousseDefinitionAction!loadComboTousseTaskGroup.do', - params: {id: id}, - success: function (response, options) { - var result = Ext.decode(response.responseText); - if (result.success) { - - top.Ext.getCmp('cssdCode').setValue(result.cssdCode); - var data = Ext.decode('{"data": [{departCode:"' + result.cssdCode + '",departName:"' + result.cssdName + '"}]}'); - //因为是本地数据源,且store的autoLoad属性为true,所以不需要再loadData了,否则将会出现重复数据选项 - //cssdNameStore.loadData(data,true); - top.Ext.getCmp('cssdName').setValue(result.cssdName); - - var taskGroupData = Ext.decode('{"data": [{taskGroupName:"' + result.taskGroup + '"}]}'); - taskGroupJsonStore.loadData(taskGroupData, true); - top.Ext.getCmp('taskGroup').setValue(result.taskGroup); - } else { - //showResult("未找到聚合包处理科室与任务组配置数据"); - } - }, - failure: function (response, options) { - showResult("加载聚合包处理科室与任务组报错"); - } - }); + loadTaskGroupAndHandleDepart(id, taskGroupJsonStore); + //读取聚合包下的所属科室 + loadComboTousseUnit(id); }, failure: function (form, action) { } Index: ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousse.jsp =================================================================== diff -u -r16906 -r17174 --- ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousse.jsp (.../comboTousse.jsp) (revision 16906) +++ ssts-web/src/main/webapp/disinfectsystem/basedatamanager/tousse/comboTousse.jsp (.../comboTousse.jsp) (revision 17174) @@ -86,6 +86,8 @@ enableSaveBtn = true; +<%----%> +<%----%> @@ -104,7 +106,7 @@ <%----%> - +<%----%> Index: forgon-core/src/main/java/com/forgon/command/UpdateCommand.java =================================================================== diff -u --- forgon-core/src/main/java/com/forgon/command/UpdateCommand.java (revision 0) +++ forgon-core/src/main/java/com/forgon/command/UpdateCommand.java (revision 17174) @@ -0,0 +1,33 @@ +package com.forgon.command; + +import com.forgon.tools.hibernate.ObjectDao; +import org.apache.commons.collections4.CollectionUtils; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * @author zhonghaowen + * @apiNote + * @since 2017-02-28 + */ +public class UpdateCommand implements DataBaseCommand { + + protected ObjectDao objectDao; + + public UpdateCommand(ObjectDao objectDao) { + this.objectDao = objectDao; + } + + + @Override + public void execute(Map param) { + + } + + @Override + public Collection getStringHandleList(List oldList, List newList) { + return CollectionUtils.intersection(oldList, newList); + } +}