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
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);
|
|
}
|
|
}
|