PlanYearsController.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520
  1. package com.ozs.web.controller.plan;
  2. import com.alibaba.excel.EasyExcel;
  3. import com.alibaba.excel.ExcelWriter;
  4. import com.alibaba.excel.write.metadata.WriteSheet;
  5. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.ozs.common.annotation.Log;
  8. import com.ozs.common.constant.ModularConstans;
  9. import com.ozs.common.core.controller.BaseController;
  10. import com.ozs.common.core.domain.AjaxResult;
  11. import com.ozs.common.core.domain.entity.SysDept;
  12. import com.ozs.common.core.domain.model.LoginUser;
  13. import com.ozs.common.enums.BusinessType;
  14. import com.ozs.common.enums.DataIsDelete;
  15. import com.ozs.common.enums.ProjectStatus;
  16. import com.ozs.common.exception.ServiceException;
  17. import com.ozs.common.exception.base.BaseException;
  18. import com.ozs.common.core.domain.entity.SysProcurementStandard;
  19. import com.ozs.common.utils.DateUtils;
  20. import com.ozs.common.utils.PageUtils;
  21. import com.ozs.common.utils.poi.ExcelUtil;
  22. import com.ozs.framework.web.service.TokenService;
  23. import com.ozs.plan.doman.PlanYears;
  24. import com.ozs.plan.doman.vo.requestVo.PlanYearsStandardVo;
  25. import com.ozs.plan.doman.vo.responseVo.PlanYearsResponseVo;
  26. import com.ozs.plan.service.PlanYearsService;
  27. import com.ozs.system.service.ISysDeptService;
  28. import com.ozs.system.service.SysProcurementStandardService;
  29. import io.swagger.annotations.Api;
  30. import io.swagger.annotations.ApiOperation;
  31. import lombok.extern.slf4j.Slf4j;
  32. import org.springframework.beans.BeanUtils;
  33. import org.springframework.beans.factory.annotation.Autowired;
  34. import org.springframework.security.access.prepost.PreAuthorize;
  35. import org.springframework.util.ObjectUtils;
  36. import org.springframework.web.bind.annotation.*;
  37. import org.springframework.web.multipart.MultipartFile;
  38. import javax.servlet.http.HttpServletRequest;
  39. import javax.servlet.http.HttpServletResponse;
  40. import java.io.InputStream;
  41. import java.io.OutputStream;
  42. import java.math.BigDecimal;
  43. import java.net.URLEncoder;
  44. import java.text.SimpleDateFormat;
  45. import java.util.*;
  46. /**
  47. * 年度计划信息控制层
  48. *
  49. * @author buzhanyi
  50. */
  51. @Api(tags = "年度计划")
  52. @Slf4j
  53. @RestController
  54. @RequestMapping("/plan/planYears")
  55. public class PlanYearsController extends BaseController {
  56. @Autowired
  57. private PlanYearsService planYearsService;
  58. @Autowired
  59. private TokenService tokenService;
  60. @Autowired
  61. private ISysDeptService iSysDeptService;
  62. @Autowired
  63. private SysProcurementStandardService sysProcurementStandardService;
  64. @ApiOperation(value = "查询年度计划")
  65. @PostMapping("/list")
  66. @PreAuthorize("@ss.hasPermi('plan:planYears:list')")
  67. @Log(title = ModularConstans.planYear, businessType = BusinessType.QUERY)
  68. public AjaxResult list(@RequestBody PlanYearsStandardVo vo, HttpServletRequest request) {
  69. List<PlanYearsResponseVo> planYearsList = new ArrayList<>();
  70. try {
  71. LambdaQueryWrapper<PlanYears> lw = new LambdaQueryWrapper<PlanYears>();
  72. LoginUser loginUser = tokenService.getLoginUser(request);
  73. if (!loginUser.getUserId().equals(Long.valueOf("1"))) {
  74. lw.eq(PlanYears::getCreated, loginUser.getUserId());
  75. }
  76. //是否是拉取到季度计划 true:是
  77. if (!ObjectUtils.isEmpty(vo.getIsToQuarter()) && vo.getIsToQuarter().equals("true")) {
  78. //查出不在季度计划表中的id
  79. List<Integer> ids = planYearsService.idNotInQuarter();
  80. if (ObjectUtils.isEmpty(ids)) {
  81. return AjaxResult.success(new Page());
  82. }
  83. lw.in(PlanYears::getPlanYearId, ids);
  84. lw.eq(PlanYears::getProjectStatus, ProjectStatus.PLANTOEXAMINE.getCode());
  85. }
  86. if (!ObjectUtils.isEmpty(vo.getProjectName())) {
  87. lw.like(PlanYears::getProjectName, vo.getProjectName());
  88. }
  89. if (!ObjectUtils.isEmpty(vo.getPurchaseServices())) {
  90. lw.eq(PlanYears::getPurchaseServices, vo.getPurchaseServices());
  91. }
  92. if (!ObjectUtils.isEmpty(vo.getProjectType())) {
  93. lw.eq(PlanYears::getProjectType, vo.getProjectType());
  94. }
  95. if (!ObjectUtils.isEmpty(vo.getProjectStatus())) {
  96. lw.eq(PlanYears::getProjectStatus, vo.getProjectStatus());
  97. }
  98. if (!ObjectUtils.isEmpty(vo.getParams())) {
  99. if (!ObjectUtils.isEmpty(vo.getParams().get("beginTime"))) {
  100. lw.ge(PlanYears::getPlanDemandSubTime, vo.getParams().get("beginTime").toString() + "-01");
  101. }
  102. if (!ObjectUtils.isEmpty(vo.getParams().get("endTime"))) {
  103. SimpleDateFormat dateFormaH = new SimpleDateFormat("yyyy-MM");
  104. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
  105. Date ofMonth = DateUtils.getLastDayOfMonth(dateFormaH.parse(vo.getParams().get("endTime").toString()));
  106. lw.le(PlanYears::getPlanDemandSubTime, dateFormat.format(ofMonth) + " 23:59:59:999");
  107. }
  108. }
  109. lw.eq(PlanYears::getDelFlay, DataIsDelete.DataNOTDelete.getCode());
  110. lw.orderBy(true, false, PlanYears::getCreateTime);
  111. List<PlanYears> planYears = planYearsService.list(lw);
  112. planYearsList = planYearsService.changeTo(planYears);
  113. } catch (Exception e) {
  114. e.printStackTrace();
  115. }
  116. Page pages = PageUtils.getPages(vo.getPageNum().intValue(), vo.getPageSize().intValue(), planYearsList);
  117. return AjaxResult.success(pages);
  118. }
  119. @ApiOperation(value = "审核单位查询年度计划")
  120. @PostMapping("/examineList")
  121. @PreAuthorize("@ss.hasPermi('plan:planYears:examineList')")
  122. @Log(title = ModularConstans.planYear, businessType = BusinessType.QUERY)
  123. public AjaxResult examineList(@RequestBody PlanYearsStandardVo vo, HttpServletRequest request) {
  124. List<PlanYearsResponseVo> planYearsList = new ArrayList<>();
  125. Page pages = new Page();
  126. try {
  127. PlanYearsStandardVo standardVo = new PlanYearsStandardVo();
  128. BeanUtils.copyProperties(vo, standardVo);
  129. standardVo.setPageNum(null);
  130. standardVo.setPageSize(null);
  131. LoginUser loginUser = tokenService.getLoginUser(request);
  132. //前端没有选择部门id,就默认登录人的id
  133. if (!ObjectUtils.isEmpty(vo.getDeptId())) {
  134. standardVo.setPurchaseDeptId(String.valueOf(vo.getDeptId()));
  135. } else {
  136. standardVo.setPurchaseDeptId(String.valueOf(loginUser.getDeptId()));
  137. }
  138. standardVo.setCreated(String.valueOf(loginUser.getUserId()));
  139. List<PlanYears> planYears = planYearsService.queryPage(standardVo);
  140. if (!ObjectUtils.isEmpty(planYears) && !ObjectUtils.isEmpty(planYears.size())) {
  141. planYearsList = planYearsService.changeTo(planYears);
  142. pages = PageUtils.getPages(vo.getPageNum().intValue(), vo.getPageSize().intValue(), planYearsList);
  143. }
  144. } catch (Exception e) {
  145. e.printStackTrace();
  146. }
  147. return AjaxResult.success(pages);
  148. }
  149. @ApiOperation(value = "导出年度计划数据")
  150. @PostMapping("/exportPlan")
  151. @PreAuthorize("@ss.hasPermi('plan:planYears:exportPlan')")
  152. @Log(title = ModularConstans.planYear, businessType = BusinessType.EXPORT)
  153. public void exportPlan(HttpServletResponse response, @RequestBody PlanYearsStandardVo yearsStandardVo, HttpServletRequest request) throws Exception {
  154. LoginUser loginUser = tokenService.getLoginUser(request);
  155. List<PlanYearsResponseVo> list = planYearsService.selectPlanYearsListEXP(yearsStandardVo, loginUser);
  156. InputStream resourceAsStream = this.getClass().getResourceAsStream("/template/plan_year.xlsx");
  157. OutputStream outputStream = null;
  158. try {
  159. response.setContentType("application/vnd.ms-excel");
  160. response.setCharacterEncoding("utf-8");
  161. // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
  162. String fileName = URLEncoder.encode("年度计划", "UTF-8").replaceAll("\\+", "%20");
  163. response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
  164. outputStream = response.getOutputStream();
  165. ExcelWriter excelWriter = EasyExcel.write(outputStream)
  166. .withTemplate(resourceAsStream).autoCloseStream(true).build();
  167. WriteSheet writeSheet = EasyExcel.writerSheet().build();
  168. excelWriter.fill(list, writeSheet);
  169. excelWriter.finish();
  170. outputStream.flush();
  171. outputStream.close();
  172. } catch (Exception e) {
  173. log.error(e.getMessage());
  174. throw new BaseException("下载异常");
  175. }
  176. }
  177. @ApiOperation(value = "导出年度计划数据(审核单位)")
  178. @PreAuthorize("@ss.hasPermi('plan:planYears:exportPlanExamine')")
  179. @PostMapping("/exportPlanExamine")
  180. @Log(title = ModularConstans.planYear, businessType = BusinessType.EXPORT)
  181. public void exportPlanExamine(HttpServletResponse response, @RequestBody PlanYearsStandardVo yearsStandardVo, HttpServletRequest request) throws Exception {
  182. List<PlanYearsResponseVo> list = planYearsService.selectPlanYearsExamineListEXP(yearsStandardVo);
  183. Long num = 1L;
  184. for(PlanYearsResponseVo li:list){
  185. li.setPlanYearId(num);
  186. num++;
  187. }
  188. InputStream resourceAsStream = this.getClass().getResourceAsStream("/template/plan_year.xlsx");
  189. OutputStream outputStream = null;
  190. try {
  191. response.setContentType("application/vnd.ms-excel");
  192. response.setCharacterEncoding("utf-8");
  193. // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
  194. String fileName = URLEncoder.encode("年度计划(审核)", "UTF-8").replaceAll("\\+", "%20");
  195. response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
  196. outputStream = response.getOutputStream();
  197. ExcelWriter excelWriter = EasyExcel.write(outputStream)
  198. .withTemplate(resourceAsStream).autoCloseStream(true).build();
  199. WriteSheet writeSheet = EasyExcel.writerSheet().build();
  200. excelWriter.fill(list, writeSheet);
  201. excelWriter.finish();
  202. outputStream.flush();
  203. outputStream.close();
  204. } catch (Exception e) {
  205. log.error(e.getMessage());
  206. throw new BaseException("下载异常");
  207. }
  208. // ExcelUtil<PlanYearsResponseVo> util = new ExcelUtil<>(PlanYearsResponseVo.class);
  209. // util.exportExcel(response, list, "年度计划数据(审核单位)");
  210. }
  211. @ApiOperation(value = "创建年度计划")
  212. @PostMapping("/add")
  213. @PreAuthorize("@ss.hasPermi('plan:planYears:add')")
  214. @Log(title = ModularConstans.planYear, businessType = BusinessType.INSERT)
  215. public AjaxResult add(@RequestBody PlanYearsStandardVo yearsStandardVo, HttpServletRequest request) {
  216. //获取采购单位-
  217. LoginUser loginUser = tokenService.getLoginUser(request);
  218. yearsStandardVo.setPurchaseDeptId(String.valueOf(loginUser.getDeptId()));
  219. yearsStandardVo.setCreated(String.valueOf(loginUser.getUserId()));
  220. return planYearsService.insertPlanYears(yearsStandardVo);
  221. }
  222. @ApiOperation(value = "修改年度计划")
  223. @PostMapping("/update")
  224. @PreAuthorize("@ss.hasPermi('plan:planYears:update')")
  225. @Log(title = ModularConstans.planYear, businessType = BusinessType.UPDATE)
  226. public AjaxResult update(@RequestBody PlanYearsStandardVo yearsStandardVo, HttpServletRequest request) {
  227. LoginUser loginUser = tokenService.getLoginUser(request);
  228. yearsStandardVo.setPurchaseDeptId(String.valueOf(loginUser.getDeptId()));
  229. yearsStandardVo.setUpdated(String.valueOf(loginUser.getUserId()));
  230. return planYearsService.update(yearsStandardVo);
  231. }
  232. @ApiOperation(value = "修改年度计划的机关业务指导处")
  233. @PostMapping("/updateZDC")
  234. @Log(title = ModularConstans.planYear, businessType = BusinessType.UPDATE)
  235. public AjaxResult updateZDC(@RequestBody PlanYearsStandardVo yearsStandardVo, HttpServletRequest request) {
  236. LoginUser loginUser = tokenService.getLoginUser(request);
  237. //yearsStandardVo.setPurchaseDeptId(String.valueOf(loginUser.getDeptId()));
  238. yearsStandardVo.setUpdated(String.valueOf(loginUser.getUserId()));
  239. return planYearsService.updateZDC(yearsStandardVo);
  240. }
  241. @ApiOperation(value = "提交年度计划")
  242. @PostMapping("/commit")
  243. //@PreAuthorize("@ss.hasPermi('plan:planYears:commit')")
  244. @Log(title = ModularConstans.planYear, businessType = BusinessType.UPDATE)
  245. public AjaxResult commit(@RequestBody PlanYearsStandardVo yearsStandardVo) {
  246. return planYearsService.commit(yearsStandardVo);
  247. }
  248. @ApiOperation(value = "删除年度计划")
  249. @PostMapping("/delete")
  250. @PreAuthorize("@ss.hasPermi('plan:planYears:delete')")
  251. @Log(title = ModularConstans.planYear, businessType = BusinessType.DELETE)
  252. public AjaxResult delete(@RequestBody PlanYearsStandardVo yearsStandardVo) {
  253. return planYearsService.deletePlanYearsById(yearsStandardVo.getPlanYearId());
  254. }
  255. @ApiOperation(value = "根据id获取年度计划信息")
  256. @PostMapping("/view")
  257. // @PreAuthorize("@ss.hasPermi('plan:planYears:view')") 首页调用的接口不需要权限
  258. @Log(title = ModularConstans.planYear, businessType = BusinessType.QUERY)
  259. public AjaxResult view(@RequestBody PlanYearsStandardVo yearsStandardVo) {
  260. return planYearsService.view(yearsStandardVo);
  261. }
  262. @ApiOperation(value = "填写采购服务站")
  263. @PostMapping("/adPurchaseServices")
  264. //@PreAuthorize("@ss.hasPermi('plan:planYears:adPurchaseServices')")
  265. @Log(title = ModularConstans.planYear, businessType = BusinessType.UPDATE)
  266. public AjaxResult adPurchaseServices(@RequestBody PlanYearsStandardVo yearsStandardVo) {
  267. return planYearsService.adPurchaseServices(yearsStandardVo);
  268. }
  269. @ApiOperation(value = "审核年度计划通过")
  270. @PostMapping("/reviewTo")
  271. @Log(title = ModularConstans.planYear, businessType = BusinessType.UPDATE)
  272. // @PreAuthorize("@ss.hasPermi('plan:planYears:reviewTo')") 首页调用注释
  273. public AjaxResult reviewTo(@RequestBody PlanYearsStandardVo yearsStandardVo, HttpServletRequest request) {
  274. LoginUser loginUser = tokenService.getLoginUser(request);
  275. yearsStandardVo.setUpdated(String.valueOf(loginUser.getUserId()));
  276. return planYearsService.reviewTo(yearsStandardVo);
  277. }
  278. @ApiOperation(value = "审核年度计划退回")
  279. @PostMapping("/reviewReturn")
  280. //@PreAuthorize("@ss.hasPermi('plan:planYears:reviewReturn')")
  281. @Log(title = ModularConstans.planYear, businessType = BusinessType.UPDATE)
  282. public AjaxResult reviewReturn(@RequestBody PlanYearsStandardVo yearsStandardVo, HttpServletRequest request) {
  283. LoginUser loginUser = tokenService.getLoginUser(request);
  284. yearsStandardVo.setUpdated(String.valueOf(loginUser.getUserId()));
  285. return planYearsService.reviewReturn(yearsStandardVo);
  286. }
  287. @ApiOperation(value = "申请撤销年度计划")
  288. @PostMapping("/appDelete")
  289. @PreAuthorize("@ss.hasPermi('plan:planYears:appDelete')")
  290. @Log(title = ModularConstans.planYear, businessType = BusinessType.UPDATE)
  291. public AjaxResult appDelete(@RequestBody PlanYearsStandardVo yearsStandardVo) {
  292. return planYearsService.appDelete(yearsStandardVo);
  293. }
  294. @ApiOperation(value = "处理申请撤销年度计划")
  295. @PostMapping("/handleApp")
  296. @PreAuthorize("@ss.hasPermi('plan:planYears:handleApp')")
  297. @Log(title = ModularConstans.planYear, businessType = BusinessType.UPDATE)
  298. public AjaxResult handleApp(@RequestBody PlanYearsStandardVo yearsStandardVo) {
  299. return planYearsService.handleApp(yearsStandardVo);
  300. }
  301. @ApiOperation(value = "发函催告")
  302. @PostMapping("/sendLetter")
  303. // @PreAuthorize("@ss.hasPermi('plan:planYears:sendLetter')") 首页调用注释
  304. @Log(title = ModularConstans.planYear, businessType = BusinessType.UPDATE)
  305. public AjaxResult sendLetter(@RequestBody PlanYearsStandardVo yearsStandardVo) {
  306. return planYearsService.sendLetter(yearsStandardVo);
  307. }
  308. @ApiOperation(value = "上传计划关联文件后保存文件信息")
  309. @PostMapping("/upLoadPlanFile")
  310. @PreAuthorize("@ss.hasPermi('plan:planYears:upLoadPlanFile')")
  311. @Log(title = ModularConstans.planYear, businessType = BusinessType.OTHER)
  312. public AjaxResult upLoadPlanFile(@RequestBody PlanYearsStandardVo yearsStandardVo) {
  313. return planYearsService.upLoadPlanFile(yearsStandardVo);
  314. }
  315. //
  316. //@ApiOperation(value = "下载计划关联文件")
  317. //@PostMapping("/downLoadPlanFile")
  318. //public AjaxResult downLoadPlanFile(@RequestBody PlanYearsStandardVo yearsStandardVo) {
  319. // return planYearsService.downLoadPlanFile(yearsStandardVo);
  320. @ApiOperation(value = "导入年度计划数据")
  321. @PostMapping("/importData")
  322. @PreAuthorize("@ss.hasPermi('plan:planYears:importData')")
  323. @Log(title = ModularConstans.planYear, businessType = BusinessType.INSERT)
  324. public AjaxResult importData(MultipartFile file) throws Exception {
  325. ExcelUtil<PlanYearsStandardVo> util = new ExcelUtil<>(PlanYearsStandardVo.class);
  326. List<PlanYearsStandardVo> planYears = util.importExcel(file.getInputStream(), 2);
  327. //获取采购单位-
  328. LoginUser loginUser = getLoginUser();
  329. String message = planYearsService.importPlanYears(planYears, loginUser);
  330. return success(message);
  331. }
  332. @ApiOperation(value = "系统首页计划管理")
  333. @GetMapping("/planYearsTotal")
  334. @PreAuthorize("@ss.hasPermi('plan:planYears:planYearsTotal')")
  335. @Log(title = ModularConstans.planYear, businessType = BusinessType.QUERY)
  336. public AjaxResult planYearsTotal() {
  337. return success(planYearsService.count());
  338. }
  339. @ApiOperation("模板下载")
  340. @GetMapping("/downloaExcel")
  341. public void downloadZip(HttpServletResponse response) {
  342. List<PlanYearsResponseVo> list = new ArrayList<PlanYearsResponseVo>();
  343. list.add(new PlanYearsResponseVo(1L, "单位1", "环太平洋项目", "物资服务类", "徒步环太平洋", new BigDecimal(12.23), "单位1,单位2", "科目一", "2023-02", "2023-03", "2023-04", "重点采购项目,重大规划任务项目", ""));
  344. list.add(new PlanYearsResponseVo(2L, "单位2", "环北冰洋项目", "工程类", "徒步环北冰洋", new BigDecimal(15.88), "单位1", "科目二", "2023-01", "2023-05", "2023-08", "重点采购项目", ""));
  345. InputStream resourceAsStream = this.getClass().getResourceAsStream("/template/plan_year.xlsx");
  346. OutputStream outputStream = null;
  347. try {
  348. response.setContentType("application/vnd.ms-excel");
  349. response.setCharacterEncoding("utf-8");
  350. // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
  351. String fileName = URLEncoder.encode("年度计划(模板)", "UTF-8").replaceAll("\\+", "%20");
  352. response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
  353. outputStream = response.getOutputStream();
  354. ExcelWriter excelWriter = EasyExcel.write(outputStream)
  355. .withTemplate(resourceAsStream).autoCloseStream(true).build();
  356. WriteSheet writeSheet = EasyExcel.writerSheet().build();
  357. excelWriter.fill(list, writeSheet);
  358. excelWriter.finish();
  359. outputStream.flush();
  360. outputStream.close();
  361. } catch (Exception e) {
  362. log.error(e.getMessage());
  363. throw new BaseException("下载异常");
  364. }
  365. }
  366. @ApiOperation(value = "获取采购服务站")
  367. @GetMapping("/getProcurementService")
  368. @Log(title = ModularConstans.planYear, businessType = BusinessType.QUERY)
  369. public AjaxResult getProcurementService(@RequestParam("projectType") String projectType,
  370. @RequestParam("evaluation") BigDecimal evaluation) {
  371. //获取当前登录人的部门ID
  372. LoginUser loginUser = getLoginUser();
  373. List<String> list = new ArrayList<>();
  374. list.add("网空采购站");
  375. if (ObjectUtils.isEmpty(loginUser) || ObjectUtils.isEmpty(loginUser.getDeptId())) {
  376. return error("当前登陆过期,请重新登录!");
  377. }
  378. Long deptId = loginUser.getDeptId();
  379. // 获取当前登陆人的部门名称
  380. SysDept sysDept = iSysDeptService.selectById(deptId);
  381. if (ObjectUtils.isEmpty(sysDept) || ObjectUtils.isEmpty(sysDept.getDeptName())) {
  382. return error("当前登陆人没有部门信息,请核对数据!");
  383. }
  384. String str = sysDept.getPurchaseServices();
  385. if (!ObjectUtils.isEmpty(evaluation) && !ObjectUtils.isEmpty(projectType)) {
  386. String[] ancestors = sysDept.getAncestors().split(",");
  387. //当前用户的部门,是否允许提交(不在规定等级范围不可提交)
  388. //查询当前用户的部门是否有上级,是否需要上级及祖级进行审核
  389. Long cdeptId = null;
  390. Long bdeptId = null;
  391. String deptLevel = null;
  392. if (ancestors.length == 2) { //C级
  393. deptLevel = "C";
  394. } else if (ancestors.length == 3) { //B级
  395. deptLevel = "B";
  396. cdeptId = Long.valueOf(ancestors[2]);
  397. } else if (ancestors.length == 4) { //A级
  398. deptLevel = "A";
  399. cdeptId = Long.valueOf(ancestors[2]);
  400. bdeptId = Long.valueOf(ancestors[3]);
  401. }
  402. if (!Arrays.asList("A", "B", "C").contains(deptLevel)) {
  403. return success(list);
  404. }
  405. switch (deptLevel) {
  406. case "A":
  407. LambdaQueryWrapper<SysProcurementStandard> queryWrapperA = new LambdaQueryWrapper<>();
  408. queryWrapperA.eq(SysProcurementStandard::getDeptId, deptId);
  409. queryWrapperA.eq(SysProcurementStandard::getCategory, projectType.equals("2") ? "1" : projectType.equals("1") ? "2" : projectType);
  410. List<SysProcurementStandard> sysProcurementStandardsListA = sysProcurementStandardService.list(queryWrapperA);
  411. if (ObjectUtils.isEmpty(sysProcurementStandardsListA)) {
  412. throw new ServiceException("部门id为" + deptId + "的部门采购标准未进行初始化!");
  413. }
  414. //A不限额就自己审核
  415. SysProcurementStandard sA = sysProcurementStandardsListA.get(0);
  416. if (sA.getState().equals(Integer.valueOf(0))) {
  417. //采用初始化数据
  418. } else {
  419. //A限额了判断是否超额,不超额就自己审。超额了追加上级
  420. BigDecimal maximum = sA.getMaximum();
  421. if (maximum.compareTo(evaluation) == 1) {
  422. //采用初始化数据
  423. } else {
  424. //A限额了,找B
  425. SysDept b = iSysDeptService.selectById(bdeptId);
  426. LambdaQueryWrapper<SysProcurementStandard> queryWrapperB = new LambdaQueryWrapper<>();
  427. queryWrapperB.eq(SysProcurementStandard::getDeptId, bdeptId);
  428. queryWrapperB.eq(SysProcurementStandard::getCategory, projectType.equals("2") ? "1" : projectType.equals("1") ? "2" : projectType);
  429. List<SysProcurementStandard> sysProcurementStandardsListB = sysProcurementStandardService.list(queryWrapperB);
  430. //B不限额,B审
  431. if (ObjectUtils.isEmpty(sysProcurementStandardsListB)) {
  432. throw new ServiceException("部门id为" + bdeptId + "的部门采购标准未进行初始化!");
  433. }
  434. SysProcurementStandard sB = sysProcurementStandardsListB.get(0);
  435. if (sB.getState().equals(Integer.valueOf(0))) {
  436. //refB采用初始化数据
  437. str = b.getPurchaseServices();
  438. } else {
  439. //B限额了判断是否超额,不超额就自己审。超额了追加C级
  440. str = b.getPurchaseServices();
  441. BigDecimal maximumB = sB.getMaximum();
  442. //B超额
  443. if (maximumB.compareTo(evaluation) == -1) {
  444. SysDept c = iSysDeptService.selectById(cdeptId);
  445. str = c.getPurchaseServices();
  446. }
  447. }
  448. }
  449. }
  450. break;
  451. case "B":
  452. // B的判断 最少插入1条。最多插入2条
  453. SysDept b = iSysDeptService.selectById(deptId);
  454. LambdaQueryWrapper<SysProcurementStandard> queryWrapperB = new LambdaQueryWrapper<>();
  455. queryWrapperB.eq(SysProcurementStandard::getDeptId, deptId);
  456. queryWrapperB.eq(SysProcurementStandard::getCategory, projectType.equals("2") ? "1" : projectType.equals("1") ? "2" : projectType);
  457. List<SysProcurementStandard> sysProcurementStandardsListB = sysProcurementStandardService.list(queryWrapperB);
  458. //B不限额,B审
  459. if (ObjectUtils.isEmpty(sysProcurementStandardsListB)) {
  460. throw new ServiceException("部门id为" + deptId + "的部门采购标准未进行初始化!");
  461. }
  462. SysProcurementStandard sB = sysProcurementStandardsListB.get(0);
  463. if (sB.getState() == 0) {
  464. str = b.getPurchaseServices();
  465. } else {
  466. //B限额了判断是否超额,不超额就自己审。超额了追加C级
  467. BigDecimal maximumB = sB.getMaximum();
  468. //B不超额B审
  469. if (maximumB.compareTo(evaluation) == 1) {
  470. str = b.getPurchaseServices();
  471. } else {
  472. SysDept c = iSysDeptService.selectById(cdeptId);
  473. str = c.getPurchaseServices();
  474. }
  475. }
  476. break;
  477. default:
  478. SysDept c = iSysDeptService.selectById(deptId);
  479. str = c.getPurchaseServices();
  480. }
  481. }
  482. if (!org.apache.commons.lang3.StringUtils.isBlank(str)) {
  483. list.add(str);
  484. }
  485. return success(list);
  486. }
  487. }