diff --git a/src/main/java/com/spring/modules/sift/controller/QueryUserSettingController.java b/src/main/java/com/spring/modules/sift/controller/QueryUserSettingController.java index 0ec2d7f3..db9d6d25 100644 --- a/src/main/java/com/spring/modules/sift/controller/QueryUserSettingController.java +++ b/src/main/java/com/spring/modules/sift/controller/QueryUserSettingController.java @@ -12,18 +12,20 @@ import com.spring.modules.sift.service.QueryUserSettingService; import com.spring.modules.sift.vo.QuerySavedVo; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.ui.Model; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; -import org.springframework.web.servlet.ModelAndView; - -import javax.servlet.http.HttpServletRequest; import java.util.List; @RestController @RequestMapping("/sift") @Slf4j public class QueryUserSettingController { + private static final String ROHS_MENU_ID = "112001"; + private static final String ROHS_STATUS_FIELD_NAME = "rohsStatus"; + private static final String ROHS_STATUS_FIELD_NAME_UNDERSCORE = "rohs_status"; + private static final String ROHS_STATUS_FIELD_CAPTION = "状态/RoHS Status"; + private static final String ROHS_STATUS_ORIGINAL_FIELD = "a.rohs_status"; + private static final String STRING_DATA_TYPE = "S"; @Autowired private QueryUserSettingDefaultService defaultService; @@ -42,9 +44,12 @@ public class QueryUserSettingController { public R searchUserSettingList(String menuId,String userId){ List queryUserSettingList = queryUserSettingService.searchQueryUserSetting(menuId, userId); if (!queryUserSettingList.isEmpty()){ + appendRohsStatusFieldForUserSetting(menuId, userId, queryUserSettingList); return R.ok().put("rows",queryUserSettingList); } - return R.ok().put("rows",defaultService.searchQueryUserSettingDefault(menuId)); + List defaultList = defaultService.searchQueryUserSettingDefault(menuId); + appendRohsStatusFieldForDefaultSetting(menuId, defaultList); + return R.ok().put("rows",defaultList); } @PostMapping("/saveOrUpdateBatch") @@ -82,4 +87,121 @@ public class QueryUserSettingController { querySavedHeaderService.updateQuerySavedHeader(querySavedVo); return R.ok("保存成功"); } + + private void appendRohsStatusFieldForUserSetting(String menuId, String userId, List settingList) { + if (!ROHS_MENU_ID.equals(menuId) || settingList == null) { + return; + } + boolean exists = settingList.stream().anyMatch(item -> isRohsStatusField(item.getFieldName(), item.getOriginalField())); + if (exists) { + return; + } + QueryUserSetting row = new QueryUserSetting(); + row.setMenuId(menuId); + row.setUserId(userId); + row.setDtsName(getDtsNameFromUserSetting(settingList)); + row.setDtsCaption(getDtsCaptionFromUserSetting(settingList)); + row.setFieldName(ROHS_STATUS_FIELD_NAME); + row.setFieldCaption(ROHS_STATUS_FIELD_CAPTION); + row.setOriginalField(ROHS_STATUS_ORIGINAL_FIELD); + row.setDataType(STRING_DATA_TYPE); + row.setVisible("Y"); + row.setShowSeqNo(getNextSeqFromUserSetting(settingList)); + row.setSymbol(""); + row.setFormula(""); + row.setSortBy(""); + row.setOrderSeq(""); + settingList.add(row); + } + + private void appendRohsStatusFieldForDefaultSetting(String menuId, List settingList) { + if (!ROHS_MENU_ID.equals(menuId) || settingList == null) { + return; + } + boolean exists = settingList.stream().anyMatch(item -> isRohsStatusField(item.getFieldName(), item.getOriginalField())); + if (exists) { + return; + } + QueryUserSettingDefault row = new QueryUserSettingDefault(); + row.setMenuId(menuId); + row.setDtsName(getDtsNameFromDefaultSetting(settingList)); + row.setDtsCaption(getDtsCaptionFromDefaultSetting(settingList)); + row.setFieldName(ROHS_STATUS_FIELD_NAME); + row.setFieldCaption(ROHS_STATUS_FIELD_CAPTION); + row.setOriginalField(ROHS_STATUS_ORIGINAL_FIELD); + row.setDataType(STRING_DATA_TYPE); + row.setVisible("Y"); + row.setShowSeqNo(getNextSeqFromDefaultSetting(settingList)); + row.setSymbol(""); + row.setFormula(""); + row.setSortBy(""); + row.setOrderSeq(""); + settingList.add(row); + } + + private Integer getNextSeqFromUserSetting(List settingList) { + int max = 0; + for (QueryUserSetting item : settingList) { + if (item != null && item.getShowSeqNo() != null && item.getShowSeqNo() > max) { + max = item.getShowSeqNo(); + } + } + return max + 1; + } + + private Integer getNextSeqFromDefaultSetting(List settingList) { + int max = 0; + for (QueryUserSettingDefault item : settingList) { + if (item != null && item.getShowSeqNo() != null && item.getShowSeqNo() > max) { + max = item.getShowSeqNo(); + } + } + return max + 1; + } + + private String getDtsNameFromUserSetting(List settingList) { + for (QueryUserSetting item : settingList) { + if (item != null && StringUtils.hasText(item.getDtsName())) { + return item.getDtsName(); + } + } + return "ADOQResult"; + } + + private String getDtsNameFromDefaultSetting(List settingList) { + for (QueryUserSettingDefault item : settingList) { + if (item != null && StringUtils.hasText(item.getDtsName())) { + return item.getDtsName(); + } + } + return "ADOQResult"; + } + + private String getDtsCaptionFromUserSetting(List settingList) { + for (QueryUserSetting item : settingList) { + if (item != null && StringUtils.hasText(item.getDtsCaption())) { + return item.getDtsCaption(); + } + } + return ""; + } + + private String getDtsCaptionFromDefaultSetting(List settingList) { + for (QueryUserSettingDefault item : settingList) { + if (item != null && StringUtils.hasText(item.getDtsCaption())) { + return item.getDtsCaption(); + } + } + return ""; + } + + private boolean isRohsStatusField(String fieldName, String originalField) { + String normalizedFieldName = fieldName == null ? "" : fieldName.trim(); + if (ROHS_STATUS_FIELD_NAME.equalsIgnoreCase(normalizedFieldName) || + ROHS_STATUS_FIELD_NAME_UNDERSCORE.equalsIgnoreCase(normalizedFieldName)) { + return true; + } + String normalizedOriginalField = originalField == null ? "" : originalField.trim().toLowerCase(); + return normalizedOriginalField.endsWith(".rohs_status") || ROHS_STATUS_FIELD_NAME_UNDERSCORE.equals(normalizedOriginalField); + } } diff --git a/src/main/java/com/spring/modules/sift/service/impl/QueryUserSettingServiceImpl.java b/src/main/java/com/spring/modules/sift/service/impl/QueryUserSettingServiceImpl.java index 95d9e9f2..5d655b8d 100644 --- a/src/main/java/com/spring/modules/sift/service/impl/QueryUserSettingServiceImpl.java +++ b/src/main/java/com/spring/modules/sift/service/impl/QueryUserSettingServiceImpl.java @@ -61,7 +61,9 @@ public class QueryUserSettingServiceImpl extends ServiceImpl and a.status = #{params.status} + + and a.rohs_status = #{params.rohsStatus} + and d.node_id = #{params.nodeId}