Index: ssts-print/src/main/java/com/forgon/disinfectsystem/printinvoiceconfig/service/PrintInvoiceConfigManager.java =================================================================== diff -u -r14652 -r40453 --- ssts-print/src/main/java/com/forgon/disinfectsystem/printinvoiceconfig/service/PrintInvoiceConfigManager.java (.../PrintInvoiceConfigManager.java) (revision 14652) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/printinvoiceconfig/service/PrintInvoiceConfigManager.java (.../PrintInvoiceConfigManager.java) (revision 40453) @@ -2,6 +2,7 @@ import java.util.List; +import com.forgon.directory.model.OrgUnit; import com.forgon.disinfectsystem.entity.printinvoiceconfig.PrintInvoiceConfig; import net.sf.json.JSONObject; @@ -14,4 +15,17 @@ void delete(String[] ids); void save(PrintInvoiceConfig printInvoiceConfig); public List getAll(); + + /** + * 批量打印发货单时,查询打印发货单设置 + * @return + */ + public List getPrintInvoiceConfigForBatchPrint(); + + /** + * 查询打印发货单设置的处理科室 + * @param printInvoiceConfig 打印发货单设置 + * @return + */ + public OrgUnit getPrintInvoiceConfigHandlerDepart(PrintInvoiceConfig printInvoiceConfig); } Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/printinvoiceconfig/PrintInvoiceConfig.java =================================================================== diff -u -r39245 -r40453 --- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/printinvoiceconfig/PrintInvoiceConfig.java (.../PrintInvoiceConfig.java) (revision 39245) +++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/printinvoiceconfig/PrintInvoiceConfig.java (.../PrintInvoiceConfig.java) (revision 40453) @@ -100,6 +100,24 @@ */ private boolean isCustomPrintForeignTousse = false; + /** + * 处理科室id + * FSEYEQ-18 + */ + private Long handlerDepartId; + + /** + * 处理科室编码 + * 不保存到数据库FSEYEQ-18 + */ + private String handlerDepartCode; + + /** + * 处理科室名称 + * 不保存到数据库FSEYEQ-18 + */ + private String handlerDepartName; + @Id @GeneratedValue(strategy = GenerationType.AUTO) public Long getId() { @@ -228,7 +246,33 @@ public void setIsCustomPrintForeignTousse(boolean isCustomPrintForeignTousse) { this.isCustomPrintForeignTousse = isCustomPrintForeignTousse; } + + 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; + } + /** * 是否按科室合并。如果按科室合并,同科室的发货单,合并打印。 * @return 除非指定不合并或者是按申请单合并,否则都是按科室合并。要之前的指定为否才不合并,否则就按科室合并的逻辑一样 Index: ssts-print/src/main/java/com/forgon/disinfectsystem/printinvoiceconfig/action/PrintInvoiceConfigAction.java =================================================================== diff -u -r21820 -r40453 --- ssts-print/src/main/java/com/forgon/disinfectsystem/printinvoiceconfig/action/PrintInvoiceConfigAction.java (.../PrintInvoiceConfigAction.java) (revision 21820) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/printinvoiceconfig/action/PrintInvoiceConfigAction.java (.../PrintInvoiceConfigAction.java) (revision 40453) @@ -10,6 +10,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.printinvoiceconfig.PrintInvoiceConfig; import com.forgon.disinfectsystem.printinvoiceconfig.service.PrintInvoiceConfigManager; import com.forgon.tools.StrutsParamUtils; @@ -65,6 +66,12 @@ Map map = new HashMap(); map.put("success", true); if(printInvoiceConfig != null){ + //【打印发货单设置】新增“处理科室”FSEYEQ-18 + OrgUnit handlerDepart = printInvoiceConfigManager.getPrintInvoiceConfigHandlerDepart(printInvoiceConfig); + if(handlerDepart != null){ + printInvoiceConfig.setHandlerDepartCode(handlerDepart.getOrgUnitCoding()); + printInvoiceConfig.setHandlerDepartName(handlerDepart.getName()); + } map.put("data", printInvoiceConfig); } try { Index: ssts-print/src/main/java/com/forgon/disinfectsystem/printinvoiceconfig/service/PrintInvoiceConfigManagerImpl.java =================================================================== diff -u -r20064 -r40453 --- ssts-print/src/main/java/com/forgon/disinfectsystem/printinvoiceconfig/service/PrintInvoiceConfigManagerImpl.java (.../PrintInvoiceConfigManagerImpl.java) (revision 20064) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/printinvoiceconfig/service/PrintInvoiceConfigManagerImpl.java (.../PrintInvoiceConfigManagerImpl.java) (revision 40453) @@ -7,17 +7,27 @@ import net.sf.json.JSONArray; import net.sf.json.JSONObject; +import com.forgon.directory.acegi.tools.AcegiHelper; +import com.forgon.directory.model.OrgUnit; +import com.forgon.directory.service.OrgUnitManager; import com.forgon.disinfectsystem.basedatamanager.tousseGroup.service.TousseGroupManager; import com.forgon.disinfectsystem.entity.basedatamanager.tousseGroup.TousseGroup; import com.forgon.disinfectsystem.entity.printinvoiceconfig.PrintInvoiceConfig; +import com.forgon.security.bean.ModelNameBean; import com.forgon.tools.db.DatabaseUtil; import com.forgon.tools.hibernate.ObjectDao; +import com.forgon.tools.util.ConfigUtils; public class PrintInvoiceConfigManagerImpl implements PrintInvoiceConfigManager { private ObjectDao objectDao; private TousseGroupManager tousseGroupManager; + private OrgUnitManager orgUnitManager; + public void setOrgUnitManager(OrgUnitManager orgUnitManager) { + this.orgUnitManager = orgUnitManager; + } + public void setObjectDao(ObjectDao objectDao) { this.objectDao = objectDao; } @@ -140,4 +150,34 @@ public List getAll() { return objectDao.findBySql(PrintInvoiceConfig.class.getSimpleName(), " where 1=1 order by orderNum asc "); } + + @Override + public OrgUnit getPrintInvoiceConfigHandlerDepart(PrintInvoiceConfig printInvoiceConfig) { + if(printInvoiceConfig == null || !DatabaseUtil.isPoIdValid(printInvoiceConfig.getHandlerDepartId())){ + return null; + } + return (OrgUnit) objectDao.getById(OrgUnit.class.getSimpleName(), printInvoiceConfig.getHandlerDepartId()); + } + + @SuppressWarnings("unchecked") + @Override + public List getPrintInvoiceConfigForBatchPrint() { + if(!ConfigUtils.extendedFunctionConfig("supplyRoomDataIsolationModule", ModelNameBean.MODLE_NAME_PRINT_INVOICE_CONFIG)){ + return this.getAll(); + } + //在配置项“supplyRoomDataIsolationModule”中配置了“打印发货单设置(printInvoiceConfig)”后, + //【发货管理】模块中,按钮“打印发货单”中的选项“批量打印发货单”中的打印分组,更改为只显示当前登录科室可以处理的班次分组;FSEYEQ-18 + OrgUnit currentLoginOrg = orgUnitManager.getByCode(AcegiHelper.getCurrentOrgUnitCode()); + if(currentLoginOrg == null){ + return null; + } + StringBuffer sqlBuffer = new StringBuffer(); + sqlBuffer.append("select po from "); + sqlBuffer.append(PrintInvoiceConfig.class.getSimpleName()); + sqlBuffer.append(" po where (po.handlerDepartId = "); + sqlBuffer.append(currentLoginOrg.getId()); + sqlBuffer.append(" or po.handlerDepartId is null)"); + + return objectDao.findByHql(sqlBuffer.toString()); + } } Index: forgon-core/src/main/java/com/forgon/security/bean/ModelNameBean.java =================================================================== diff -u -r40431 -r40453 --- forgon-core/src/main/java/com/forgon/security/bean/ModelNameBean.java (.../ModelNameBean.java) (revision 40431) +++ forgon-core/src/main/java/com/forgon/security/bean/ModelNameBean.java (.../ModelNameBean.java) (revision 40453) @@ -49,6 +49,11 @@ */ public static final String MODLE_NAME_REVIEW_DEPARTMENT_GROUP = "reviewDepartmentGroup"; + /** + * 打印发货单设置 + */ + public static final String MODLE_NAME_PRINT_INVOICE_CONFIG = "printInvoiceConfig"; + public String getModleName() { return modleName; } Index: ssts-print/src/main/java/com/forgon/disinfectsystem/printinvoiceconfig/dwr/table/PrintInvoiceConfigTableManager.java =================================================================== diff -u -r14631 -r40453 --- ssts-print/src/main/java/com/forgon/disinfectsystem/printinvoiceconfig/dwr/table/PrintInvoiceConfigTableManager.java (.../PrintInvoiceConfigTableManager.java) (revision 14631) +++ ssts-print/src/main/java/com/forgon/disinfectsystem/printinvoiceconfig/dwr/table/PrintInvoiceConfigTableManager.java (.../PrintInvoiceConfigTableManager.java) (revision 40453) @@ -1,15 +1,35 @@ package com.forgon.disinfectsystem.printinvoiceconfig.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.printinvoiceconfig.PrintInvoiceConfig; import com.forgon.disinfectsystem.printinvoiceconfig.service.PrintInvoiceConfigManager; +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 PrintInvoiceConfigTableManager { private GridManager gridManager; - PrintInvoiceConfigManager printInvoiceConfigManager; + private PrintInvoiceConfigManager printInvoiceConfigManager; + private ObjectDao objectDao; + + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } public void setGridManager(GridManager gridManager) { this.gridManager = gridManager; @@ -23,10 +43,97 @@ public String findPrintInvoiceConfigTableList( Map> parameterMap) { String sql = ""; - return gridManager.renderGrid(parameterMap, + String jsonString = gridManager.renderGrid(parameterMap, PrintInvoiceConfig.class.getSimpleName(), sql, new String[] { }); + return updateReturnInfo(jsonString); } + /** + * 修改返回的数据 + * 1、关联查询处理科室名称及编码 + * @param json + * @return + */ + private String updateReturnInfo(String json) { + if(!ConfigUtils.extendedFunctionConfig("supplyRoomDataIsolationModule", ModelNameBean.MODLE_NAME_PRINT_INVOICE_CONFIG)){ + 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 + * @return + */ + private Map getHandleDepartMap(Set handlerDepartIdSet) { + Map handleDepartMap = new HashMap(); + 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){ printInvoiceConfigManager.moveUp(number); }