CenterdataTKeyProjectsController.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. package com.sooka.sponest.data.generalbusiness.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.ruoyi.common.core.domain.R;
  4. import com.ruoyi.common.core.utils.StringUtils;
  5. import com.ruoyi.common.core.utils.bean.BeanUtils;
  6. import com.ruoyi.common.core.web.controller.BaseController;
  7. import com.ruoyi.common.core.web.domain.AjaxResult;
  8. import com.ruoyi.common.core.web.page.TableDataInfo;
  9. import com.ruoyi.common.log.annotation.Log;
  10. import com.ruoyi.common.log.enums.BusinessType;
  11. import com.ruoyi.common.security.annotation.RequiresPermissions;
  12. import com.ruoyi.system.api.domain.SysUser;
  13. import com.sooka.sponest.data.generalbusiness.domain.CenterdataTKeyProjects;
  14. import com.sooka.sponest.data.generalbusiness.domain.CenterdataTKeyProjectsBo;
  15. import com.sooka.sponest.data.generalbusiness.service.ICenterdataTKeyProjectsService;
  16. import com.sooka.sponest.data.utils.ExcelUtil;
  17. import io.swagger.annotations.Api;
  18. import io.swagger.annotations.ApiImplicitParam;
  19. import io.swagger.annotations.ApiImplicitParams;
  20. import io.swagger.annotations.ApiOperation;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.validation.annotation.Validated;
  23. import org.springframework.web.bind.annotation.*;
  24. import javax.servlet.http.HttpServletResponse;
  25. import java.text.ParseException;
  26. import java.text.SimpleDateFormat;
  27. import java.util.ArrayList;
  28. import java.util.List;
  29. import java.util.Map;
  30. /**
  31. * 重点工程Controller
  32. *
  33. * @author ruoyi
  34. * @date 2023-04-23
  35. */
  36. @Api(tags = "数据中心重点工程控制器")
  37. @RestController
  38. @RequestMapping("/projects")
  39. public class CenterdataTKeyProjectsController extends BaseController {
  40. @Autowired
  41. private ICenterdataTKeyProjectsService centerdataTKeyProjectsService;
  42. /**
  43. * 查询重点工程列表
  44. */
  45. @ApiImplicitParams(value = {
  46. @ApiImplicitParam(name = "id", value = "主键id", dataType = "String", required = false),
  47. @ApiImplicitParam(name = "projectName", value = "工程名称", dataType = "String", required = false),
  48. @ApiImplicitParam(name = "projectTarget", value = "工程目标", dataType = "String", required = false),
  49. @ApiImplicitParam(name = "projectType", value = "工程类型", dataType = "String", required = false),
  50. @ApiImplicitParam(name = "projectLevel", value = "工程级别", dataType = "String", required = false),
  51. @ApiImplicitParam(name = "constructionUnit", value = "建设单位", dataType = "String", required = false),
  52. @ApiImplicitParam(name = "principal", value = "负责人", dataType = "String", required = false),
  53. @ApiImplicitParam(name = "phone", value = "联系电话", dataType = "String", required = false),
  54. @ApiImplicitParam(name = "constructionSite", value = "建设地点", dataType = "String", required = false),
  55. @ApiImplicitParam(name = "constructionArea", value = "建筑面积", dataType = "String", required = false),
  56. @ApiImplicitParam(name = "longitude", value = "经度", dataType = "String", required = false),
  57. @ApiImplicitParam(name = "latitude", value = "纬度", dataType = "String", required = false),
  58. @ApiImplicitParam(name = "cameraSystem", value = "所属分类", dataType = "String", required = false),
  59. @ApiImplicitParam(name = "introduction", value = "工程简介", dataType = "String", required = false),
  60. @ApiImplicitParam(name = "photoId", value = "附件", dataType = "String", required = false),
  61. })
  62. @ApiOperation(value = "数据中心查询重点工程列表", notes = "数据中心查询重点工程列表")
  63. @RequiresPermissions("forest:keyProjects:list")
  64. @GetMapping("/list")
  65. public TableDataInfo list(CenterdataTKeyProjects centerdataTKeyProjects) {
  66. startPage();
  67. List<CenterdataTKeyProjects> list = centerdataTKeyProjectsService.selectCenterdataTKeyProjectsList(centerdataTKeyProjects);
  68. return getDataTable(list);
  69. }
  70. /**
  71. * 导出重点工程列表
  72. */
  73. @ApiImplicitParams(value = {
  74. @ApiImplicitParam(name = "id", value = "主键id", dataType = "String", required = false),
  75. @ApiImplicitParam(name = "projectName", value = "工程名称", dataType = "String", required = false),
  76. @ApiImplicitParam(name = "projectTarget", value = "工程目标", dataType = "String", required = false),
  77. @ApiImplicitParam(name = "projectType", value = "工程类型", dataType = "String", required = false),
  78. @ApiImplicitParam(name = "projectLevel", value = "工程级别", dataType = "String", required = false),
  79. @ApiImplicitParam(name = "constructionUnit", value = "建设单位", dataType = "String", required = false),
  80. @ApiImplicitParam(name = "principal", value = "负责人", dataType = "String", required = false),
  81. @ApiImplicitParam(name = "phone", value = "联系电话", dataType = "String", required = false),
  82. @ApiImplicitParam(name = "constructionSite", value = "建设地点", dataType = "String", required = false),
  83. @ApiImplicitParam(name = "constructionArea", value = "建筑面积", dataType = "String", required = false),
  84. @ApiImplicitParam(name = "longitude", value = "经度", dataType = "String", required = false),
  85. @ApiImplicitParam(name = "latitude", value = "纬度", dataType = "String", required = false),
  86. @ApiImplicitParam(name = "cameraSystem", value = "所属分类", dataType = "String", required = false),
  87. @ApiImplicitParam(name = "introduction", value = "工程简介", dataType = "String", required = false),
  88. @ApiImplicitParam(name = "photoId", value = "附件", dataType = "String", required = false),
  89. })
  90. @ApiOperation(value = "数据中心导出重点工程列表", notes = "数据中心导出重点工程列表")
  91. @RequiresPermissions("forest:keyProjects:export")
  92. @Log(title = "重点工程", businessType = BusinessType.EXPORT)
  93. @PostMapping("/export")
  94. public void export(HttpServletResponse response, CenterdataTKeyProjects centerdataTKeyProjects) {
  95. List<CenterdataTKeyProjects> list = centerdataTKeyProjectsService.selectCenterdataTKeyProjectsList(centerdataTKeyProjects);
  96. ExcelUtil<CenterdataTKeyProjects> util = new ExcelUtil<>(CenterdataTKeyProjects.class);
  97. util.exportExcel(response, list, "重点工程数据");
  98. }
  99. /**
  100. * 获取重点工程详细信息
  101. */
  102. @ApiImplicitParams(value = {
  103. @ApiImplicitParam(name = "id", value = "主键id", dataType = "String", required = true)
  104. })
  105. @ApiOperation(value = "数据中心获取重点工程详细信息", notes = "数据中心获取重点工程详细信息")
  106. @RequiresPermissions("forest:keyProjects:query")
  107. @GetMapping(value = "/{id}")
  108. public AjaxResult getInfo(@PathVariable("id") String id) {
  109. return AjaxResult.success(centerdataTKeyProjectsService.selectCenterdataTKeyProjectsById(id));
  110. }
  111. /**
  112. * 新增重点工程
  113. */
  114. @ApiOperation(value = "数据中心新增重点工程", notes = "数据中心新增重点工程")
  115. @RequiresPermissions("forest:keyProjects:add")
  116. @Log(title = "重点工程", businessType = BusinessType.INSERT)
  117. @PostMapping
  118. public AjaxResult add(@Validated @RequestBody CenterdataTKeyProjects centerdataTKeyProjects) {
  119. if (centerdataTKeyProjects.getEndTime()!=null&&centerdataTKeyProjects.getStartTime()!=null){
  120. if (centerdataTKeyProjects.getEndTime().compareTo(centerdataTKeyProjects.getStartTime())<0){
  121. return AjaxResult.error("计划竣工时间不能小于开复工时间");
  122. }
  123. }
  124. return toAjax(centerdataTKeyProjectsService.insertCenterdataTKeyProjects(centerdataTKeyProjects));
  125. }
  126. /**
  127. * 修改重点工程
  128. */
  129. @ApiOperation(value = "数据中心修改重点工程", notes = "数据中心修改重点工程")
  130. @RequiresPermissions("forest:keyProjects:edit")
  131. @Log(title = "重点工程", businessType = BusinessType.UPDATE)
  132. @PutMapping
  133. public AjaxResult edit(@Validated @RequestBody CenterdataTKeyProjects centerdataTKeyProjects) {
  134. if (centerdataTKeyProjects.getEndTime()!=null&&centerdataTKeyProjects.getStartTime()!=null){
  135. if (centerdataTKeyProjects.getEndTime().compareTo(centerdataTKeyProjects.getStartTime())<0){
  136. return AjaxResult.error("计划竣工时间不能小于开复工时间");
  137. }
  138. }
  139. return toAjax(centerdataTKeyProjectsService.updateCenterdataTKeyProjects(centerdataTKeyProjects));
  140. }
  141. /**
  142. * 删除重点工程
  143. */
  144. @ApiImplicitParams(value = {
  145. @ApiImplicitParam(name = "ids", value = "主键id", dataType = "String[]", required = true)
  146. })
  147. @ApiOperation(value = "数据中心删除重点工程", notes = "数据中心删除重点工程")
  148. @RequiresPermissions("forest:keyProjects:remove")
  149. @Log(title = "重点工程", businessType = BusinessType.DELETE)
  150. @DeleteMapping("/{ids}")
  151. public AjaxResult remove(@PathVariable String[] ids) {
  152. return toAjax(centerdataTKeyProjectsService.deleteCenterdataTKeyProjectsByIds(ids));
  153. }
  154. /**
  155. * 接受报文
  156. */
  157. @ApiOperation(value = "接受报文", notes = "接受报文")
  158. @Log(title = "接受报文", businessType = BusinessType.INSERT)
  159. @PostMapping("/receivedMessage")
  160. public AjaxResult receivedMessage(@RequestBody Map<String,Object> map) {
  161. List list = JSON.parseArray(JSON.toJSONString(map.get("list")));
  162. List<CenterdataTKeyProjects> centerdataTKeyProjectsList=new ArrayList<>();
  163. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
  164. list.forEach(item->{
  165. CenterdataTKeyProjects centerdataTKeyProjects= new CenterdataTKeyProjects();
  166. CenterdataTKeyProjectsBo centerdataTKeyProjectsBo= JSON.parseObject(JSON.toJSONString(item), CenterdataTKeyProjectsBo.class);
  167. BeanUtils.copyProperties(centerdataTKeyProjectsBo,centerdataTKeyProjects);
  168. try {
  169. centerdataTKeyProjects.setEndTime(sdf.parse(centerdataTKeyProjectsBo.getEndTime()));
  170. centerdataTKeyProjects.setRealityCompletedTime(sdf.parse(centerdataTKeyProjectsBo.getRealityCompletedTime()));
  171. centerdataTKeyProjects.setStartTime(sdf.parse(centerdataTKeyProjectsBo.getStartTime()));
  172. centerdataTKeyProjects.setContinuationProjectStartTime(sdf.parse(centerdataTKeyProjectsBo.getContinuationProjectStartTime()));
  173. } catch (ParseException e) {
  174. e.printStackTrace();
  175. }
  176. centerdataTKeyProjectsList.add(centerdataTKeyProjects);
  177. });
  178. for (CenterdataTKeyProjects projects : centerdataTKeyProjectsList ){
  179. if (StringUtils.isEmpty(projects.getProjectId())||StringUtils.isEmpty(projects.getProjectName())||StringUtils.isEmpty(projects.getLongitude())||
  180. StringUtils.isEmpty(projects.getLatitude())||StringUtils.isEmpty(projects.getTerritoriality())||StringUtils.isEmpty(projects.getPrincipal())||
  181. StringUtils.isEmpty(projects.getPhone())||StringUtils.isEmpty(projects.getConstructionSite())||StringUtils.isEmpty(projects.getNature())||
  182. StringUtils.isEmpty(projects.getIntroduction())){
  183. return AjaxResult.error(5002, "缺少必要参数");
  184. }
  185. if (projects.getEndTime()!=null&&projects.getStartTime()!=null){
  186. if (projects.getEndTime().compareTo(projects.getStartTime())<0){
  187. return AjaxResult.error(5003,"计划竣工时间不能小于开复工时间");
  188. }
  189. }
  190. }
  191. int result = 0;
  192. try {Object userInfoObject = map.get("userInfo");
  193. if (userInfoObject instanceof Map) {
  194. Map<String, Object> userInfoMap = (Map<String, Object>) userInfoObject;
  195. SysUser sysUser = new SysUser(); // 创建SysUser实体类对象
  196. // 将userInfoMap中的属性值赋值给sysUser对象的对应属性
  197. sysUser.setDeptId(Long.valueOf(userInfoMap.get("deptId").toString()));
  198. sysUser.setDeptNames(userInfoMap.get("deptNames").toString());
  199. sysUser.setUserId(Long.valueOf(userInfoMap.get("userId").toString()));
  200. sysUser.setNickName(userInfoMap.get("nickName").toString());
  201. result = centerdataTKeyProjectsService.receivedMessage(centerdataTKeyProjectsList,sysUser);
  202. }
  203. }catch (Exception e){
  204. logger.error(e.getMessage());
  205. return AjaxResult.error("数据格式错误");
  206. }
  207. return toAjax(result);
  208. }
  209. /*
  210. * 推送报文
  211. *
  212. * @author 韩福成
  213. * @date 2024/1/18 14:58
  214. */
  215. @ApiOperation(value = "推送报文", notes = "推送报文")
  216. @GetMapping("/receivedMessage/{ids}")
  217. public R pushMessage(@PathVariable String[] ids) {
  218. return centerdataTKeyProjectsService.pushMessage(ids);
  219. }
  220. }