Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/dwr/table/InvoiceDepartmentTableManage.java =================================================================== diff -u -r21821 -r40461 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/dwr/table/InvoiceDepartmentTableManage.java (.../InvoiceDepartmentTableManage.java) (revision 21821) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/dwr/table/InvoiceDepartmentTableManage.java (.../InvoiceDepartmentTableManage.java) (revision 40461) @@ -1,11 +1,25 @@ package com.forgon.disinfectsystem.invoicemanager.dwr.table; +import java.sql.ResultSet; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import org.apache.commons.collections4.CollectionUtils; + import com.forgon.component.grid.GridManager; +import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceDepartment; +import com.forgon.security.bean.ModelNameBean; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.ConfigUtils; +import com.forgon.tools.util.SqlUtils; public class InvoiceDepartmentTableManage { @@ -23,10 +37,100 @@ public String findInvoiceDepartmentTableList( Map> parameterMap) { - return gridManager.renderGrid(parameterMap, + String jsonString = gridManager.renderGrid(parameterMap, InvoiceDepartment.class.getSimpleName(), "", new String[] { }); + return updateReturnInfo(jsonString); } + /** + * 修改返回的数据 + * 1、关联查询处理科室名称及编码 + * @param json + * @return + */ + private String updateReturnInfo(String json) { + if(!ConfigUtils.extendedFunctionConfig("supplyRoomDataIsolationModule", ModelNameBean.MODLE_NAME_INVOICE_DEPARTMENT_VIEW)){ + return json; + } + JSONObject jsonObject = JSONObject.fromObject(json); + if(jsonObject == null){ + return json; + } + JSONArray jsonArray = jsonObject.optJSONArray("rows"); + if (jsonArray == null || jsonArray.size() == 0) { + return json; + } + //处理科室id + Set handlerDepartIdSet = new HashSet(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = jsonArray.optJSONObject(i); + if (obj == null) { + continue; + } + Long handlerDepartId = obj.optLong("handlerDepartId"); + if(DatabaseUtil.isPoIdValid(handlerDepartId)){ + handlerDepartIdSet.add(handlerDepartId); + } + } + if(CollectionUtils.isEmpty(handlerDepartIdSet)){ + return jsonObject.toString(); + } + + //关联查询处理科室名称及编码 + Map handleDepartMap = getHandleDepartMap(handlerDepartIdSet); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = jsonArray.optJSONObject(i); + if (obj == null) { + continue; + } + Long handlerDepartId = obj.optLong("handlerDepartId"); + if(DatabaseUtil.isPoIdValid(handlerDepartId)){ + OrgUnit handleDepart = handleDepartMap.get(handlerDepartId); + if(handleDepart != null){ + obj.put("handlerDepartCode", handleDepart.getOrgUnitCoding()); + obj.put("handlerDepartName", handleDepart.getName()); + } + } + } + + return jsonObject.toString(); + } + + /** + * 关联查询科室发货计划设置的处理科室名称及编码 + * @param handlerDepartIdSet 处理科室id + * @return + */ + private Map getHandleDepartMap(Set handlerDepartIdSet) { + Map handleDepartMap = new HashMap(); + if(CollectionUtils.isEmpty(handlerDepartIdSet)){ + return handleDepartMap; + } + StringBuffer sqlBuffer = new StringBuffer("select id, orgUnitCoding, name from ") + .append(OrgUnit.class.getSimpleName()) + .append(" where " + SqlUtils.getNonStringFieldInLargeCollectionsPredicate("id", handlerDepartIdSet)); + + ResultSet rs = null; + try { + rs = objectDao.executeSql(sqlBuffer.toString()); + while(rs.next()){ + Long id = rs.getLong("id"); + String orgUnitCoding = rs.getString("orgUnitCoding"); + String name = rs.getString("name"); + OrgUnit orgUnit = new OrgUnit(); + orgUnit.setOrgUnitCoding(orgUnitCoding); + orgUnit.setName(name); + handleDepartMap.put(id, orgUnit); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + DatabaseUtil.closeResultSetAndStatement(rs); + } + + return handleDepartMap; + } + public void moveUpRecord(String number){ Integer numberOrder = Integer.parseInt(number); //判断是不是第二条记录 Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceDepartmentManage.java =================================================================== diff -u -r12331 -r40461 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceDepartmentManage.java (.../InvoiceDepartmentManage.java) (revision 12331) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceDepartmentManage.java (.../InvoiceDepartmentManage.java) (revision 40461) @@ -2,6 +2,7 @@ import java.util.List; +import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceDepartment; public interface InvoiceDepartmentManage { @@ -15,4 +16,20 @@ public InvoiceDepartment getInvoiceDepartmentByID(Long id); public List findAllInvoiceDepartment(); + + /** + * 查询【科室发货计划设置】的处理科室 + * @param invoiceDepartment 【科室发货计划设置】 + * @return 处理科室 + */ + public OrgUnit getInvoiceDepartmentManageHandlerDepart(InvoiceDepartment invoiceDepartment); + + /** + * 查询【科室发货计划设置】 + * handlerDepartCode为空时,返回所有【科室发货计划设置】; + * handlerDepartCode不为空时,返回处理科室为handlerDepartCode及处理科室为空的【科室发货计划设置】; + * @param handlerDepartCode 处理科室编码 + * @return 科室发货计划设置 + */ + public List loadDepartGroup(String handlerDepartCode); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoiceDepartment.java =================================================================== diff -u -r39254 -r40461 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoiceDepartment.java (.../InvoiceDepartment.java) (revision 39254) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/invoicemanager/InvoiceDepartment.java (.../InvoiceDepartment.java) (revision 40461) @@ -8,6 +8,7 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; +import javax.persistence.Transient; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; @@ -46,6 +47,24 @@ */ private Integer orderNum; + /** + * 处理科室id + * FSEYEQ-19 + */ + private Long handlerDepartId; + + /** + * 处理科室编码 + * 不保存到数据库FSEYEQ-19 + */ + private String handlerDepartCode; + + /** + * 处理科室名称 + * 不保存到数据库FSEYEQ-19 + */ + private String handlerDepartName; + @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { @@ -83,4 +102,30 @@ this.orderNum = orderNum; } + public Long getHandlerDepartId() { + return handlerDepartId; + } + + public void setHandlerDepartId(Long handlerDepartId) { + this.handlerDepartId = handlerDepartId; + } + + @Transient + public String getHandlerDepartCode() { + return handlerDepartCode; + } + + public void setHandlerDepartCode(String handlerDepartCode) { + this.handlerDepartCode = handlerDepartCode; + } + + @Transient + public String getHandlerDepartName() { + return handlerDepartName; + } + + public void setHandlerDepartName(String handlerDepartName) { + this.handlerDepartName = handlerDepartName; + } + } Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceDepartmentAction.java =================================================================== diff -u -r21821 -r40461 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceDepartmentAction.java (.../InvoiceDepartmentAction.java) (revision 21821) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/action/InvoiceDepartmentAction.java (.../InvoiceDepartmentAction.java) (revision 40461) @@ -16,6 +16,7 @@ import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; +import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceDepartment; import com.forgon.disinfectsystem.invoicemanager.service.InvoiceDepartmentManage; import com.forgon.tools.StrutsParamUtils; @@ -92,7 +93,8 @@ } public void loadDepartGroup(){ - List list = invoiceDepartmentManage.findAllInvoiceDepartment(); + String handlerDepartCode = StrutsParamUtils.getPraramValue("handlerDepartCode", ""); + List list = invoiceDepartmentManage.loadDepartGroup(handlerDepartCode); List> jsonList = new ArrayList>(); String needAll = StrutsParamUtils.getPraramValue("needAll", "false"); if (Boolean.valueOf(needAll)) { @@ -121,6 +123,12 @@ public void loadConfigData(){ Map map = new HashMap(); if(invoiceDepartment != null){ + //【科室发货计划设置】新增“处理科室”功能FSEYEQ-19 + OrgUnit handlerDepart = invoiceDepartmentManage.getInvoiceDepartmentManageHandlerDepart(invoiceDepartment); + if(handlerDepart != null){ + invoiceDepartment.setHandlerDepartCode(handlerDepart.getOrgUnitCoding()); + invoiceDepartment.setHandlerDepartName(handlerDepart.getName()); + } map.put("success", true); map.put("data", invoiceDepartment); }else{ Index: ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceDepartmentManageImpl.java =================================================================== diff -u -r12331 -r40461 --- ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceDepartmentManageImpl.java (.../InvoiceDepartmentManageImpl.java) (revision 12331) +++ ssts-invoice/src/main/java/com/forgon/disinfectsystem/invoicemanager/service/InvoiceDepartmentManageImpl.java (.../InvoiceDepartmentManageImpl.java) (revision 40461) @@ -3,13 +3,25 @@ import java.util.ArrayList; import java.util.List; +import org.apache.commons.lang.StringUtils; + +import com.forgon.directory.model.OrgUnit; +import com.forgon.directory.service.OrgUnitManager; import com.forgon.disinfectsystem.entity.invoicemanager.InvoiceDepartment; +import com.forgon.exception.SystemException; +import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; public class InvoiceDepartmentManageImpl implements InvoiceDepartmentManage { private ObjectDao objectDao; + private OrgUnitManager orgUnitManager; + + public void setOrgUnitManager(OrgUnitManager orgUnitManager) { + this.orgUnitManager = orgUnitManager; + } + public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; } @@ -48,4 +60,32 @@ return invoiceDepartmentList; } + @Override + public OrgUnit getInvoiceDepartmentManageHandlerDepart(InvoiceDepartment invoiceDepartment) { + if(invoiceDepartment == null || !DatabaseUtil.isPoIdValid(invoiceDepartment.getHandlerDepartId())){ + return null; + } + return (OrgUnit) objectDao.getById(OrgUnit.class.getSimpleName(), invoiceDepartment.getHandlerDepartId()); + } + + @SuppressWarnings("unchecked") + @Override + public List loadDepartGroup(String handlerDepartCode) { + if(StringUtils.isBlank(handlerDepartCode)){ + return findAllInvoiceDepartment(); + } + OrgUnit handlerDepart = orgUnitManager.getByCode(handlerDepartCode); + if(handlerDepart == null){ + throw new SystemException(String.format("不存在科室编码为%s的科室", handlerDepartCode)); + } + StringBuffer sqlBuffer = new StringBuffer("select po from ") + .append(InvoiceDepartment.class.getSimpleName()) + .append(" po where (po.handlerDepartId = ") + .append(handlerDepart.getId()) + .append(" or handlerDepartId is null) ") + .append(" order by orderNum asc") ; + + return objectDao.findByHql(sqlBuffer.toString()); + } + } Index: forgon-core/src/main/java/com/forgon/security/bean/ModelNameBean.java =================================================================== diff -u -r40453 -r40461 --- forgon-core/src/main/java/com/forgon/security/bean/ModelNameBean.java (.../ModelNameBean.java) (revision 40453) +++ forgon-core/src/main/java/com/forgon/security/bean/ModelNameBean.java (.../ModelNameBean.java) (revision 40461) @@ -54,6 +54,11 @@ */ public static final String MODLE_NAME_PRINT_INVOICE_CONFIG = "printInvoiceConfig"; + /** + * 科室发货计划设置 + */ + public static final String MODLE_NAME_INVOICE_DEPARTMENT_VIEW = "invoiceDepartmentView"; + public String getModleName() { return modleName; }