PolicyStriveController.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. package com.qdport.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  6. import com.qdport.annotation.WebLog;
  7. import com.qdport.entity.PolicyTodo;
  8. import com.qdport.enums.QDPortEnum;
  9. import com.qdport.modules.system.entity.SysDept;
  10. import com.qdport.modules.system.entity.SysUser;
  11. import com.qdport.modules.system.service.SysDeptService;
  12. import com.qdport.modules.system.service.TSysUserService;
  13. import com.qdport.service.PolicyFileService;
  14. import com.qdport.service.PolicyLogService;
  15. import com.qdport.service.PolicyTodoService;
  16. import com.qdport.service.impl.PolicySystemService;
  17. import com.qdport.util.StringUtil;
  18. import com.qdport.vo.PolicyFileVO;
  19. import com.qdport.entity.PolicyStrive;
  20. import com.qdport.service.PolicyStriveService;
  21. import com.qdport.query.PolicyStriveQuery;
  22. import com.qdport.vo.PolicyLogVO;
  23. import com.qdport.vo.PolicyStriveVO;
  24. import com.qdport.wrapper.PolicyStriveWrapper;
  25. import org.springframework.web.bind.annotation.*;
  26. import io.swagger.annotations.Api;
  27. import io.swagger.annotations.ApiOperation;
  28. import io.swagger.annotations.ApiParam;
  29. import com.qdport.core.tool.api.R;
  30. import com.qdport.core.tool.utils.Func;
  31. import com.qdport.core.boot.ctrl.QdportController;
  32. import com.baomidou.mybatisplus.core.metadata.IPage;
  33. import javax.annotation.Resource;
  34. import javax.servlet.http.HttpServletRequest;
  35. import javax.validation.Valid;
  36. import java.math.BigDecimal;
  37. import java.math.RoundingMode;
  38. import java.util.Date;
  39. import java.util.List;
  40. import java.util.Map;
  41. import java.util.concurrent.ExecutionException;
  42. /**
  43. * 政策争取
  44. *
  45. * @author yuheng
  46. * @since 1.0.0 2024-10-14
  47. */
  48. @RestController
  49. @RequestMapping("qdport-zcgx/strive")
  50. @Api(value = "政策争取", tags = "政策争取")
  51. public class PolicyStriveController extends QdportController {
  52. @Resource
  53. private PolicyStriveService policyStriveService;
  54. @Resource
  55. private PolicyFileService policyFileService;
  56. @Resource
  57. private PolicyTodoService policyTodoService;
  58. @Resource
  59. private SysDeptService sysDeptService;
  60. /**
  61. * 分页
  62. */
  63. @GetMapping("page")
  64. @ApiOperation(value = "分页", notes = "分页")
  65. public R<IPage<PolicyStriveVO>> page(@Valid PolicyStriveQuery query) {
  66. IPage<PolicyStriveVO> page = policyStriveService.page(query);
  67. List<PolicyStriveVO> records = page.getRecords();
  68. for (PolicyStriveVO model : records) {
  69. SysDept dept = sysDeptService.getById(model.getDeptId());
  70. model.setDeptName(dept.getName());
  71. SysDept company = sysDeptService.getById(model.getCompanyId());
  72. model.setCompanyName(company.getName());
  73. List<PolicyFileVO> fileList = policyFileService.getFileList(model.getId(), QDPortEnum.POLICY_FILE_REFTYPE_POLICY_STRIVE.getValue());
  74. model.setFileList(fileList);
  75. }
  76. return R.data(page);
  77. }
  78. /**
  79. * 详情
  80. */
  81. @GetMapping("{id}")
  82. @ApiOperation(value = "详情", notes = "id")
  83. public R<PolicyStriveVO> get(@PathVariable("id") String id) {
  84. PolicyStrive entity = policyStriveService.getById(id);
  85. PolicyStriveVO vo = PolicyStriveWrapper.build().entityVO(entity);
  86. SysDept dept = sysDeptService.getById(vo.getDeptId());
  87. vo.setDeptName(dept.getName());
  88. SysDept company = sysDeptService.getById(vo.getCompanyId());
  89. vo.setCompanyName(company.getName());
  90. List<PolicyFileVO> fileList = policyFileService.getFileList(entity.getId().toString(), QDPortEnum.POLICY_FILE_REFTYPE_POLICY_STRIVE.getValue());
  91. vo.setFileList(fileList);
  92. return R.data(vo);
  93. }
  94. /**
  95. * 新增
  96. */
  97. @PostMapping("/save")
  98. @ApiOperation(value = "新增", notes = "传入PolicyStrive")
  99. @WebLog(operateName = "新增", operateType = "policy_strive")
  100. public R save(@RequestBody PolicyStriveVO vo) {
  101. vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_ACTIVE.getValue());
  102. policyStriveService.save(vo);
  103. return R.success("保存成功");
  104. }
  105. @PostMapping("/saveDone")
  106. @ApiOperation(value = "新增", notes = "传入PolicyStrive")
  107. @WebLog(operateName = "管理员新增", operateType = "policy_strive")
  108. public R saveDone(@RequestBody PolicyStriveVO vo) {
  109. vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_DONE.getValue());
  110. policyStriveService.save(vo);
  111. return R.success("保存成功");
  112. }
  113. @PostMapping("/saveApprove")
  114. @ApiOperation(value = "新增并且提交", notes = "传入PolicyStrive")
  115. @WebLog(operateName = "新增并且上报", operateType = "policy_strive")
  116. public R saveApprove(@RequestBody PolicyStriveVO vo) throws ExecutionException, InterruptedException {
  117. policyStriveService.saveApprove(vo);
  118. policyTodoService.save(vo);
  119. return R.success("新增并且提交成功");
  120. }
  121. /**
  122. * 修改
  123. */
  124. @PostMapping("/update")
  125. @ApiOperation(value = "编辑", notes = "传入PolicyStrive")
  126. @WebLog(operateName = "修改", operateType = "policy_strive")
  127. public R update(@RequestBody @Valid PolicyStriveVO vo) {
  128. policyStriveService.update(vo);
  129. return R.success("更新成功");
  130. }
  131. @PostMapping("/updateById")
  132. @ApiOperation(value = "月度维护、奖励分配", notes = "传入PolicyStrive")
  133. @WebLog(operateName = "月度维护/奖励分配", operateType = "policy_strive")
  134. public R updateById(@RequestBody @Valid PolicyStriveVO vo) {
  135. if (StringUtil.isNotEmpty(vo.getIsReward()) && vo.getIsReward() == 1) {
  136. String partPersonArr = vo.getPartPersonArr();
  137. JSONArray array = JSON.parseArray(partPersonArr);
  138. BigDecimal total = BigDecimal.ZERO;
  139. for (Object object : array) {
  140. JSONObject obj = (JSONObject) object;
  141. BigDecimal reward = obj.getBigDecimal("reward");
  142. if (StringUtil.isEmpty(reward)) {
  143. continue;
  144. }
  145. total = total.add(reward);
  146. }
  147. if (vo.getRewardScore().compareTo(total) < 0) {
  148. return R.fail("分配总金额超出奖励标准");
  149. }
  150. }
  151. policyStriveService.updateById(vo);
  152. return R.success("更新成功");
  153. }
  154. @PostMapping("/withdraw")
  155. @ApiOperation(value = "撤回", notes = "传入PolicyStrive")
  156. @WebLog(operateName = "撤回", operateType = "policy_strive")
  157. public R withdraw(@RequestBody @Valid PolicyStriveVO vo) {
  158. policyStriveService.withdraw(vo);
  159. return R.success("撤回成功");
  160. }
  161. @PostMapping("/approve")
  162. @ApiOperation(value = "审批通过", notes = "传入PolicyStrive")
  163. @WebLog(operateName = "审批通过", operateType = "policy_strive")
  164. public R approve(@RequestBody @Valid PolicyStriveVO vo) throws ExecutionException, InterruptedException {
  165. vo.setIsWithdraw(0);
  166. policyStriveService.approve(vo);
  167. policyTodoService.save(vo);
  168. return R.success("更新成功");
  169. }
  170. @PostMapping("/refuse")
  171. @ApiOperation(value = "审批拒绝", notes = "传入PolicyStrive")
  172. @WebLog(operateName = "审批拒绝", operateType = "policy_strive")
  173. public R refuse(@RequestBody @Valid PolicyStriveVO vo) {
  174. vo.setIsWithdraw(1);
  175. policyStriveService.refuse(vo);
  176. return R.success("更新成功");
  177. }
  178. @PostMapping("/resubmit")
  179. @ApiOperation(value = "重新提交", notes = "传入PolicyStrive")
  180. @WebLog(operateName = "重新上报", operateType = "policy_strive")
  181. public R resubmit(@RequestBody @Valid PolicyStriveVO vo) throws ExecutionException, InterruptedException {
  182. vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_APPROVE.getValue());
  183. policyStriveService.approve(vo);
  184. policyTodoService.save(vo);
  185. return R.success("重新发起成功");
  186. }
  187. /**
  188. * 删除
  189. */
  190. @PostMapping("/remove")
  191. @ApiOperation(value = "逻辑删除", notes = "传入ids")
  192. @WebLog(operateName = "删除", operateType = "policy_strive")
  193. public R delete(@ApiParam(value = "主键集合", required = true) @RequestParam(name = "ids") String ids) {
  194. List<String> idList = Func.toStrList(ids);
  195. policyStriveService.delete(idList);
  196. return R.success("删除成功");
  197. }
  198. @PostMapping("/calculate")
  199. @ApiOperation(value = "计算金额", notes = "传入PolicyStrive")
  200. public R calculate(@RequestBody @Valid PolicyStriveVO vo) {
  201. BigDecimal rewardRadix = vo.getRewardRadix();
  202. BigDecimal implementScore = vo.getImplementScore();
  203. BigDecimal promotionScore = vo.getPromotionScore();
  204. BigDecimal striveScore = vo.getStriveScore();
  205. BigDecimal number = rewardRadix.multiply(implementScore)
  206. .multiply(promotionScore).multiply(striveScore).setScale(2, RoundingMode.HALF_UP);
  207. return R.data(number);
  208. }
  209. }