TaIssueController.java 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. package com.example.civilizedcity.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.example.civilizedcity.common.*;
  7. import com.example.civilizedcity.entity.SysUser;
  8. import com.example.civilizedcity.entity.TaAttach;
  9. import com.example.civilizedcity.entity.TaIssue;
  10. import com.example.civilizedcity.service.*;
  11. import com.example.civilizedcity.vo.IssueExport;
  12. import io.swagger.annotations.Api;
  13. import io.swagger.annotations.ApiOperation;
  14. import io.swagger.annotations.ApiParam;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.web.bind.annotation.*;
  17. import javax.servlet.http.HttpServletResponse;
  18. import java.time.LocalDateTime;
  19. import java.util.HashMap;
  20. import java.util.List;
  21. import java.util.Map;
  22. /**
  23. * 问题表;(ta_issue)表控制层
  24. *
  25. * @author : http://njyunzhi.com
  26. * @date : 2022-12-12
  27. */
  28. @Api(tags = "问题表对象功能接口")
  29. @RestController
  30. @RequestMapping("/")
  31. public class TaIssueController extends BaseController {
  32. @Autowired
  33. private TaIssueService taIssueService;
  34. @Autowired
  35. private TaOrgIssueService taOrgIssueService;
  36. @Autowired
  37. private TaAttachService taAttachService;
  38. @Autowired
  39. private TaIssueProcessService taIssueProcessService;
  40. @Autowired
  41. private SysUserDutyService sysUserDutyService;
  42. @Autowired
  43. private SysOrgService sysOrgService;
  44. @Autowired
  45. private ExportIssueUtil exportIssueUtil;
  46. /**
  47. * 通过ID查询单条数据
  48. *
  49. * @param id 主键
  50. * @return 实例对象
  51. */
  52. @ApiOperation("通过ID查询单条数据")
  53. @GetMapping("/taIssue/{id}")
  54. public ResponseBean queryById(@ApiParam("对象ID") @PathVariable Integer id) throws Exception {
  55. TaIssue taIssue = taIssueService.getById(id);
  56. List<TaAttach> attachList = taAttachService.getListBy(Constants.SOURCE_ISSUE, taIssue.getIssueId().toString());
  57. taIssue.setAttachList(attachList);
  58. return ResponseBean.success(taIssue);
  59. }
  60. /**
  61. * 构造 查询构造器
  62. *
  63. * @param sysUser
  64. * @param params
  65. * @return
  66. */
  67. private QueryWrapper<TaIssue> buildQuery(SysUser sysUser, Map<String, Object> params) {
  68. String issueId = (String) params.get("issueId");
  69. String typeId = (String) params.get("typeId");
  70. String bizStatus = (String) params.get("bizStatus");
  71. String sourceType = (String) params.get("sourceType");
  72. String sourceType2 = (String) params.get("sourceType2");
  73. String locId = (String) params.get("locId");
  74. Boolean mine = (Boolean) params.get("mine");
  75. String orgId = (String) params.get("orgId");
  76. String userName = (String) params.get("userName");
  77. Boolean all = (Boolean) params.get("all");
  78. LocalDateTime createDateStart = null;
  79. LocalDateTime createDateEnd = null;
  80. if (null != params.get("createDateStart")) {
  81. String dt1 = (String) params.get("createDateStart");
  82. String dt2 = (String) params.get("createDateEnd");
  83. if (StringUtils.isNotEmpty(dt1)) {
  84. createDateStart = DateUtils.day2LocalDateime(dt1);
  85. createDateEnd = DateUtils.day2LocalDateime2(dt2);
  86. }
  87. }
  88. LocalDateTime endDateStart = null;
  89. LocalDateTime endDateEnd = null;
  90. if (null != params.get("endDateStart")) {
  91. String dt1 = (String) params.get("endDateStart");
  92. String dt2 = (String) params.get("endDateEnd");
  93. if (StringUtils.isNotEmpty(dt1)) {
  94. endDateStart = DateUtils.day2LocalDateime(dt1);
  95. endDateEnd = DateUtils.day2LocalDateime2(dt2);
  96. }
  97. }
  98. QueryWrapper<TaIssue> queryWrapper = new QueryWrapper<>();
  99. queryWrapper.eq(StringUtils.isNotEmpty(issueId), "issue_id", issueId);
  100. queryWrapper.eq(StringUtils.isNotEmpty(typeId), "type_id", typeId);
  101. if (Constants.PROCESS_START.equals(bizStatus)) {
  102. // 待交办
  103. queryWrapper.likeRight("process_node", bizStatus);
  104. } else if (Constants.PROCESS_ASSIGNED.equals(bizStatus)) {
  105. // 已交办
  106. queryWrapper.likeRight("process_node", bizStatus);
  107. } else if (Constants.PROCESS_END.equals(bizStatus)) {
  108. // 已办结
  109. queryWrapper.eq("process_node", bizStatus);
  110. } else if ("expired".equals(bizStatus)) {
  111. // 已逾期
  112. queryWrapper.ne("process_node", Constants.PROCESS_END);
  113. queryWrapper.lt("expire_date", DateUtils.today());
  114. } else if ("expiredEnd".equals(bizStatus)) {
  115. // 逾期办结
  116. queryWrapper.eq("process_node", Constants.PROCESS_END);
  117. queryWrapper.lt("expire_date", DateUtils.today());
  118. } else if ("reject".equals(bizStatus)) {
  119. // 已打回
  120. queryWrapper.eq("process_node", Constants.PROCESS_APPLY_REJECT);
  121. queryWrapper.eq("process_status", Constants.APPLY_PASS);
  122. } else {
  123. // 其余节点
  124. queryWrapper.likeRight(!StringUtils.isEmpty(bizStatus), "process_node", bizStatus);
  125. }
  126. if (mine) {
  127. queryWrapper.eq("create_user", sysUser.getUserId());
  128. }
  129. queryWrapper.eq(StringUtils.isNotEmpty(locId), "loc_id", locId);
  130. queryWrapper.eq(StringUtils.isNotEmpty(orgId), "org_id", orgId);
  131. // 此处是PC端的查询问题来源
  132. queryWrapper.eq(StringUtils.isNotEmpty(sourceType2), "source_type", sourceType2);
  133. queryWrapper.like(StringUtils.isNotEmpty(userName), "user_name", userName);
  134. queryWrapper.between(null != createDateStart, "create_date", createDateStart, createDateEnd);
  135. queryWrapper.between(null != endDateStart, "end_date", endDateStart, endDateEnd);
  136. queryWrapper.eq(Constants.SOURCE_FEEDBACK.equals(sourceType) && !all, "source_type", Constants.SOURCE_FEEDBACK);
  137. queryWrapper.ne(!Constants.SOURCE_FEEDBACK.equals(sourceType) && !all, "source_type", Constants.SOURCE_FEEDBACK);
  138. queryWrapper.gt("status", Constants.STATUS_DELETE);
  139. queryWrapper.orderByDesc("create_date");
  140. return queryWrapper;
  141. }
  142. /**
  143. * 分页查询
  144. *
  145. * @param pageNum 当前页码
  146. * @param pageSize 每页条数
  147. * @return 查询结果
  148. */
  149. @ApiOperation("分页查询")
  150. @GetMapping("/taIssue")
  151. public ResponseBean list(@ApiParam("页码") @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
  152. @ApiParam("单页数据量") @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
  153. @ApiParam("问题单ID") @RequestParam(value = "issueId", required = false) String issueId,
  154. @ApiParam("类型ID") @RequestParam(value = "typeId", required = false) String typeId,
  155. @ApiParam("问题单状态") @RequestParam(value = "bizStatus", required = false) String bizStatus,
  156. @ApiParam("来源") @RequestParam(value = "sourceType", required = false) String sourceType,
  157. @ApiParam("PC来源") @RequestParam(value = "sourceType2", required = false) String sourceType2,
  158. @ApiParam("点位") @RequestParam(value = "locId", required = false) String locId,
  159. @ApiParam("我的") @RequestParam(value = "mine", defaultValue = "false") Boolean mine,
  160. @ApiParam("责任单位") @RequestParam(value = "orgId", required = false) String orgId,
  161. @ApiParam("上报人") @RequestParam(value = "userName", required = false) String userName,
  162. @ApiParam(value = "创建时间-开始", example = "2023-03-01") @RequestParam(value = "createDateStart", required = false) String createDateStart,
  163. @ApiParam(value = "创建时间-结束", example = "2023-03-31") @RequestParam(value = "createDateEnd", required = false) String createDateEnd,
  164. @ApiParam(value = "结单时间-开始", example = "2023-03-01") @RequestParam(value = "endDateStart", required = false) String endDateStart,
  165. @ApiParam(value = "结单时间-结束", example = "2023-03-31") @RequestParam(value = "endDateEnd", required = false) String endDateEnd,
  166. @ApiParam("是否全部") @RequestParam(value = "all", defaultValue = "false") Boolean all) throws Exception {
  167. SysUser sysUser = currentUser();
  168. boolean isRooter = Constants.ROOT_ID.equals(sysUser.getUserId());
  169. List<String> dutyList = sysUserDutyService.getListByUser(sysUser.getUserId());
  170. if (!isRooter && (dutyList == null || dutyList.size() < 1)) {
  171. return ResponseBean.error("暂无权限查询数据");
  172. }
  173. Map<String, Object> params = new HashMap<>();
  174. params.put("issueId", issueId);
  175. params.put("typeId", typeId);
  176. params.put("bizStatus", bizStatus);
  177. params.put("sourceType", sourceType);
  178. params.put("sourceType2", sourceType2);
  179. params.put("locId", locId);
  180. params.put("mine", mine);
  181. params.put("orgId", orgId);
  182. params.put("userName", userName);
  183. params.put("all", all);
  184. params.put("createDateStart", createDateStart);
  185. params.put("createDateEnd", createDateEnd);
  186. params.put("endDateStart", endDateStart);
  187. params.put("endDateEnd", endDateEnd);
  188. IPage<TaIssue> pg = new Page<>(pageNum, pageSize);
  189. QueryWrapper<TaIssue> queryWrapper = buildQuery(sysUser, params);
  190. IPage<TaIssue> result = taIssueService.page(pg, queryWrapper);
  191. return ResponseBean.success(result);
  192. }
  193. /**
  194. * 导出
  195. *
  196. * @param pageNum 当前页码
  197. * @param pageSize 每页条数
  198. * @return 查询结果
  199. */
  200. @ApiOperation("导出")
  201. @PostMapping("/taIssue/export")
  202. public ResponseBean export(@ApiParam("问题单ID") @RequestParam(value = "issueId", required = false) String issueId,
  203. @ApiParam("问题单状态") @RequestParam(value = "bizStatus", required = false) String bizStatus,
  204. @ApiParam("类型ID") @RequestParam(value = "typeId", required = false) String typeId,
  205. @ApiParam("来源") @RequestParam(value = "sourceType", required = false) String sourceType,
  206. @ApiParam("问题来源") @RequestParam(value = "sourceType2", required = false) String sourceType2,
  207. @ApiParam("点位") @RequestParam(value = "locId", required = false) String locId,
  208. @ApiParam("我的") @RequestParam(value = "mine", defaultValue = "false") Boolean mine,
  209. @ApiParam("责任单位") @RequestParam(value = "orgId", required = false) String orgId,
  210. @ApiParam("上报人") @RequestParam(value = "userName", required = false) String userName,
  211. @ApiParam(value = "创建时间-开始", example = "2023-03-01") @RequestParam(value = "createDateStart", required = false) String createDateStart,
  212. @ApiParam(value = "创建时间-结束", example = "2023-03-31") @RequestParam(value = "createDateEnd", required = false) String createDateEnd,
  213. @ApiParam(value = "结单时间-开始", example = "2023-03-01") @RequestParam(value = "endDateStart", required = false) String endDateStart,
  214. @ApiParam(value = "结单时间-结束", example = "2023-03-31") @RequestParam(value = "endDateEnd", required = false) String endDateEnd,
  215. @ApiParam("是否全部") @RequestParam(value = "all", defaultValue = "false") Boolean all,
  216. @ApiParam("是否带图") @RequestParam(value = "withImage", defaultValue = "true") Boolean withImage,
  217. HttpServletResponse response) throws Exception {
  218. SysUser sysUser = currentUser();
  219. boolean isRooter = Constants.ROOT_ID.equals(sysUser.getUserId());
  220. List<String> dutyList = sysUserDutyService.getListByUser(sysUser.getUserId());
  221. if (!isRooter && (dutyList == null || dutyList.size() < 1)) {
  222. return ResponseBean.error("暂无权限查询数据");
  223. }
  224. Map<String, Object> params = new HashMap<>();
  225. params.put("issueId", issueId);
  226. params.put("typeId", typeId);
  227. params.put("bizStatus", bizStatus);
  228. params.put("sourceType", sourceType);
  229. params.put("sourceType2", sourceType2);
  230. params.put("locId", locId);
  231. params.put("mine", mine);
  232. params.put("orgId", orgId);
  233. params.put("userName", userName);
  234. params.put("all", all);
  235. params.put("createDateStart", createDateStart);
  236. params.put("createDateEnd", createDateEnd);
  237. params.put("endDateStart", endDateStart);
  238. params.put("endDateEnd", endDateEnd);
  239. QueryWrapper<TaIssue> queryWrapper = buildQuery(sysUser, params);
  240. List<TaIssue> list = taIssueService.list(queryWrapper);
  241. List<IssueExport> exportList = exportIssueUtil.getExportList(list, withImage);
  242. ExcelUtils.flush(response, IssueExport.class, exportList, "问题单列表");
  243. return null;
  244. }
  245. /**
  246. * 新增数据
  247. *
  248. * @param taIssue 实例对象
  249. * @return 实例对象
  250. */
  251. @ApiOperation("新增数据")
  252. @PostMapping("/taIssue")
  253. public ResponseBean add(@ApiParam("对象实体") @RequestBody TaIssue taIssue) throws Exception {
  254. // 督察员上报专用
  255. if (null == taIssue.getAttachList() || taIssue.getAttachList().size() == 0) {
  256. return ResponseBean.error("请上传照片");
  257. }
  258. SysUser user = currentUser();
  259. taIssueService.createNew(taIssue, user);
  260. return ResponseBean.success(taIssue);
  261. }
  262. /**
  263. * 更新数据
  264. *
  265. * @param taIssue 实例对象
  266. * @return 实例对象
  267. */
  268. @ApiOperation("更新数据")
  269. @PutMapping("/taIssue/{id}")
  270. public ResponseBean edit(@ApiParam("对象实体") @RequestBody TaIssue taIssue,
  271. @ApiParam("对象ID") @PathVariable Integer id) throws Exception {
  272. TaIssue origin = taIssueService.getById(id);
  273. if (null == origin || origin.getStatus() == Constants.STATUS_DELETE) {
  274. return ResponseBean.error("未找到原始问题单");
  275. }
  276. List<TaAttach> attachList = taIssue.getAttachList();
  277. if (null == attachList || attachList.size() == 0) {
  278. return ResponseBean.error("拍照或者视频没有上传");
  279. }
  280. taIssueService.updateIssue(taIssue, origin);
  281. return ResponseBean.success(origin);
  282. }
  283. /**
  284. * 复制问题单
  285. *
  286. * @param id 问题单ID
  287. * @return 实例对象
  288. */
  289. @ApiOperation("复制问题单")
  290. @PostMapping("/taIssue/{id}/copy")
  291. public ResponseBean copy(@ApiParam("对象ID") @PathVariable Integer id) throws Exception {
  292. TaIssue origin = taIssueService.getById(id);
  293. if (null == origin || origin.getStatus() == Constants.STATUS_DELETE) {
  294. return ResponseBean.error("未找到原始问题单");
  295. }
  296. SysUser sysUser = currentUser();
  297. TaIssue taIssue = taIssueService.copyIssue(origin, sysUser);
  298. return ResponseBean.success(taIssue);
  299. }
  300. /**
  301. * 通过主键删除数据
  302. *
  303. * @param id 主键
  304. * @return 是否成功
  305. */
  306. @SaCheckPermission("manager")
  307. @ApiOperation("通过主键删除数据")
  308. @DeleteMapping("/taIssue/{id}")
  309. public ResponseBean deleteById(@ApiParam("对象ID") @PathVariable Integer id) throws Exception {
  310. // taIssueService.removeLogicById(id);
  311. TaIssue taIssue = taIssueService.getById(id);
  312. if (null == taIssue || taIssue.getStatus() == Constants.STATUS_DELETE) {
  313. return ResponseBean.error("未找到问题");
  314. }
  315. taIssue.setUpdateUser(currentUser().getUserId());
  316. taIssue.setUpdateDate(LocalDateTime.now());
  317. taIssue.setStatus(Constants.STATUS_DELETE);
  318. taIssueService.updateById(taIssue);
  319. return ResponseBean.success("success");
  320. }
  321. }