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

3 years ago
​
​
​
3 years ago
​
​
3 years ago
​
3 years ago
​
​
3 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
3 years ago
​
​
​
​
​
​
​
​
​
​
​
3 years ago
​
​
​
​
3 years ago
​
​
3 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
2 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
3 years ago
  1. package com.spring.modules.sift.controller;
  2. import com.spring.common.utils.R;
  3. import com.spring.modules.sift.entity.QuerySavedDetail;
  4. import com.spring.modules.sift.entity.QuerySavedHeader;
  5. import com.spring.modules.sift.entity.QueryUserSetting;
  6. import com.spring.modules.sift.entity.QueryUserSettingDefault;
  7. import com.spring.modules.sift.service.QuerySavedDetailService;
  8. import com.spring.modules.sift.service.QuerySavedHeaderService;
  9. import com.spring.modules.sift.service.QueryUserSettingDefaultService;
  10. import com.spring.modules.sift.service.QueryUserSettingService;
  11. import com.spring.modules.sift.vo.QuerySavedVo;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.util.StringUtils;
  15. import org.springframework.web.bind.annotation.*;
  16. import java.util.List;
  17. @RestController
  18. @RequestMapping("/sift")
  19. @Slf4j
  20. public class QueryUserSettingController {
  21. private static final String ROHS_MENU_ID = "112001";
  22. private static final String TOOL_APPLY_MENU_ID = "106002";
  23. private static final String TECHNICAL_SPEC_MENU_ID = "103002";
  24. private static final String TECHNICAL_SPEC_REMARK_PAGE_FIELD_NAME = "remarkPage";
  25. private static final String TECHNICAL_SPEC_REMARK_PAGE_FIELD_CAPTION = "备注区";
  26. private static final String TECHNICAL_SPEC_REMARK_PAGE_ORIGINAL_FIELD = "a.remarkPage";
  27. private static final String ROHS_STATUS_FIELD_NAME = "rohsStatus";
  28. private static final String ROHS_STATUS_FIELD_NAME_UNDERSCORE = "rohs_status";
  29. private static final String ROHS_STATUS_FIELD_CAPTION = "状态/RoHS Status";
  30. private static final String ROHS_STATUS_ORIGINAL_FIELD = "a.rohs_status";
  31. private static final String TOOL_APPLY_PR_NO_FIELD_NAME = "prNo";
  32. private static final String TOOL_APPLY_PO_NO_FIELD_NAME = "poNo";
  33. private static final String TOOL_APPLY_SUPPLIER_NAME_FIELD_NAME = "supplierName";
  34. private static final String TOOL_APPLY_ALL_COST_FIELD_NAME = "allCost";
  35. private static final String TOOL_APPLY_PR_NO_FIELD_CAPTION = "IFS PR编号";
  36. private static final String TOOL_APPLY_PO_NO_FIELD_CAPTION = "采购订单号";
  37. private static final String TOOL_APPLY_SUPPLIER_NAME_FIELD_CAPTION = "厂商名称";
  38. private static final String TOOL_APPLY_ALL_COST_FIELD_CAPTION = "总成本(元)";
  39. private static final String TOOL_APPLY_PR_NO_ORIGINAL_FIELD = "a.prNo";
  40. private static final String TOOL_APPLY_PO_NO_ORIGINAL_FIELD = "a.poNo";
  41. private static final String TOOL_APPLY_SUPPLIER_NAME_ORIGINAL_FIELD = "a.supplierName";
  42. private static final String TOOL_APPLY_ALL_COST_ORIGINAL_FIELD = "a.allCost";
  43. private static final String STRING_DATA_TYPE = "S";
  44. private static final String NUMBER_DATA_TYPE = "N";
  45. @Autowired
  46. private QueryUserSettingDefaultService defaultService;
  47. @Autowired
  48. private QueryUserSettingService queryUserSettingService;
  49. @Autowired
  50. private QuerySavedHeaderService querySavedHeaderService;
  51. @Autowired
  52. private QuerySavedDetailService querySavedDetailService;
  53. @GetMapping("/list")
  54. public R searchUserSettingList(String menuId,String userId){
  55. List<QueryUserSetting> queryUserSettingList = queryUserSettingService.searchQueryUserSetting(menuId, userId);
  56. if (!queryUserSettingList.isEmpty()){
  57. appendRohsStatusFieldForUserSetting(menuId, userId, queryUserSettingList);
  58. appendToolApplyFieldsForUserSetting(menuId, userId, queryUserSettingList);
  59. appendTechnicalSpecRemarkPageFieldForUserSetting(menuId, userId, queryUserSettingList);
  60. return R.ok().put("rows",queryUserSettingList);
  61. }
  62. List<QueryUserSettingDefault> defaultList = defaultService.searchQueryUserSettingDefault(menuId);
  63. appendRohsStatusFieldForDefaultSetting(menuId, defaultList);
  64. appendToolApplyFieldsForDefaultSetting(menuId, defaultList);
  65. appendTechnicalSpecRemarkPageFieldForDefaultSetting(menuId, defaultList);
  66. return R.ok().put("rows",defaultList);
  67. }
  68. @PostMapping("/saveOrUpdateBatch")
  69. public R saveOrUpdateBatch(@RequestBody List<QueryUserSetting> queryUserSettingList){
  70. queryUserSettingService.saveOrUpdateBatch(queryUserSettingList);
  71. return R.ok().put("msg","保存成功!");
  72. }
  73. @GetMapping("/recording")
  74. public R searchQuerySavedRecord(String menuId,String userId,Integer itemNo){
  75. List<QuerySavedDetail> querySavedVoList = querySavedDetailService.searchQuerySavedDetail(menuId,userId,itemNo);
  76. return R.ok().put("rows",querySavedVoList);
  77. }
  78. @GetMapping("/recordList")
  79. public R searchQuerySavedRecordList(String menuId,String userId){
  80. List<QuerySavedHeader> savedHeaderList = querySavedHeaderService.searchQuerySavedHeader(menuId, userId);
  81. return R.ok().put("rows",savedHeaderList);
  82. }
  83. @PostMapping("/saveRecord")
  84. public R saveQueryHeaderDetail(@RequestBody QuerySavedVo querySavedVo){
  85. querySavedHeaderService.saveQueryHeader(querySavedVo);
  86. return R.ok().put("msg","操作成功");
  87. }
  88. @PostMapping("/record/remove")
  89. public R removeQuerySavedRecordHeader(@RequestBody QuerySavedHeader querySavedHeader){
  90. querySavedHeaderService.removeQuerySavedHeader(querySavedHeader);
  91. return R.ok().put("msg","删除成功");
  92. }
  93. @PostMapping("/record/update")
  94. public R updateQuerySavedRecordHeader(@RequestBody QuerySavedVo querySavedVo){
  95. querySavedHeaderService.updateQuerySavedHeader(querySavedVo);
  96. return R.ok("保存成功");
  97. }
  98. private void appendRohsStatusFieldForUserSetting(String menuId, String userId, List<QueryUserSetting> settingList) {
  99. if (!ROHS_MENU_ID.equals(menuId) || settingList == null) {
  100. return;
  101. }
  102. boolean exists = settingList.stream().anyMatch(item -> isRohsStatusField(item.getFieldName(), item.getOriginalField()));
  103. if (exists) {
  104. return;
  105. }
  106. QueryUserSetting row = new QueryUserSetting();
  107. row.setMenuId(menuId);
  108. row.setUserId(userId);
  109. row.setDtsName(getDtsNameFromUserSetting(settingList));
  110. row.setDtsCaption(getDtsCaptionFromUserSetting(settingList));
  111. row.setFieldName(ROHS_STATUS_FIELD_NAME);
  112. row.setFieldCaption(ROHS_STATUS_FIELD_CAPTION);
  113. row.setOriginalField(ROHS_STATUS_ORIGINAL_FIELD);
  114. row.setDataType(STRING_DATA_TYPE);
  115. row.setVisible("Y");
  116. row.setShowSeqNo(getNextSeqFromUserSetting(settingList));
  117. row.setSymbol("");
  118. row.setFormula("");
  119. row.setSortBy("");
  120. row.setOrderSeq("");
  121. settingList.add(row);
  122. }
  123. private void appendRohsStatusFieldForDefaultSetting(String menuId, List<QueryUserSettingDefault> settingList) {
  124. if (!ROHS_MENU_ID.equals(menuId) || settingList == null) {
  125. return;
  126. }
  127. boolean exists = settingList.stream().anyMatch(item -> isRohsStatusField(item.getFieldName(), item.getOriginalField()));
  128. if (exists) {
  129. return;
  130. }
  131. QueryUserSettingDefault row = new QueryUserSettingDefault();
  132. row.setMenuId(menuId);
  133. row.setDtsName(getDtsNameFromDefaultSetting(settingList));
  134. row.setDtsCaption(getDtsCaptionFromDefaultSetting(settingList));
  135. row.setFieldName(ROHS_STATUS_FIELD_NAME);
  136. row.setFieldCaption(ROHS_STATUS_FIELD_CAPTION);
  137. row.setOriginalField(ROHS_STATUS_ORIGINAL_FIELD);
  138. row.setDataType(STRING_DATA_TYPE);
  139. row.setVisible("Y");
  140. row.setShowSeqNo(getNextSeqFromDefaultSetting(settingList));
  141. row.setSymbol("");
  142. row.setFormula("");
  143. row.setSortBy("");
  144. row.setOrderSeq("");
  145. settingList.add(row);
  146. }
  147. private void appendToolApplyFieldsForUserSetting(String menuId, String userId, List<QueryUserSetting> settingList) {
  148. if (!TOOL_APPLY_MENU_ID.equals(menuId) || settingList == null) {
  149. return;
  150. }
  151. appendToolApplyFieldForUserSetting(menuId, userId, settingList,
  152. TOOL_APPLY_PR_NO_FIELD_NAME, TOOL_APPLY_PR_NO_FIELD_CAPTION, TOOL_APPLY_PR_NO_ORIGINAL_FIELD, STRING_DATA_TYPE);
  153. appendToolApplyFieldForUserSetting(menuId, userId, settingList,
  154. TOOL_APPLY_PO_NO_FIELD_NAME, TOOL_APPLY_PO_NO_FIELD_CAPTION, TOOL_APPLY_PO_NO_ORIGINAL_FIELD, STRING_DATA_TYPE);
  155. appendToolApplyFieldForUserSetting(menuId, userId, settingList,
  156. TOOL_APPLY_SUPPLIER_NAME_FIELD_NAME, TOOL_APPLY_SUPPLIER_NAME_FIELD_CAPTION, TOOL_APPLY_SUPPLIER_NAME_ORIGINAL_FIELD, STRING_DATA_TYPE);
  157. appendToolApplyFieldForUserSetting(menuId, userId, settingList,
  158. TOOL_APPLY_ALL_COST_FIELD_NAME, TOOL_APPLY_ALL_COST_FIELD_CAPTION, TOOL_APPLY_ALL_COST_ORIGINAL_FIELD, NUMBER_DATA_TYPE);
  159. }
  160. private void appendToolApplyFieldsForDefaultSetting(String menuId, List<QueryUserSettingDefault> settingList) {
  161. if (!TOOL_APPLY_MENU_ID.equals(menuId) || settingList == null) {
  162. return;
  163. }
  164. appendToolApplyFieldForDefaultSetting(menuId, settingList,
  165. TOOL_APPLY_PR_NO_FIELD_NAME, TOOL_APPLY_PR_NO_FIELD_CAPTION, TOOL_APPLY_PR_NO_ORIGINAL_FIELD, STRING_DATA_TYPE);
  166. appendToolApplyFieldForDefaultSetting(menuId, settingList,
  167. TOOL_APPLY_PO_NO_FIELD_NAME, TOOL_APPLY_PO_NO_FIELD_CAPTION, TOOL_APPLY_PO_NO_ORIGINAL_FIELD, STRING_DATA_TYPE);
  168. appendToolApplyFieldForDefaultSetting(menuId, settingList,
  169. TOOL_APPLY_SUPPLIER_NAME_FIELD_NAME, TOOL_APPLY_SUPPLIER_NAME_FIELD_CAPTION, TOOL_APPLY_SUPPLIER_NAME_ORIGINAL_FIELD, STRING_DATA_TYPE);
  170. appendToolApplyFieldForDefaultSetting(menuId, settingList,
  171. TOOL_APPLY_ALL_COST_FIELD_NAME, TOOL_APPLY_ALL_COST_FIELD_CAPTION, TOOL_APPLY_ALL_COST_ORIGINAL_FIELD, NUMBER_DATA_TYPE);
  172. }
  173. private void appendTechnicalSpecRemarkPageFieldForUserSetting(String menuId, String userId, List<QueryUserSetting> settingList) {
  174. if (!TECHNICAL_SPEC_MENU_ID.equals(menuId) || settingList == null) {
  175. return;
  176. }
  177. appendToolApplyFieldForUserSetting(menuId, userId, settingList,
  178. TECHNICAL_SPEC_REMARK_PAGE_FIELD_NAME, TECHNICAL_SPEC_REMARK_PAGE_FIELD_CAPTION,
  179. TECHNICAL_SPEC_REMARK_PAGE_ORIGINAL_FIELD, STRING_DATA_TYPE);
  180. }
  181. private void appendTechnicalSpecRemarkPageFieldForDefaultSetting(String menuId, List<QueryUserSettingDefault> settingList) {
  182. if (!TECHNICAL_SPEC_MENU_ID.equals(menuId) || settingList == null) {
  183. return;
  184. }
  185. appendToolApplyFieldForDefaultSetting(menuId, settingList,
  186. TECHNICAL_SPEC_REMARK_PAGE_FIELD_NAME, TECHNICAL_SPEC_REMARK_PAGE_FIELD_CAPTION,
  187. TECHNICAL_SPEC_REMARK_PAGE_ORIGINAL_FIELD, STRING_DATA_TYPE);
  188. }
  189. private void appendToolApplyFieldForUserSetting(String menuId, String userId, List<QueryUserSetting> settingList,
  190. String fieldName, String fieldCaption, String originalField, String dataType) {
  191. if (containsUserSettingField(settingList, fieldName, originalField)) {
  192. return;
  193. }
  194. QueryUserSetting row = new QueryUserSetting();
  195. row.setMenuId(menuId);
  196. row.setUserId(userId);
  197. row.setDtsName(getDtsNameFromUserSetting(settingList));
  198. row.setDtsCaption(getDtsCaptionFromUserSetting(settingList));
  199. row.setFieldName(fieldName);
  200. row.setFieldCaption(fieldCaption);
  201. row.setOriginalField(originalField);
  202. row.setDataType(dataType);
  203. row.setVisible("Y");
  204. row.setShowSeqNo(getNextSeqFromUserSetting(settingList));
  205. row.setSymbol("");
  206. row.setFormula("");
  207. row.setSortBy("");
  208. row.setOrderSeq("");
  209. settingList.add(row);
  210. }
  211. private void appendToolApplyFieldForDefaultSetting(String menuId, List<QueryUserSettingDefault> settingList,
  212. String fieldName, String fieldCaption, String originalField, String dataType) {
  213. if (containsDefaultSettingField(settingList, fieldName, originalField)) {
  214. return;
  215. }
  216. QueryUserSettingDefault row = new QueryUserSettingDefault();
  217. row.setMenuId(menuId);
  218. row.setDtsName(getDtsNameFromDefaultSetting(settingList));
  219. row.setDtsCaption(getDtsCaptionFromDefaultSetting(settingList));
  220. row.setFieldName(fieldName);
  221. row.setFieldCaption(fieldCaption);
  222. row.setOriginalField(originalField);
  223. row.setDataType(dataType);
  224. row.setVisible("Y");
  225. row.setShowSeqNo(getNextSeqFromDefaultSetting(settingList));
  226. row.setSymbol("");
  227. row.setFormula("");
  228. row.setSortBy("");
  229. row.setOrderSeq("");
  230. settingList.add(row);
  231. }
  232. private boolean containsUserSettingField(List<QueryUserSetting> settingList, String fieldName, String originalField) {
  233. String normalizedFieldName = normalizeSettingField(fieldName);
  234. String normalizedOriginalField = normalizeSettingField(originalField);
  235. for (QueryUserSetting item : settingList) {
  236. if (item == null) {
  237. continue;
  238. }
  239. if (normalizedFieldName.equals(normalizeSettingField(item.getFieldName()))
  240. || normalizedOriginalField.equals(normalizeSettingField(item.getOriginalField()))) {
  241. return true;
  242. }
  243. }
  244. return false;
  245. }
  246. private boolean containsDefaultSettingField(List<QueryUserSettingDefault> settingList, String fieldName, String originalField) {
  247. String normalizedFieldName = normalizeSettingField(fieldName);
  248. String normalizedOriginalField = normalizeSettingField(originalField);
  249. for (QueryUserSettingDefault item : settingList) {
  250. if (item == null) {
  251. continue;
  252. }
  253. if (normalizedFieldName.equals(normalizeSettingField(item.getFieldName()))
  254. || normalizedOriginalField.equals(normalizeSettingField(item.getOriginalField()))) {
  255. return true;
  256. }
  257. }
  258. return false;
  259. }
  260. private String normalizeSettingField(String value) {
  261. return value == null ? "" : value.trim().toLowerCase();
  262. }
  263. private Integer getNextSeqFromUserSetting(List<QueryUserSetting> settingList) {
  264. int max = 0;
  265. for (QueryUserSetting item : settingList) {
  266. if (item != null && item.getShowSeqNo() != null && item.getShowSeqNo() > max) {
  267. max = item.getShowSeqNo();
  268. }
  269. }
  270. return max + 1;
  271. }
  272. private Integer getNextSeqFromDefaultSetting(List<QueryUserSettingDefault> settingList) {
  273. int max = 0;
  274. for (QueryUserSettingDefault item : settingList) {
  275. if (item != null && item.getShowSeqNo() != null && item.getShowSeqNo() > max) {
  276. max = item.getShowSeqNo();
  277. }
  278. }
  279. return max + 1;
  280. }
  281. private String getDtsNameFromUserSetting(List<QueryUserSetting> settingList) {
  282. for (QueryUserSetting item : settingList) {
  283. if (item != null && StringUtils.hasText(item.getDtsName())) {
  284. return item.getDtsName();
  285. }
  286. }
  287. return "ADOQResult";
  288. }
  289. private String getDtsNameFromDefaultSetting(List<QueryUserSettingDefault> settingList) {
  290. for (QueryUserSettingDefault item : settingList) {
  291. if (item != null && StringUtils.hasText(item.getDtsName())) {
  292. return item.getDtsName();
  293. }
  294. }
  295. return "ADOQResult";
  296. }
  297. private String getDtsCaptionFromUserSetting(List<QueryUserSetting> settingList) {
  298. for (QueryUserSetting item : settingList) {
  299. if (item != null && StringUtils.hasText(item.getDtsCaption())) {
  300. return item.getDtsCaption();
  301. }
  302. }
  303. return "";
  304. }
  305. private String getDtsCaptionFromDefaultSetting(List<QueryUserSettingDefault> settingList) {
  306. for (QueryUserSettingDefault item : settingList) {
  307. if (item != null && StringUtils.hasText(item.getDtsCaption())) {
  308. return item.getDtsCaption();
  309. }
  310. }
  311. return "";
  312. }
  313. private boolean isRohsStatusField(String fieldName, String originalField) {
  314. String normalizedFieldName = fieldName == null ? "" : fieldName.trim();
  315. if (ROHS_STATUS_FIELD_NAME.equalsIgnoreCase(normalizedFieldName) ||
  316. ROHS_STATUS_FIELD_NAME_UNDERSCORE.equalsIgnoreCase(normalizedFieldName)) {
  317. return true;
  318. }
  319. String normalizedOriginalField = originalField == null ? "" : originalField.trim().toLowerCase();
  320. return normalizedOriginalField.endsWith(".rohs_status") || ROHS_STATUS_FIELD_NAME_UNDERSCORE.equals(normalizedOriginalField);
  321. }
  322. }