Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/instrumentrepair/service/QueryTransientInfoForInstrumentRepairManagerImpl.java =================================================================== diff -u --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/instrumentrepair/service/QueryTransientInfoForInstrumentRepairManagerImpl.java (revision 0) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/instrumentrepair/service/QueryTransientInfoForInstrumentRepairManagerImpl.java (revision 41551) @@ -0,0 +1,76 @@ +package com.forgon.disinfectsystem.tousse.instrumentrepair.service; + +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; +import org.springframework.stereotype.Service; + +import com.forgon.disinfectsystem.entity.basedatamanager.instrumentrepair.InstrumentRepair; +import com.forgon.disinfectsystem.entity.basedatamanager.instrumentrepair.InstrumentRepairGoods; +import com.forgon.systemsetting.service.HttpOptionManager; +import com.forgon.tools.db.DatabaseUtil; +import com.forgon.tools.hibernate.ObjectDao; +@Service("queryTransientInfoForInstrumentRepairManager") +public class QueryTransientInfoForInstrumentRepairManagerImpl implements QueryTransientInfoForInstrumentRepairManager{ + protected ObjectDao objectDao; + public void setObjectDao(ObjectDao objectDao) { + this.objectDao = objectDao; + } + private HttpOptionManager httpOptionManager; + public void setHttpOptionManager(HttpOptionManager httpOptionManager) { + this.httpOptionManager = httpOptionManager; + } + @Override + public void setTransientInfoForInstrumentRepair( + InstrumentRepair instrumentRepair) { + // 批量收集需要查询的ID,减少数据库访问次数 + Set httpOptionIdsToQuery = new HashSet<>(); + if(DatabaseUtil.isPoIdValid(instrumentRepair.getDiscoveryPhaseOptionId())){ + httpOptionIdsToQuery.add(instrumentRepair.getDiscoveryPhaseOptionId()); + } + List instrumentRepairGoodsList = instrumentRepair.getInstrumentRepairGoodsList(); + if(CollectionUtils.isNotEmpty(instrumentRepair.getInstrumentRepairGoodsList())){ + // 第一次遍历:收集所有需要查询的ID + for (InstrumentRepairGoods instrumentRepairGoods : instrumentRepairGoodsList) { + Long deviceTypeId = instrumentRepairGoods.getDeviceTypeHttpOptionId(); + Long faultLocationId = instrumentRepairGoods.getFaultLocationHttpOptionId(); + + if (DatabaseUtil.isPoIdValid(deviceTypeId) && !httpOptionIdsToQuery.contains(deviceTypeId)) { + httpOptionIdsToQuery.add(deviceTypeId); + } + + if (DatabaseUtil.isPoIdValid(faultLocationId) && !httpOptionIdsToQuery.contains(faultLocationId)) { + httpOptionIdsToQuery.add(faultLocationId); + } + } + } + + // 批量查询httpOption + Map httpOptionMap = httpOptionManager.createHttpOptionIdToOptionTextMap(httpOptionIdsToQuery); + if(MapUtils.isNotEmpty(httpOptionMap)){ + if(DatabaseUtil.isPoIdValid(instrumentRepair.getDiscoveryPhaseOptionId())){ + instrumentRepair.setDiscoveryPhase(httpOptionMap.get(instrumentRepair.getDiscoveryPhaseOptionId())); + } + if(CollectionUtils.isNotEmpty(instrumentRepairGoodsList)){ + // 第二次遍历:设置值(不再需要数据库查询) + for (InstrumentRepairGoods instrumentRepairGoods : instrumentRepairGoodsList) { + Long deviceTypeId = instrumentRepairGoods.getDeviceTypeHttpOptionId(); + Long faultLocationId = instrumentRepairGoods.getFaultLocationHttpOptionId(); + + if (DatabaseUtil.isPoIdValid(deviceTypeId)) { + instrumentRepairGoods.setDeviceType(httpOptionMap.get(deviceTypeId)); + } + + if (DatabaseUtil.isPoIdValid(faultLocationId)) { + instrumentRepairGoods.setFaultLocation(httpOptionMap.get(faultLocationId)); + } + } + } + } + } + +} Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/instrumentrepair/action/InstrumentRepairAction.java =================================================================== diff -u -r35994 -r41551 --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/instrumentrepair/action/InstrumentRepairAction.java (.../InstrumentRepairAction.java) (revision 35994) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/instrumentrepair/action/InstrumentRepairAction.java (.../InstrumentRepairAction.java) (revision 41551) @@ -17,6 +17,7 @@ import com.forgon.disinfectsystem.entity.basedatamanager.instrumentrepair.InstrumentRepair; import com.forgon.disinfectsystem.tousse.instrumentrepair.service.InstrumentRepairManager; +import com.forgon.disinfectsystem.tousse.instrumentrepair.service.QueryTransientInfoForInstrumentRepairManager; import com.forgon.entity.PageEntity; import com.forgon.tools.StrutsParamUtils; import com.forgon.tools.StrutsResponseUtils; @@ -42,6 +43,12 @@ private InstrumentRepairManager instrumentRepairManager; + private QueryTransientInfoForInstrumentRepairManager queryTransientInfoForInstrumentRepairManager; + + public void setQueryTransientInfoForInstrumentRepairManager( + QueryTransientInfoForInstrumentRepairManager queryTransientInfoForInstrumentRepairManager) { + this.queryTransientInfoForInstrumentRepairManager = queryTransientInfoForInstrumentRepairManager; + } /** * 修改前的状态 */ @@ -78,6 +85,7 @@ String id = StrutsParamUtils.getPraramValue("id", ""); InstrumentRepair instrumentRepair = instrumentRepairManager.loadInstrumentRepair(id); if(instrumentRepair != null){ + queryTransientInfoForInstrumentRepairManager.setTransientInfoForInstrumentRepair(instrumentRepair); JsonConfig config = new JsonConfig(); config.registerJsonValueProcessor(Date.class, new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss")); config.setExcludes(new String[]{"instrumentRepair"}); Index: ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/instrumentrepair/service/QueryTransientInfoForInstrumentRepairManager.java =================================================================== diff -u --- ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/instrumentrepair/service/QueryTransientInfoForInstrumentRepairManager.java (revision 0) +++ ssts-tousse/src/main/java/com/forgon/disinfectsystem/tousse/instrumentrepair/service/QueryTransientInfoForInstrumentRepairManager.java (revision 41551) @@ -0,0 +1,11 @@ +package com.forgon.disinfectsystem.tousse.instrumentrepair.service; + +import com.forgon.disinfectsystem.entity.basedatamanager.instrumentrepair.InstrumentRepair; + +public interface QueryTransientInfoForInstrumentRepairManager { + /** + * 查询器械维修管理 一些不冗余到数据库的信息 + * @param instrumentRepair + */ + public void setTransientInfoForInstrumentRepair(InstrumentRepair instrumentRepair); +}