|
|
@@ -0,0 +1,247 @@
|
|
|
+package com.qdport.controller;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.qdport.entity.PolicyTodo;
|
|
|
+import com.qdport.enums.QDPortEnum;
|
|
|
+import com.qdport.modules.system.entity.SysUser;
|
|
|
+import com.qdport.modules.system.service.TSysUserService;
|
|
|
+import com.qdport.service.PolicyFileService;
|
|
|
+import com.qdport.service.PolicyTodoService;
|
|
|
+import com.qdport.service.impl.PolicySystemService;
|
|
|
+import com.qdport.util.StringUtil;
|
|
|
+import com.qdport.vo.PolicyFileVO;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import com.qdport.entity.PolicyStrive;
|
|
|
+import com.qdport.service.PolicyStriveService;
|
|
|
+import com.qdport.query.PolicyStriveQuery;
|
|
|
+import com.qdport.vo.PolicyStriveVO;
|
|
|
+import com.qdport.wrapper.PolicyStriveWrapper;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
+import io.swagger.annotations.ApiParam;
|
|
|
+import com.qdport.core.tool.api.R;
|
|
|
+import com.qdport.core.tool.utils.Func;
|
|
|
+import com.qdport.core.boot.ctrl.QdportController;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+
|
|
|
+import javax.validation.Valid;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 政策争取
|
|
|
+ *
|
|
|
+ * @author yuheng
|
|
|
+ * @since 1.0.0 2024-10-14
|
|
|
+ */
|
|
|
+@RestController
|
|
|
+@RequestMapping("qdport-zcgx/strive")
|
|
|
+@Api(value = "政策争取", tags = "政策争取")
|
|
|
+@AllArgsConstructor
|
|
|
+public class PolicyStriveController extends QdportController {
|
|
|
+ private final PolicyStriveService policyStriveService;
|
|
|
+ private final TSysUserService sysUserService;
|
|
|
+ private final PolicySystemService policySystemService;
|
|
|
+ private final PolicyFileService policyFileService;
|
|
|
+ private final PolicyTodoService policyTodoService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页
|
|
|
+ */
|
|
|
+ @GetMapping("page")
|
|
|
+ @ApiOperation(value = "分页", notes = "分页")
|
|
|
+ public R<IPage<PolicyStriveVO>> page(@Valid PolicyStriveQuery query) {
|
|
|
+ IPage<PolicyStriveVO> page = policyStriveService.page(query);
|
|
|
+ List<PolicyStriveVO> records = page.getRecords();
|
|
|
+ for (PolicyStriveVO model : records) {
|
|
|
+ SysUser createUser = sysUserService.getById(model.getCreateId());
|
|
|
+ Map<String, String> resultMap = policySystemService.getDeptNameAndCompanyName(createUser.getDeptId());
|
|
|
+ model.setDeptName(resultMap.get("deptName"));
|
|
|
+ model.setCompanyName(resultMap.get("companyName"));
|
|
|
+
|
|
|
+ List<PolicyFileVO> fileList = policyFileService.getFileList(model.getId().toString(), QDPortEnum.POLICY_FILE_REFTYPE_POLICY_STRIVE.getValue());
|
|
|
+ model.setFileList(fileList);
|
|
|
+ }
|
|
|
+ return R.data(page);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 详情
|
|
|
+ */
|
|
|
+ @GetMapping("{id}")
|
|
|
+ @ApiOperation(value = "详情", notes = "id")
|
|
|
+ public R<PolicyStriveVO> get(@PathVariable("id") Long id) {
|
|
|
+ PolicyStrive entity = policyStriveService.getById(id);
|
|
|
+
|
|
|
+ PolicyStriveVO vo = PolicyStriveWrapper.build().entityVO(entity);
|
|
|
+
|
|
|
+ SysUser createUser = sysUserService.getById(entity.getCreateId());
|
|
|
+ Map<String, String> resultMap = policySystemService.getDeptNameAndCompanyName(createUser.getDeptId());
|
|
|
+ vo.setDeptName(resultMap.get("deptName"));
|
|
|
+ vo.setCompanyName(resultMap.get("companyName"));
|
|
|
+
|
|
|
+ List<PolicyFileVO> fileList = policyFileService.getFileList(entity.getId().toString(), QDPortEnum.POLICY_FILE_REFTYPE_POLICY_STRIVE.getValue());
|
|
|
+
|
|
|
+ vo.setFileList(fileList);
|
|
|
+ return R.data(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增
|
|
|
+ */
|
|
|
+ @PostMapping("/save")
|
|
|
+ @ApiOperation(value = "新增", notes = "传入PolicyStrive")
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public R save(@RequestBody PolicyStriveVO vo) {
|
|
|
+ vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_ACTIVE.getValue());
|
|
|
+ policyStriveService.save(vo);
|
|
|
+ return R.success("保存成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/saveDone")
|
|
|
+ @ApiOperation(value = "新增", notes = "传入PolicyStrive")
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public R saveDone(@RequestBody PolicyStriveVO vo) {
|
|
|
+ vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_DONE.getValue());
|
|
|
+ policyStriveService.save(vo);
|
|
|
+ return R.success("保存成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/saveApprove")
|
|
|
+ @ApiOperation(value = "新增并且提交", notes = "传入PolicyStrive")
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public R saveApprove(@RequestBody PolicyStriveVO vo) {
|
|
|
+ if (StringUtil.isEmpty(vo.getId())) {
|
|
|
+ vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_APPROVE.getValue());
|
|
|
+ policyStriveService.save(vo);
|
|
|
+ } else {
|
|
|
+ vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_APPROVE.getValue());
|
|
|
+ policyStriveService.update(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ policyTodoService.save(vo);
|
|
|
+ return R.success("新增并且提交成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改
|
|
|
+ */
|
|
|
+ @PostMapping("/update")
|
|
|
+ public R update(@RequestBody @Valid PolicyStriveVO vo) {
|
|
|
+ policyStriveService.update(vo);
|
|
|
+ return R.success("更新成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/updateById")
|
|
|
+ @ApiOperation(value = "月度维护、奖励分配", notes = "传入PolicyStrive")
|
|
|
+ public R updateById(@RequestBody @Valid PolicyStriveVO vo) {
|
|
|
+ if (vo.getIsReward() == 1) {
|
|
|
+ String partPersonArr = vo.getPartPersonArr();
|
|
|
+ JSONArray array = JSON.parseArray(partPersonArr);
|
|
|
+ BigDecimal total = BigDecimal.ZERO;
|
|
|
+ for (Object object : array) {
|
|
|
+ JSONObject obj = (JSONObject) object;
|
|
|
+ BigDecimal reward = obj.getBigDecimal("reward");
|
|
|
+ if (StringUtil.isEmpty(reward)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ total = total.add(reward);
|
|
|
+ }
|
|
|
+ if (vo.getRewardScore().compareTo(total) < 0) {
|
|
|
+ return R.fail("分配总金额超出奖励标准");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ policyStriveService.updateById(vo);
|
|
|
+ return R.success("更新成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/withdraw")
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public R withdraw(@RequestBody @Valid PolicyStriveVO vo) {
|
|
|
+ vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_ACTIVE.getValue());
|
|
|
+ vo.setUpdateTime(new Date());
|
|
|
+ policyStriveService.updateById(vo);
|
|
|
+
|
|
|
+ QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
|
|
|
+ todoQueryWrapper.eq("REF_ID", vo.getId());
|
|
|
+ todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_STRIVE.getValue());
|
|
|
+ todoQueryWrapper.eq("TODO_USER_ID", 1);
|
|
|
+ todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
|
|
|
+ todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
|
|
|
+ PolicyTodo todo = new PolicyTodo();
|
|
|
+ todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_CANCEL.getValue());
|
|
|
+ policyTodoService.update(todo, todoQueryWrapper);
|
|
|
+ return R.success("撤回成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/approve")
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public R approve(@RequestBody @Valid PolicyStriveVO vo) {
|
|
|
+ vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_DONE.getValue());
|
|
|
+ vo.setUpdateTime(new Date());
|
|
|
+ policyStriveService.updateById(vo);
|
|
|
+
|
|
|
+ QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
|
|
|
+ todoQueryWrapper.eq("REF_ID", vo.getId());
|
|
|
+ todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_STRIVE.getValue());
|
|
|
+ todoQueryWrapper.eq("TODO_USER_ID", 1);
|
|
|
+ todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
|
|
|
+ todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
|
|
|
+ PolicyTodo todo = new PolicyTodo();
|
|
|
+ todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_DONE.getValue());
|
|
|
+ policyTodoService.update(todo, todoQueryWrapper);
|
|
|
+
|
|
|
+ return R.success("更新成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/refuse")
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public R refuse(@RequestBody @Valid PolicyStriveVO vo) {
|
|
|
+ vo.setStatus(QDPortEnum.POLICY_STRIVE_STATUS_INACTIVE.getValue());
|
|
|
+ vo.setUpdateTime(new Date());
|
|
|
+ policyStriveService.updateById(vo);
|
|
|
+
|
|
|
+ QueryWrapper<PolicyTodo> todoQueryWrapper = new QueryWrapper<>();
|
|
|
+ todoQueryWrapper.eq("REF_ID", vo.getId());
|
|
|
+ todoQueryWrapper.eq("REF_TYPE", QDPortEnum.POLICY_TODO_REFTYPE_POLICY_STRIVE.getValue());
|
|
|
+ todoQueryWrapper.eq("TODO_USER_ID", 1);
|
|
|
+ todoQueryWrapper.eq("TODO_TYPE", QDPortEnum.POLICY_TODO_TYPE_APPROVE.getValue());
|
|
|
+ todoQueryWrapper.eq("STATUS", QDPortEnum.POLICY_TODO_STATUS_ACTIVE.getValue());
|
|
|
+ PolicyTodo todo = new PolicyTodo();
|
|
|
+ todo.setStatus(QDPortEnum.POLICY_TODO_STATUS_DONE.getValue());
|
|
|
+ policyTodoService.update(todo, todoQueryWrapper);
|
|
|
+
|
|
|
+ return R.success("更新成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除
|
|
|
+ */
|
|
|
+ @PostMapping("/remove")
|
|
|
+ @ApiOperation(value = "逻辑删除", notes = "传入ids")
|
|
|
+ public R delete(@ApiParam(value = "主键集合", required = true) @RequestParam(name = "ids") String ids) {
|
|
|
+ List<Long> idList = Func.toLongList(ids);
|
|
|
+ policyStriveService.delete(idList);
|
|
|
+ return R.success("删除成功");
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("/calculate")
|
|
|
+ public R calculate(@RequestBody @Valid PolicyStriveVO vo) {
|
|
|
+ BigDecimal rewardRadix = vo.getRewardRadix();
|
|
|
+ BigDecimal implementScore = vo.getImplementScore();
|
|
|
+ BigDecimal promotionScore = vo.getPromotionScore();
|
|
|
+ BigDecimal striveScore = vo.getStriveScore();
|
|
|
+
|
|
|
+ BigDecimal number = rewardRadix.multiply(implementScore)
|
|
|
+ .multiply(promotionScore).multiply(striveScore).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ return R.data(number);
|
|
|
+ }
|
|
|
+}
|