package com.spring.modules.sift.controller; import com.spring.common.utils.R; import com.spring.modules.sift.entity.QuerySavedDetail; import com.spring.modules.sift.entity.QuerySavedHeader; import com.spring.modules.sift.entity.QueryUserSetting; import com.spring.modules.sift.entity.QueryUserSettingDefault; import com.spring.modules.sift.service.QuerySavedDetailService; import com.spring.modules.sift.service.QuerySavedHeaderService; import com.spring.modules.sift.service.QueryUserSettingDefaultService; 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.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/sift") @Slf4j public class QueryUserSettingController { private static final String ROHS_MENU_ID = "112001"; private static final String TOOL_APPLY_MENU_ID = "106002"; private static final String TECHNICAL_SPEC_MENU_ID = "103002"; private static final String TECHNICAL_SPEC_REMARK_PAGE_FIELD_NAME = "remarkPage"; private static final String TECHNICAL_SPEC_REMARK_PAGE_FIELD_CAPTION = "备注区"; private static final String TECHNICAL_SPEC_REMARK_PAGE_ORIGINAL_FIELD = "a.remarkPage"; 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 TOOL_APPLY_PR_NO_FIELD_NAME = "prNo"; private static final String TOOL_APPLY_PO_NO_FIELD_NAME = "poNo"; private static final String TOOL_APPLY_SUPPLIER_NAME_FIELD_NAME = "supplierName"; private static final String TOOL_APPLY_ALL_COST_FIELD_NAME = "allCost"; private static final String TOOL_APPLY_PR_NO_FIELD_CAPTION = "IFS PR编号"; private static final String TOOL_APPLY_PO_NO_FIELD_CAPTION = "采购订单号"; private static final String TOOL_APPLY_SUPPLIER_NAME_FIELD_CAPTION = "厂商名称"; private static final String TOOL_APPLY_ALL_COST_FIELD_CAPTION = "总成本(元)"; private static final String TOOL_APPLY_PR_NO_ORIGINAL_FIELD = "a.prNo"; private static final String TOOL_APPLY_PO_NO_ORIGINAL_FIELD = "a.poNo"; private static final String TOOL_APPLY_SUPPLIER_NAME_ORIGINAL_FIELD = "a.supplierName"; private static final String TOOL_APPLY_ALL_COST_ORIGINAL_FIELD = "a.allCost"; private static final String STRING_DATA_TYPE = "S"; private static final String NUMBER_DATA_TYPE = "N"; @Autowired private QueryUserSettingDefaultService defaultService; @Autowired private QueryUserSettingService queryUserSettingService; @Autowired private QuerySavedHeaderService querySavedHeaderService; @Autowired private QuerySavedDetailService querySavedDetailService; @GetMapping("/list") public R searchUserSettingList(String menuId,String userId){ List queryUserSettingList = queryUserSettingService.searchQueryUserSetting(menuId, userId); if (!queryUserSettingList.isEmpty()){ appendRohsStatusFieldForUserSetting(menuId, userId, queryUserSettingList); appendToolApplyFieldsForUserSetting(menuId, userId, queryUserSettingList); appendTechnicalSpecRemarkPageFieldForUserSetting(menuId, userId, queryUserSettingList); return R.ok().put("rows",queryUserSettingList); } List defaultList = defaultService.searchQueryUserSettingDefault(menuId); appendRohsStatusFieldForDefaultSetting(menuId, defaultList); appendToolApplyFieldsForDefaultSetting(menuId, defaultList); appendTechnicalSpecRemarkPageFieldForDefaultSetting(menuId, defaultList); return R.ok().put("rows",defaultList); } @PostMapping("/saveOrUpdateBatch") public R saveOrUpdateBatch(@RequestBody List queryUserSettingList){ queryUserSettingService.saveOrUpdateBatch(queryUserSettingList); return R.ok().put("msg","保存成功!"); } @GetMapping("/recording") public R searchQuerySavedRecord(String menuId,String userId,Integer itemNo){ List querySavedVoList = querySavedDetailService.searchQuerySavedDetail(menuId,userId,itemNo); return R.ok().put("rows",querySavedVoList); } @GetMapping("/recordList") public R searchQuerySavedRecordList(String menuId,String userId){ List savedHeaderList = querySavedHeaderService.searchQuerySavedHeader(menuId, userId); return R.ok().put("rows",savedHeaderList); } @PostMapping("/saveRecord") public R saveQueryHeaderDetail(@RequestBody QuerySavedVo querySavedVo){ querySavedHeaderService.saveQueryHeader(querySavedVo); return R.ok().put("msg","操作成功"); } @PostMapping("/record/remove") public R removeQuerySavedRecordHeader(@RequestBody QuerySavedHeader querySavedHeader){ querySavedHeaderService.removeQuerySavedHeader(querySavedHeader); return R.ok().put("msg","删除成功"); } @PostMapping("/record/update") public R updateQuerySavedRecordHeader(@RequestBody QuerySavedVo querySavedVo){ 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 void appendToolApplyFieldsForUserSetting(String menuId, String userId, List settingList) { if (!TOOL_APPLY_MENU_ID.equals(menuId) || settingList == null) { return; } appendToolApplyFieldForUserSetting(menuId, userId, settingList, TOOL_APPLY_PR_NO_FIELD_NAME, TOOL_APPLY_PR_NO_FIELD_CAPTION, TOOL_APPLY_PR_NO_ORIGINAL_FIELD, STRING_DATA_TYPE); appendToolApplyFieldForUserSetting(menuId, userId, settingList, TOOL_APPLY_PO_NO_FIELD_NAME, TOOL_APPLY_PO_NO_FIELD_CAPTION, TOOL_APPLY_PO_NO_ORIGINAL_FIELD, STRING_DATA_TYPE); appendToolApplyFieldForUserSetting(menuId, userId, settingList, TOOL_APPLY_SUPPLIER_NAME_FIELD_NAME, TOOL_APPLY_SUPPLIER_NAME_FIELD_CAPTION, TOOL_APPLY_SUPPLIER_NAME_ORIGINAL_FIELD, STRING_DATA_TYPE); appendToolApplyFieldForUserSetting(menuId, userId, settingList, TOOL_APPLY_ALL_COST_FIELD_NAME, TOOL_APPLY_ALL_COST_FIELD_CAPTION, TOOL_APPLY_ALL_COST_ORIGINAL_FIELD, NUMBER_DATA_TYPE); } private void appendToolApplyFieldsForDefaultSetting(String menuId, List settingList) { if (!TOOL_APPLY_MENU_ID.equals(menuId) || settingList == null) { return; } appendToolApplyFieldForDefaultSetting(menuId, settingList, TOOL_APPLY_PR_NO_FIELD_NAME, TOOL_APPLY_PR_NO_FIELD_CAPTION, TOOL_APPLY_PR_NO_ORIGINAL_FIELD, STRING_DATA_TYPE); appendToolApplyFieldForDefaultSetting(menuId, settingList, TOOL_APPLY_PO_NO_FIELD_NAME, TOOL_APPLY_PO_NO_FIELD_CAPTION, TOOL_APPLY_PO_NO_ORIGINAL_FIELD, STRING_DATA_TYPE); appendToolApplyFieldForDefaultSetting(menuId, settingList, TOOL_APPLY_SUPPLIER_NAME_FIELD_NAME, TOOL_APPLY_SUPPLIER_NAME_FIELD_CAPTION, TOOL_APPLY_SUPPLIER_NAME_ORIGINAL_FIELD, STRING_DATA_TYPE); appendToolApplyFieldForDefaultSetting(menuId, settingList, TOOL_APPLY_ALL_COST_FIELD_NAME, TOOL_APPLY_ALL_COST_FIELD_CAPTION, TOOL_APPLY_ALL_COST_ORIGINAL_FIELD, NUMBER_DATA_TYPE); } private void appendTechnicalSpecRemarkPageFieldForUserSetting(String menuId, String userId, List settingList) { if (!TECHNICAL_SPEC_MENU_ID.equals(menuId) || settingList == null) { return; } appendToolApplyFieldForUserSetting(menuId, userId, settingList, TECHNICAL_SPEC_REMARK_PAGE_FIELD_NAME, TECHNICAL_SPEC_REMARK_PAGE_FIELD_CAPTION, TECHNICAL_SPEC_REMARK_PAGE_ORIGINAL_FIELD, STRING_DATA_TYPE); } private void appendTechnicalSpecRemarkPageFieldForDefaultSetting(String menuId, List settingList) { if (!TECHNICAL_SPEC_MENU_ID.equals(menuId) || settingList == null) { return; } appendToolApplyFieldForDefaultSetting(menuId, settingList, TECHNICAL_SPEC_REMARK_PAGE_FIELD_NAME, TECHNICAL_SPEC_REMARK_PAGE_FIELD_CAPTION, TECHNICAL_SPEC_REMARK_PAGE_ORIGINAL_FIELD, STRING_DATA_TYPE); } private void appendToolApplyFieldForUserSetting(String menuId, String userId, List settingList, String fieldName, String fieldCaption, String originalField, String dataType) { if (containsUserSettingField(settingList, fieldName, originalField)) { return; } QueryUserSetting row = new QueryUserSetting(); row.setMenuId(menuId); row.setUserId(userId); row.setDtsName(getDtsNameFromUserSetting(settingList)); row.setDtsCaption(getDtsCaptionFromUserSetting(settingList)); row.setFieldName(fieldName); row.setFieldCaption(fieldCaption); row.setOriginalField(originalField); row.setDataType(dataType); row.setVisible("Y"); row.setShowSeqNo(getNextSeqFromUserSetting(settingList)); row.setSymbol(""); row.setFormula(""); row.setSortBy(""); row.setOrderSeq(""); settingList.add(row); } private void appendToolApplyFieldForDefaultSetting(String menuId, List settingList, String fieldName, String fieldCaption, String originalField, String dataType) { if (containsDefaultSettingField(settingList, fieldName, originalField)) { return; } QueryUserSettingDefault row = new QueryUserSettingDefault(); row.setMenuId(menuId); row.setDtsName(getDtsNameFromDefaultSetting(settingList)); row.setDtsCaption(getDtsCaptionFromDefaultSetting(settingList)); row.setFieldName(fieldName); row.setFieldCaption(fieldCaption); row.setOriginalField(originalField); row.setDataType(dataType); row.setVisible("Y"); row.setShowSeqNo(getNextSeqFromDefaultSetting(settingList)); row.setSymbol(""); row.setFormula(""); row.setSortBy(""); row.setOrderSeq(""); settingList.add(row); } private boolean containsUserSettingField(List settingList, String fieldName, String originalField) { String normalizedFieldName = normalizeSettingField(fieldName); String normalizedOriginalField = normalizeSettingField(originalField); for (QueryUserSetting item : settingList) { if (item == null) { continue; } if (normalizedFieldName.equals(normalizeSettingField(item.getFieldName())) || normalizedOriginalField.equals(normalizeSettingField(item.getOriginalField()))) { return true; } } return false; } private boolean containsDefaultSettingField(List settingList, String fieldName, String originalField) { String normalizedFieldName = normalizeSettingField(fieldName); String normalizedOriginalField = normalizeSettingField(originalField); for (QueryUserSettingDefault item : settingList) { if (item == null) { continue; } if (normalizedFieldName.equals(normalizeSettingField(item.getFieldName())) || normalizedOriginalField.equals(normalizeSettingField(item.getOriginalField()))) { return true; } } return false; } private String normalizeSettingField(String value) { return value == null ? "" : value.trim().toLowerCase(); } 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); } }