You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

354 lines
17 KiB

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<QueryUserSetting> 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<QueryUserSettingDefault> 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<QueryUserSetting> queryUserSettingList){
queryUserSettingService.saveOrUpdateBatch(queryUserSettingList);
return R.ok().put("msg","保存成功!");
}
@GetMapping("/recording")
public R searchQuerySavedRecord(String menuId,String userId,Integer itemNo){
List<QuerySavedDetail> querySavedVoList = querySavedDetailService.searchQuerySavedDetail(menuId,userId,itemNo);
return R.ok().put("rows",querySavedVoList);
}
@GetMapping("/recordList")
public R searchQuerySavedRecordList(String menuId,String userId){
List<QuerySavedHeader> 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<QueryUserSetting> 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<QueryUserSettingDefault> 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<QueryUserSetting> 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<QueryUserSettingDefault> 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<QueryUserSetting> 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<QueryUserSettingDefault> 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<QueryUserSetting> 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<QueryUserSettingDefault> 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<QueryUserSetting> 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<QueryUserSettingDefault> 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<QueryUserSetting> 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<QueryUserSettingDefault> 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<QueryUserSetting> settingList) {
for (QueryUserSetting item : settingList) {
if (item != null && StringUtils.hasText(item.getDtsName())) {
return item.getDtsName();
}
}
return "ADOQResult";
}
private String getDtsNameFromDefaultSetting(List<QueryUserSettingDefault> settingList) {
for (QueryUserSettingDefault item : settingList) {
if (item != null && StringUtils.hasText(item.getDtsName())) {
return item.getDtsName();
}
}
return "ADOQResult";
}
private String getDtsCaptionFromUserSetting(List<QueryUserSetting> settingList) {
for (QueryUserSetting item : settingList) {
if (item != null && StringUtils.hasText(item.getDtsCaption())) {
return item.getDtsCaption();
}
}
return "";
}
private String getDtsCaptionFromDefaultSetting(List<QueryUserSettingDefault> 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);
}
}