PlanYearsController.java 26 KB

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