CostAuditTaskInfoController.java 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package com.hotent.enterpriseDeclare.controller.opinion;
  2. import com.hotent.base.annotation.ApiGroup;
  3. import com.hotent.base.constants.ApiGroupConsts;
  4. import com.hotent.base.model.CommonResult;
  5. import com.hotent.base.util.StringUtil;
  6. import com.hotent.enterpriseDeclare.manager.CostSurveyTemplateUploadDataManager;
  7. import com.hotent.enterpriseDeclare.model.CostSurveyTemplateUploadData;
  8. import com.hotent.surveyinfo.dao.CostSurveyTemplateItemsDao;
  9. import com.hotent.surveyinfo.manager.CostSurveyTemplateHeadersManager;
  10. import com.hotent.surveyinfo.manager.CostSurveyTemplateUploadManager;
  11. import com.hotent.surveyinfo.manager.CostSurveyTemplateVersionManager;
  12. import com.hotent.surveyinfo.model.CostSurveyTemplateHeaders;
  13. import com.hotent.surveyinfo.model.CostSurveyTemplateItems;
  14. import com.hotent.surveyinfo.model.CostSurveyTemplateUpload;
  15. import com.hotent.surveyinfo.model.CostSurveyTemplateVersion;
  16. import com.hotent.surveyinfo.model.dto.CostItemData;
  17. import io.swagger.annotations.Api;
  18. import io.swagger.annotations.ApiOperation;
  19. import io.swagger.annotations.ApiParam;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.web.bind.annotation.*;
  22. import java.time.format.DateTimeFormatter;
  23. import java.util.*;
  24. import java.util.stream.Collectors;
  25. @Api(tags = "成本监审任务填报")
  26. @RestController
  27. @RequestMapping("/api/enterprise/castTaskInfo")
  28. @ApiGroup(group = {ApiGroupConsts.GROUP_COST})
  29. public class CostAuditTaskInfoController {
  30. @Autowired
  31. private CostSurveyTemplateUploadManager costSurveyTemplateUploadManager;
  32. @Autowired
  33. private CostSurveyTemplateItemsDao costSurveyTemplateItemsDao;
  34. @Autowired
  35. private CostSurveyTemplateVersionManager costSurveyTemplateVersionManager;
  36. @Autowired
  37. private CostSurveyTemplateHeadersManager costSurveyTemplateHeadersManager;
  38. @Autowired
  39. private CostSurveyTemplateUploadDataManager costSurveyTemplateUploadDataManager;
  40. /**
  41. * 企业报送-成本申报表-列表
  42. * @param catalogId 监管目录ID
  43. * @return 上传记录列表(包含是否必填、是否上传等信息)
  44. * @throws Exception
  45. */
  46. @GetMapping(value="/listUploadByCatalogId")
  47. @ApiOperation(value="根据监管目录ID查询成本调查表模板上传记录列表", httpMethod = "GET", notes = "根据监管目录ID查询成本调查表模板上传记录列表,包含是否必填、是否上传等信息")
  48. public CommonResult<List<CostSurveyTemplateUpload>> listUploadByCatalogId(
  49. @ApiParam(name="catalogId", value="监管目录ID", required = true)
  50. @RequestParam String catalogId) throws Exception {
  51. List<CostSurveyTemplateUpload> uploadList = costSurveyTemplateUploadManager.listByCatalogId(catalogId);
  52. return CommonResult.<List<CostSurveyTemplateUpload>>ok().value(uploadList);
  53. }
  54. /**
  55. * 企业报送-成本申报表-在线填报所需字段
  56. * @param surveyTemplateId 成本调查表id
  57. * @return 指标项数据列表(带key-value拼接)
  58. */
  59. @GetMapping(value = "/listItemsByCurrentTemplateId")
  60. @ApiOperation(value = "根据成本调查表现行模板id获取所有指标数据", httpMethod = "GET", notes = "根据成本调查表现行模板id获取所有指标数据(带key-value拼接)")
  61. public CommonResult<CostItemData> listItemsByCurrentTemplateId(
  62. @ApiParam(name = "surveyTemplateId", value = "关联的成本调查表ID", required = true)
  63. @RequestParam(required = true) String surveyTemplateId) throws Exception
  64. {
  65. //根据模板id 查询历史版本是现行的版本信息
  66. CostSurveyTemplateVersion versiontemplate = costSurveyTemplateVersionManager.selectCurrentVersion(surveyTemplateId);
  67. if (versiontemplate == null) {
  68. return CommonResult.<CostItemData>ok().value(new CostItemData());
  69. }
  70. List<CostSurveyTemplateItems> items = costSurveyTemplateItemsDao.selectBySurveyTemplateIdAndVersion(surveyTemplateId, versiontemplate.getId());
  71. List<CostSurveyTemplateHeaders> headlist = costSurveyTemplateHeadersManager.listVisibleBySurveyTemplateIdAndVersion(surveyTemplateId, versiontemplate.getId());
  72. String filename = headlist.stream().map(CostSurveyTemplateHeaders::getFieldName).collect(Collectors.joining(","));
  73. String filenids = headlist.stream().map(CostSurveyTemplateHeaders::getId).collect(Collectors.joining(","));
  74. // 按 orderNum 分组
  75. Map<Integer, List<CostSurveyTemplateItems>> groupedByHeadersId = items.stream()
  76. .collect(Collectors.groupingBy(CostSurveyTemplateItems::getOrderNum));
  77. List<Map<String, String>> result = new ArrayList<>();
  78. for (Map.Entry<Integer, List<CostSurveyTemplateItems>> entry : groupedByHeadersId.entrySet()) {
  79. List<CostSurveyTemplateItems> group = entry.getValue();
  80. if (group.isEmpty()) continue;
  81. // 主项(可以取第一个)
  82. CostSurveyTemplateItems mainItem = group.get(0);
  83. String headersIds = "";
  84. String itemIds = "";
  85. // 构造 key-value 映射
  86. Map<String, String> keyValueMap = new HashMap<>();
  87. for (CostSurveyTemplateItems item : group) {
  88. if (item.getRkey() != null && item.getRvalue() != null) {
  89. keyValueMap.put(item.getRkey(), item.getRvalue());
  90. headersIds += item.getHeadersId() + ",";
  91. itemIds += item.getId() + ",";
  92. }
  93. }
  94. if (!StringUtil.isEmpty(headersIds))
  95. headersIds = headersIds.substring(0, headersIds.length() - 1);
  96. if (!StringUtil.isEmpty(itemIds))
  97. itemIds = itemIds.substring(0, itemIds.length() - 1);
  98. //mainItem 放入到keyValueMap中 除了 key value 这两个字段
  99. keyValueMap.put("id", mainItem.getId());
  100. keyValueMap.put("surveyTemplateId", mainItem.getSurveyTemplateId());
  101. keyValueMap.put("versionId", mainItem.getVersionId());
  102. keyValueMap.put("headersId", mainItem.getHeadersId());
  103. keyValueMap.put("cellCode", mainItem.getCellCode());
  104. keyValueMap.put("calculationFormula", mainItem.getCalculationFormula());
  105. keyValueMap.put("unit", mainItem.getUnit());
  106. keyValueMap.put("orderNum", mainItem.getOrderNum().toString());
  107. keyValueMap.put("jsonStr", mainItem.getJsonStr());
  108. keyValueMap.put("headersIds", headersIds);
  109. keyValueMap.put("itemIds", itemIds);
  110. DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
  111. keyValueMap.put("createTime", mainItem.getCreateTime() != null ? mainItem.getCreateTime().format(formatter) : null);
  112. keyValueMap.put("updateTime", mainItem.getUpdateTime() != null ? mainItem.getUpdateTime().format(formatter) : null);
  113. keyValueMap.put("createBy", mainItem.getCreateBy());
  114. keyValueMap.put("updateBy", mainItem.getUpdateBy());
  115. keyValueMap.put("projectId", mainItem.getProjectId());
  116. keyValueMap.put("orderText", mainItem.getOrderText());
  117. keyValueMap.put("calculationTemplateId", mainItem.getCalculationTemplateId());
  118. keyValueMap.put("rowid", mainItem.getRowid());
  119. keyValueMap.put("parentid", mainItem.getParentid());
  120. result.add(keyValueMap);
  121. }
  122. CostItemData data = new CostItemData();
  123. data.setFixedFields(filename); // 存储动态字段名
  124. data.setItemlist(result);
  125. data.setFixedFieldids(filenids);
  126. return CommonResult.<CostItemData>ok().value(data);
  127. }
  128. /**
  129. * 企业报送-成本申报表-在线填报保持
  130. * @param dataList 数据列表(实体类列表,包含uploadId、auditedUnitId、rowid、rkey、rvalue等字段)
  131. * @return 保存结果
  132. */
  133. @PostMapping(value = "/saveUploadData")
  134. @ApiOperation(value = "保存成本调查表模板上传数据", httpMethod = "POST", notes = "保存成本调查表模板上传数据,直接使用实体类列表")
  135. public CommonResult<String> saveUploadData(
  136. @ApiParam(name = "dataList", value = "数据列表", required = true)
  137. @RequestBody List<CostSurveyTemplateUploadData> dataList) throws Exception {
  138. if (dataList == null || dataList.isEmpty()) {
  139. return CommonResult.<String>error().message("数据列表不能为空");
  140. }
  141. costSurveyTemplateUploadDataManager.saveData(dataList);
  142. return CommonResult.<String>ok().message("保存数据成功");
  143. }
  144. /**
  145. * 企业报送-成本申报表-在线填报记录查看
  146. * @param queryData 查询条件(实体类,包含uploadId和auditedUnitId)
  147. * @return 数据列表(实体类列表)
  148. */
  149. @PostMapping(value = "/getUploadData")
  150. @ApiOperation(value = "查询成本调查表模板上传数据", httpMethod = "POST", notes = "查询成本调查表模板上传数据,返回实体类列表")
  151. public CommonResult<List<CostSurveyTemplateUploadData>> getUploadData(
  152. @ApiParam(name = "queryData", value = "查询条件", required = true)
  153. @RequestBody CostSurveyTemplateUploadData queryData) throws Exception {
  154. if (queryData == null || StringUtil.isEmpty(queryData.getUploadId()) || StringUtil.isEmpty(queryData.getAuditedUnitId())) {
  155. return CommonResult.<List<CostSurveyTemplateUploadData>>error().message("uploadId和auditedUnitId不能为空");
  156. }
  157. List<CostSurveyTemplateUploadData> dataList = costSurveyTemplateUploadDataManager.listByUploadIdAndAuditedUnitId(queryData.getUploadId(), queryData.getAuditedUnitId());
  158. return CommonResult.<List<CostSurveyTemplateUploadData>>ok().value(dataList);
  159. }
  160. }