CostSurveyFdTemplateHeadersController.java 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. package com.hotent.surveyinfo.controller;
  2. import com.hotent.base.annotation.ApiGroup;
  3. import com.hotent.base.constants.ApiGroupConsts;
  4. import com.hotent.base.controller.BaseController;
  5. import com.hotent.base.model.CommonResult;
  6. import com.hotent.base.util.PinyinUtil;
  7. import com.hotent.base.util.StringUtil;
  8. import com.hotent.surveyinfo.dao.CostSurveyFdTemplateHeadersDao;
  9. import com.hotent.surveyinfo.dao.CostSurveyTemplateHeadersDao;
  10. import com.hotent.surveyinfo.manager.*;
  11. import com.hotent.surveyinfo.model.*;
  12. import com.hotent.surveyinfo.model.dto.BatchFdHeadersItemsRequest;
  13. import com.hotent.surveyinfo.model.dto.BatchHeadersItemsRequest;
  14. import com.hotent.uc.api.model.IUser;
  15. import com.hotent.uc.util.ContextUtil;
  16. import io.swagger.annotations.Api;
  17. import io.swagger.annotations.ApiOperation;
  18. import io.swagger.annotations.ApiParam;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.web.bind.annotation.*;
  21. import java.time.LocalDateTime;
  22. import java.util.List;
  23. import java.util.UUID;
  24. /**
  25. * 财务数据表头子表 前端控制器
  26. *
  27. * @company 山西清众科技股份有限公司
  28. * @author 超级管理员
  29. * @since 2025-09-19
  30. */
  31. @RestController
  32. @RequestMapping("/costSurveyFdTemplateHeaders/v1/")
  33. @Api(tags = "财务数据表头")
  34. @ApiGroup(group = {ApiGroupConsts.GROUP_COST})
  35. public class CostSurveyFdTemplateHeadersController extends BaseController<CostSurveyFdTemplateHeadersManager, CostSurveyFdTemplateHeaders> {
  36. @Autowired
  37. CostSurveyFdTemplateHeadersDao costSurveyTemplateHeadersDao;
  38. @Autowired
  39. CostSurveyFdTemplateManager basemanager;
  40. @Autowired
  41. private CostSurveyFdTemplateItemsManager costSurveyTemplateItemsManager;
  42. @Autowired
  43. CostSurveyFdTemplateVersionManager costSurveyTemplateVersionManager;
  44. /**
  45. * 根据财务数据表id获取财务数据表头子表数据列表
  46. * @param surveyTemplateId
  47. * @return
  48. */
  49. @ApiOperation(value="根据财务数据表id获取财务数据表头子表数据列表", httpMethod = "GET", notes = "根据财务数据表id获取财务数据表头子表数据列表")
  50. @GetMapping("/getlistBySurveyTemplateId")
  51. public CommonResult<List<CostSurveyFdTemplateHeaders>> getlistBySurveyTemplateId(
  52. @RequestParam String surveyTemplateId) {
  53. List<CostSurveyFdTemplateHeaders> headersList =
  54. costSurveyTemplateHeadersDao.selectBySurveyTemplateId(surveyTemplateId
  55. );
  56. return CommonResult.<List<CostSurveyFdTemplateHeaders>>ok().value(headersList);
  57. }
  58. /**
  59. * 根据财务数据表id和版本号获取表头数据列表
  60. * @param surveyTemplateId 财务数据表id
  61. * @param versionId 版本号
  62. * @return 表头数据列表
  63. */
  64. @ApiOperation(value="根据财务数据表id和版本id获取表头数据列表", httpMethod = "GET", notes = "根据财务数据表id和版本号获取表头数据列表")
  65. @GetMapping("/getlistBySurveyTemplateIdAndVersion")
  66. public CommonResult<List<CostSurveyFdTemplateHeaders>> getlistBySurveyTemplateIdAndVersion(
  67. @ApiParam(name="surveyTemplateId",value="财务数据表id", required = true) @RequestParam String surveyTemplateId,
  68. @ApiParam(name="versionId",value="版本id", required = false) @RequestParam(required = false) String versionId) {
  69. List<CostSurveyFdTemplateHeaders> headersList =
  70. costSurveyTemplateHeadersDao.selectBySurveyTemplateIdAndVersion(surveyTemplateId, versionId);
  71. return CommonResult.<List<CostSurveyFdTemplateHeaders>>ok().value(headersList);
  72. }
  73. /**
  74. * 根据财务数据表id获取现行版的表头数据列表
  75. * @param surveyTemplateId 财务数据表id
  76. * @return 表头数据列表
  77. */
  78. @ApiOperation(value="根据财务数据表id获取现行版的表头数据列表", httpMethod = "GET", notes = "根据财务数据表id和版本号获取表头数据列表")
  79. @GetMapping("/getlistBySurveyTemplateIdcurrentversion")
  80. public CommonResult<List<CostSurveyFdTemplateHeaders>> getlistBySurveyTemplateIdcurrentversion(
  81. @ApiParam(name="surveyTemplateId",value="财务数据表id", required = true) @RequestParam String surveyTemplateId) {
  82. //获取现行版本号
  83. CostSurveyFdTemplateVersion version = costSurveyTemplateVersionManager.selectCurrentVersion(surveyTemplateId);
  84. List<CostSurveyFdTemplateHeaders> headersList =
  85. costSurveyTemplateHeadersDao.selectBySurveyTemplateIdAndVersion(surveyTemplateId, version.getId());
  86. return CommonResult.<List<CostSurveyFdTemplateHeaders>>ok().value(headersList);
  87. }
  88. /**
  89. * 根据id获取财务数据表头子表数据详情
  90. * @param id
  91. * @return
  92. * @throws Exception
  93. * ModelAndView
  94. */
  95. @GetMapping(value="/getDetail")
  96. @ApiOperation(value="根据id获取财务数据表头子表数据详情",httpMethod = "GET",notes = "根据id获取财务数据表头子表数据详情")
  97. public CommonResult<CostSurveyFdTemplateHeaders> getDetail(@ApiParam(name="id",value="业务对象主键", required = true)@RequestParam(required=true) String id) throws Exception{
  98. return CommonResult.<CostSurveyFdTemplateHeaders>ok().value(baseService.getDetail(id));
  99. }
  100. /**
  101. * 新增,更新财务数据表头子表
  102. * @param costSurveyTemplateHeaders
  103. * @throws Exception
  104. * @return
  105. * @exception
  106. */
  107. @PostMapping(value="/save")
  108. @ApiOperation(value = "新增或更新财务数据表头子表数据", httpMethod = "POST", notes = "新增或更新财务数据表头子表数据")
  109. public CommonResult<String> save(@ApiParam(name="CostSurveyTemplateHeaders",value="财务数据表头子表对象", required = true)@RequestBody CostSurveyFdTemplateHeaders costSurveyTemplateHeaders) throws Exception{
  110. String msg = StringUtil.isEmpty(costSurveyTemplateHeaders.getId()) ? "添加财务数据表头子表成功" : "更新财务数据表头子表成功";
  111. baseService.createOrUpdate(costSurveyTemplateHeaders);
  112. return CommonResult.<String>ok().message(msg);
  113. }
  114. /**
  115. * 批量新增或更新财务数据表头及指标项数据
  116. * 动态处理 headersId 的生成和关联
  117. * @param request 包含表头列表和指标项列表的请求对象
  118. * @return 操作结果
  119. * @throws Exception 异常信息
  120. */
  121. @ApiOperation(value = "批量新增或更新财务数据表头及指标项数据", httpMethod = "POST", notes = "批量新增或更新财务数据表头及指标项数据")
  122. @PostMapping(value = "/batchSaveOrUpdate")
  123. public CommonResult<String> batchSaveOrUpdate(
  124. @ApiParam(name = "request", value = "包含表头列表和指标项列表的请求对象", required = true)
  125. @RequestBody BatchFdHeadersItemsRequest request) throws Exception {
  126. List<CostSurveyFdTemplateHeaders> headersList = request.getHeadersList();
  127. List<CostSurveyFdTemplateItems> itemsList = request.getItemsList();
  128. List<CostSurveyFdTemplateHeaders> deleteHeadersList = request.getDeleteheadersList();
  129. // 检查输入列表是否为空
  130. if ((headersList == null || headersList.isEmpty()) &&
  131. (itemsList == null || itemsList.isEmpty()) &&
  132. (deleteHeadersList == null || deleteHeadersList.isEmpty())) {
  133. return CommonResult.<String>error().message("批量操作失败,数据列表为空");
  134. }
  135. IUser user = ContextUtil.getCurrentUser();
  136. // 先处理表头数据,确保所有表头都有ID
  137. if (headersList != null && !headersList.isEmpty()) {
  138. for (CostSurveyFdTemplateHeaders header : headersList) {
  139. boolean isHeaderCreate = StringUtil.isEmpty(header.getId());
  140. header.setFieldEname(PinyinUtil.getPinyin(header.getFieldName()));
  141. if(StringUtil.isEmpty(header.getId()))
  142. {
  143. header.setId(UUID.randomUUID().toString());
  144. header.setCreateBy(user.getAccount());
  145. header.setCreateTime( LocalDateTime.now());
  146. baseService.create(header);
  147. }
  148. else {
  149. header.setUpdateBy(user.getAccount());
  150. header.setUpdateTime( LocalDateTime.now());
  151. baseService.update(header);
  152. }
  153. }
  154. }
  155. // 处理需要删除的表头
  156. if (deleteHeadersList != null && !deleteHeadersList.isEmpty()) {
  157. for (CostSurveyFdTemplateHeaders header : deleteHeadersList) {
  158. if (StringUtil.isNotEmpty(header.getId())) {
  159. baseService.remove(header.getId());
  160. }
  161. }
  162. }
  163. // 处理指标项数据,动态设置 headersId
  164. if (itemsList != null && !itemsList.isEmpty()) {
  165. if( itemsList.size() >0)
  166. {
  167. costSurveyTemplateItemsManager.deleteBySurveyTemplateIdAndVersionId( itemsList.get(0).getSurveyTemplateId(), itemsList.get(0).getVersionId());
  168. }
  169. for (CostSurveyFdTemplateItems item : itemsList) {
  170. // 检查是否已设置 headersId
  171. if (StringUtil.isEmpty(item.getHeadersId())) {
  172. item.setHeadersId(
  173. headersList.stream()
  174. .filter(h -> h.getFieldName().equals(item.getRkey() ))
  175. .findFirst()
  176. .map(CostSurveyFdTemplateHeaders::getId)
  177. .orElse(null)
  178. );
  179. }
  180. item.setId(UUID.randomUUID().toString());
  181. item.setCreateBy(user.getAccount());
  182. item.setCreateTime( LocalDateTime.now());
  183. item.setUpdateBy(user.getAccount());
  184. item.setUpdateTime( LocalDateTime.now());
  185. costSurveyTemplateItemsManager.create(item);
  186. }
  187. }
  188. return CommonResult.<String>ok().message(
  189. "批量操作成功");
  190. }
  191. /**
  192. * 根据id删除财务数据表头子表数据
  193. * @param id
  194. * @return
  195. * @throws Exception
  196. */
  197. @ApiOperation(value = "根据id删除财务数据表头子表数据", httpMethod = "DELETE", notes = "根据id删除财务数据表头子表数据")
  198. @GetMapping(value = "/remove")
  199. public CommonResult<String> remove(@ApiParam(name = "id", value = "业务对象主键", required = true) @RequestParam(required = true) String id) throws Exception {
  200. baseService.remove(id);
  201. return CommonResult.<String>ok().message("删除财务数据表头子表成功");
  202. }
  203. /**
  204. * 批量新增财务数据表头子表数据
  205. * @param costSurveyTemplateHeadersList
  206. * @return
  207. * @throws Exception
  208. */
  209. @ApiOperation(value = "批量新增财务数据表头子表数据", httpMethod = "POST", notes = "批量新增财务数据表头子表数据")
  210. @PostMapping(value = "/batchSave")
  211. public CommonResult<String> batchSave(@ApiParam(name = "costSurveyTemplateHeadersList", value = "财务数据表头子表对象列表", required = true)
  212. @RequestBody List<CostSurveyFdTemplateHeaders> costSurveyTemplateHeadersList) throws Exception {
  213. return CommonResult.<String>ok().message("批量新增财务数据表头子表数据成功");
  214. }
  215. }