PlanQuarterServiceImpl.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608
  1. package com.ozs.plan.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.github.pagehelper.PageHelper;
  5. import com.github.pagehelper.PageInfo;
  6. import com.ozs.common.core.domain.AjaxResult;
  7. import com.ozs.common.core.domain.entity.SysDept;
  8. import com.ozs.common.core.domain.entity.SysDictData;
  9. import com.ozs.common.core.domain.model.LoginUser;
  10. import com.ozs.common.enums.DataIsDelete;
  11. import com.ozs.common.enums.PmProjectStatus;
  12. import com.ozs.common.enums.ProjectStatus;
  13. import com.ozs.common.enums.ProjectTypes;
  14. import com.ozs.common.enums.SysFileRefEnum;
  15. import com.ozs.common.exception.ServiceException;
  16. import com.ozs.common.utils.PageUtils;
  17. import com.ozs.common.utils.StringUtils;
  18. import com.ozs.common.utils.bean.BeanUtils;
  19. import com.ozs.plan.doman.PlanQuarter;
  20. import com.ozs.plan.doman.PlanYears;
  21. import com.ozs.plan.doman.vo.requestVo.PlanQuarterStandardVo;
  22. import com.ozs.plan.doman.vo.responseVo.PlanQuarterResponseVo;
  23. import com.ozs.plan.mapper.PlanQuarterMapper;
  24. import com.ozs.plan.mapper.PlanYearsMapper;
  25. import com.ozs.plan.service.PlanQuarterService;
  26. import com.ozs.pm.doman.PmDemand;
  27. import com.ozs.pm.mapper.PmDemandMapper;
  28. import com.ozs.system.domain.SysFileInfo;
  29. import com.ozs.system.domain.SysFileRef;
  30. import com.ozs.system.domain.vo.responseVo.SysDeptResponseVo;
  31. import com.ozs.system.mapper.SysDeptMapper;
  32. import com.ozs.system.mapper.SysFileRefMapper;
  33. import com.ozs.system.service.ISysDeptService;
  34. import com.ozs.system.service.ISysDictTypeService;
  35. import com.ozs.system.service.SysFileService;
  36. import lombok.extern.slf4j.Slf4j;
  37. import org.springframework.beans.factory.annotation.Autowired;
  38. import org.springframework.stereotype.Service;
  39. import org.springframework.transaction.annotation.Transactional;
  40. import org.springframework.util.ObjectUtils;
  41. import javax.validation.Validator;
  42. import java.math.BigDecimal;
  43. import java.util.ArrayList;
  44. import java.util.Date;
  45. import java.util.HashMap;
  46. import java.util.LinkedHashMap;
  47. import java.util.List;
  48. import java.util.Map;
  49. /**
  50. * @author buzhanyi
  51. */
  52. @Service
  53. @Slf4j
  54. public class PlanQuarterServiceImpl implements PlanQuarterService {
  55. @Autowired
  56. PlanQuarterMapper planQuarterMapper;
  57. @Autowired
  58. PlanYearsMapper planYearsMapper;
  59. @Autowired
  60. protected Validator validator;
  61. @Autowired
  62. private ISysDictTypeService dictTypeService;
  63. @Autowired
  64. private ISysDeptService deptService;
  65. @Autowired
  66. SysFileRefMapper sysFileRefMapper;
  67. @Autowired
  68. private SysDeptMapper deptMapper;
  69. @Autowired
  70. private SysFileService fileService;
  71. @Autowired
  72. private PmDemandMapper pmDemandMapper;
  73. @Override
  74. public Page selectPlanQuarterList(PlanQuarterStandardVo vo) {
  75. PlanQuarter quarters = new PlanQuarter();
  76. List<PlanQuarter> planQuarter;
  77. List<PlanQuarter> planQuarterList = new ArrayList<>();
  78. try {
  79. BeanUtils.copyProperties(vo, quarters);
  80. planQuarter = planQuarterMapper.selectPlanQuarterList(quarters);
  81. planQuarterList = changeTo(planQuarter);
  82. } catch (Exception e) {
  83. e.printStackTrace();
  84. }
  85. Page pages = PageUtils.getPages(vo.getPageNum().intValue(), vo.getPageSize().intValue(), planQuarterList);
  86. return pages;
  87. }
  88. @Override
  89. public List<PlanQuarter> selectPlanQuarterListEXP(PlanQuarterStandardVo vo) {
  90. List<PlanQuarter> list = new ArrayList<>();
  91. List<PlanQuarter> planQuarterList = new ArrayList<>();
  92. try {
  93. int num = 1;
  94. int size = 200;
  95. while (size == 200) {
  96. LambdaQueryWrapper<PlanQuarter> lw = new LambdaQueryWrapper<PlanQuarter>();
  97. if (!ObjectUtils.isEmpty(vo.getProjectName())) {
  98. lw.like(PlanQuarter::getProjectName, vo.getProjectName());
  99. }
  100. if (!ObjectUtils.isEmpty(vo.getPurchaseServices())) {
  101. lw.eq(PlanQuarter::getPurchaseServices, vo.getPurchaseServices());
  102. }
  103. if (!ObjectUtils.isEmpty(vo.getIsExcess())) {
  104. lw.eq(PlanQuarter::getIsExcess, vo.getIsExcess());
  105. }
  106. if (!ObjectUtils.isEmpty(vo.getProjectStatus())) {
  107. lw.eq(PlanQuarter::getProjectStatus, vo.getProjectStatus());
  108. }
  109. if (!ObjectUtils.isEmpty(vo.getBeginTime())) {
  110. lw.ge(PlanQuarter::getPlanDemandSubTime, vo.getBeginTime());
  111. }
  112. if (!ObjectUtils.isEmpty(vo.getEndTime())) {
  113. lw.le(PlanQuarter::getPlanDemandSubTime, vo.getEndTime());
  114. }
  115. lw.eq(PlanQuarter::getDelFlay, DataIsDelete.DataNOTDelete);
  116. Page<PlanQuarter> page = planQuarterMapper.selectPage(new Page<PlanQuarter>(num, size, false), lw);
  117. list.addAll(page.getRecords());
  118. size = page.getRecords().size();
  119. num++;
  120. }
  121. planQuarterList = changeTo(list);
  122. } catch (Exception e) {
  123. e.printStackTrace();
  124. }
  125. return planQuarterList;
  126. }
  127. @Override
  128. public Page selectPlanQuarterExamineList(PlanQuarterStandardVo vo) {
  129. PlanQuarter quarters = new PlanQuarter();
  130. List<PlanQuarter> planQuarter;
  131. List<PlanQuarter> planQuarterList = new ArrayList<>();
  132. try {
  133. BeanUtils.copyProperties(vo, quarters);
  134. planQuarter = planQuarterMapper.selectPlanQuarterExamineList(quarters);
  135. planQuarterList = changeTo(planQuarter);
  136. } catch (Exception e) {
  137. e.printStackTrace();
  138. }
  139. Page pages = PageUtils.getPages(vo.getPageNum().intValue(), vo.getPageSize().intValue(), planQuarterList);
  140. return pages;
  141. }
  142. @Override
  143. public List<PlanQuarter> selectPlanQuarterExamineListEXP(PlanQuarterStandardVo vo) {
  144. List<PlanQuarter> list = new ArrayList<>();
  145. List<PlanQuarter> planQuarterList = new ArrayList<>();
  146. try {
  147. int num = 1;
  148. int size = 200;
  149. while (size == 200) {
  150. LambdaQueryWrapper<PlanQuarter> lw = new LambdaQueryWrapper<PlanQuarter>();
  151. if (!ObjectUtils.isEmpty(vo.getProjectName())) {
  152. lw.like(PlanQuarter::getProjectName, vo.getProjectName());
  153. }
  154. if (!ObjectUtils.isEmpty(vo.getPurchaseServices())) {
  155. lw.eq(PlanQuarter::getPurchaseServices, vo.getPurchaseServices());
  156. }
  157. if (!ObjectUtils.isEmpty(vo.getIsExcess())) {
  158. lw.eq(PlanQuarter::getIsExcess, vo.getIsExcess());
  159. }
  160. if (!ObjectUtils.isEmpty(vo.getProjectStatus())) {
  161. lw.eq(PlanQuarter::getProjectStatus, vo.getProjectStatus());
  162. } else {
  163. lw.in(PlanQuarter::getProjectStatus, "1,3");
  164. }
  165. if (!ObjectUtils.isEmpty(vo.getBeginTime())) {
  166. lw.ge(PlanQuarter::getPlanDemandSubTime, vo.getBeginTime());
  167. }
  168. if (!ObjectUtils.isEmpty(vo.getEndTime())) {
  169. lw.le(PlanQuarter::getPlanDemandSubTime, vo.getEndTime());
  170. }
  171. lw.eq(PlanQuarter::getDelFlay, DataIsDelete.DataNOTDelete);
  172. Page<PlanQuarter> page = planQuarterMapper.selectPage(new Page<PlanQuarter>(num, size, false), lw);
  173. list.addAll(page.getRecords());
  174. size = page.getRecords().size();
  175. num++;
  176. }
  177. planQuarterList = changeTo(list);
  178. } catch (Exception e) {
  179. e.printStackTrace();
  180. }
  181. return planQuarterList;
  182. }
  183. @Transactional
  184. @Override
  185. public AjaxResult insertPlanQuarter(PlanQuarterStandardVo quarterStandardVo) {
  186. if (planQuarterMapper.countProjectName(quarterStandardVo.getProjectName()) > 0) {
  187. return AjaxResult.error("该项目名称已经存在");
  188. }
  189. PlanQuarter quarters = new PlanQuarter();
  190. try {
  191. BeanUtils.copyProperties(quarterStandardVo, quarters);
  192. } catch (Exception e) {
  193. e.printStackTrace();
  194. }
  195. //判断是否为超额计划
  196. quarters.setIsExcess(isExcessOrNo(quarters.getProjectType(), quarters.getEvaluation()));
  197. quarters.setProjectStatus(ProjectStatus.PLANWAITCOMMIT.getCode());
  198. quarters.setCreateTime(new Date());
  199. planQuarterMapper.insertPlanQuarter(quarters);
  200. log.info("id:{}", quarters.getPlanPracticalId());
  201. List<SysFileRef> sysFileRefs = quarterStandardVo.getSysFileRefs();
  202. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  203. for (SysFileRef ref : sysFileRefs) {
  204. ref.setRedId(quarters.getPlanPracticalId());
  205. ref.setType(SysFileRefEnum.PLAN_TEMPORARY.getType());
  206. ref.setCreated(quarters.getCreated());
  207. ref.setCreateTime(new Date());
  208. ref.setUpdated(quarters.getCreated());
  209. ref.setUpdateTime(new Date());
  210. sysFileRefMapper.insert(ref);
  211. }
  212. }
  213. return AjaxResult.success();
  214. }
  215. @Override
  216. public AjaxResult deletePlanQuarterByIds(Long[] planIds) {
  217. planQuarterMapper.deletePlanQuarterByIds(planIds);
  218. return AjaxResult.success();
  219. }
  220. @Override
  221. public AjaxResult deletePlanQuarterById(Long planId) {
  222. planQuarterMapper.deletePlanQuarterById(planId);
  223. return AjaxResult.success();
  224. }
  225. @Override
  226. public AjaxResult view(PlanQuarterStandardVo quarterStandardVo) {
  227. PlanQuarterResponseVo responseVo = new PlanQuarterResponseVo();
  228. PlanQuarter byId = planQuarterMapper.getById(quarterStandardVo.getPlanPracticalId());
  229. if (byId == null) {
  230. return AjaxResult.error("数据查询失败");
  231. }
  232. SysDeptResponseVo sysDeptResponseVo = (SysDeptResponseVo) deptService.selectDeptById(Long.valueOf(byId.getPurchaseDeptId())).get("sysDept");
  233. byId.setPurchaseDeptName(sysDeptResponseVo.getDeptName());
  234. HashMap<String, Object> map = new HashMap<>();
  235. map.put("red_id", byId.getPlanPracticalId());
  236. map.put("type", SysFileRefEnum.PLAN_TEMPORARY.getType());
  237. List<SysFileRef> fileRefs = sysFileRefMapper.selectByMap(map);
  238. List<SysFileInfo> fileInfos = new ArrayList<>();
  239. BeanUtils.copyProperties(byId, responseVo);
  240. if (!ObjectUtils.isEmpty(fileRefs)) {
  241. for (SysFileRef ref : fileRefs) {
  242. SysFileInfo fileInfo = fileService.getById(ref.getFileId());
  243. fileInfos.add(fileInfo);
  244. }
  245. responseVo.setFileInfos(fileInfos);
  246. }
  247. return AjaxResult.success(responseVo);
  248. }
  249. @Transactional
  250. @Override
  251. public AjaxResult update(PlanQuarterStandardVo quarterStandardVo) {
  252. if (planQuarterMapper.countProjectNameOther(quarterStandardVo.getProjectName(), String.valueOf(quarterStandardVo.getPlanPracticalId())) > 0) {
  253. return AjaxResult.error("该项目名称已经存在");
  254. }
  255. PlanQuarter quarters = new PlanQuarter();
  256. try {
  257. BeanUtils.copyProperties(quarterStandardVo, quarters);
  258. } catch (Exception e) {
  259. e.printStackTrace();
  260. }
  261. quarters.setIsExcess(isExcessOrNo(quarters.getProjectType(), quarters.getEvaluation()));
  262. quarters.setUpdateTime(new Date());
  263. planQuarterMapper.updateInfoById(quarters);
  264. List<SysFileRef> sysFileRefs = quarterStandardVo.getSysFileRefs();
  265. HashMap<String, Object> map = new HashMap<>();
  266. map.put("red_id", quarters.getPlanPracticalId());
  267. map.put("type", SysFileRefEnum.PLAN_TEMPORARY.getType());
  268. sysFileRefMapper.deleteByMap(map);
  269. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  270. for (SysFileRef ref : sysFileRefs) {
  271. ref.setRedId(quarters.getPlanPracticalId());
  272. ref.setType(SysFileRefEnum.PLAN_TEMPORARY.getType());
  273. ref.setCreated(quarterStandardVo.getUpdated());
  274. ref.setCreateTime(new Date());
  275. ref.setUpdated(quarterStandardVo.getUpdated());
  276. ref.setUpdateTime(new Date());
  277. sysFileRefMapper.insert(ref);
  278. }
  279. }
  280. return AjaxResult.success();
  281. }
  282. @Override
  283. public String importPlanQuarter(List<PlanQuarterStandardVo> planQuarters, boolean isUpdateSupport, LoginUser loginUser) {
  284. if (StringUtils.isNull(planQuarters) || planQuarters.size() == 0) {
  285. throw new ServiceException("导入季度计划数据不能为空!");
  286. }
  287. List<PlanQuarter> list = new ArrayList<>();
  288. for (PlanQuarterStandardVo standardVo : planQuarters) {
  289. PlanQuarter quarter = new PlanQuarter();
  290. BeanUtils.copyProperties(standardVo, quarter);
  291. quarter.setPurchaseDeptName(standardVo.getPurchaseDeptId());
  292. list.add(quarter);
  293. }
  294. HashMap<String, HashMap<String, String>> planEnums = dictTypeService.getAboutEnums();
  295. HashMap<String, String> projectTypesMap = planEnums.get("projectTypes");
  296. HashMap<String, String> planPurchaseModesMap = planEnums.get("planPurchaseModes");
  297. HashMap<String, String> projectAttributes = planEnums.get("projectAttributes");
  298. HashMap<String, String> purchaseServices = planEnums.get("purchaseServices");
  299. int successNum = 0;
  300. int failureNum = 0;
  301. StringBuilder successMsg = new StringBuilder();
  302. StringBuilder failureMsg = new StringBuilder();
  303. //deptService
  304. for (PlanQuarter ofYear : list) {
  305. try {
  306. //验证项目名称是否重复导入
  307. //将录入信息中的值更改为要保存的数据
  308. if (planQuarterMapper.countProjectName(ofYear.getProjectName()) == 0) {
  309. //采购单位
  310. SysDept info = deptMapper.checkDeptNameOnlyOne(ofYear.getPurchaseDeptName());
  311. if (!ObjectUtils.isEmpty(info)) {
  312. ofYear.setPurchaseDeptId(info.getDeptId());
  313. } else {
  314. ++failureNum;
  315. failureMsg.append("*" + failureNum + "*采购单位“" + ofYear.getPurchaseDeptName() + "”不存在");
  316. }
  317. ofYear.setProjectType(projectTypesMap.get(ofYear.getProjectType()));
  318. ofYear.setProjectStatus(ProjectStatus.PLANWAITCOMMIT.getCode());
  319. ofYear.setPurchaseMode(planPurchaseModesMap.get(ofYear.getPurchaseMode()));
  320. //项目属性是多选字段
  321. StringBuilder builder = new StringBuilder();
  322. if (ofYear.getProjectAttr().contains(",")) {
  323. String[] split = ofYear.getProjectAttr().split(",");
  324. for (String s : split) {
  325. builder.append(projectAttributes.get(s) + ",");
  326. }
  327. } else {
  328. builder.append(projectAttributes.get(ofYear.getProjectAttr()));
  329. }
  330. ofYear.setProjectAttr(builder.toString());
  331. ofYear.setPurchaseServices(purchaseServices.get(ofYear.getPurchaseServices()));
  332. ofYear.setIsExcess(isExcessOrNo(ofYear.getProjectType(), ofYear.getEvaluation()));
  333. ofYear.setCreated(String.valueOf(loginUser.getUserId()));
  334. ofYear.setCreateTime(new Date());
  335. planQuarterMapper.insertPlanQuarter(ofYear);
  336. successNum++;
  337. successMsg.append("*" + successNum + "、项目 " + ofYear.getProjectName() + " 导入成功!");
  338. //} else if (isUpdateSupport) {
  339. // PlanQuarter quarter = plan.get(0);
  340. // BeanValidators.validateWithException(validator, ofYear);
  341. // quarter.setCreateTime(new Date());
  342. // quarter.setProjectStatus(ProjectStatus.PLANWAITCOMMIT.getCode());
  343. // planQuarterMapper.updateById(quarter);
  344. // successNum++;
  345. // successMsg.append("<br/>" + successNum + "、项目 " + ofYear.getProjectName() + " 更新成功");
  346. } else {
  347. failureNum++;
  348. failureMsg.append(failureNum + "*项目 " + ofYear.getProjectName() + " 已存在!/n");
  349. }
  350. } catch (Exception exc) {
  351. failureNum++;
  352. String msg = "*" + successNum + "*项目 " + ofYear.getProjectName() + " 导入失败";
  353. failureMsg.append(msg + exc.getMessage());
  354. log.error(msg, exc);
  355. }
  356. }
  357. if (failureNum > 0) {
  358. failureMsg.insert(0, "导入失败!共 " + failureNum + " 条数据格式不正确:");
  359. throw new ServiceException(failureMsg.toString());
  360. } else {
  361. successMsg.insert(0, "导入成功!共 " + successNum + " 条。");
  362. }
  363. return successMsg.toString();
  364. }
  365. @Override
  366. public AjaxResult commit(PlanQuarterStandardVo quarterStandardVo) {
  367. //PlanQuarter byId = PlanQuarterMapper.getById(quarterStandardVo.getPlanPracticalId());
  368. //BigDecimal evaluation = byId.getEvaluation();
  369. //BigDecimal threshold = new BigDecimal(0);
  370. ////获取各个项目类型设定的概算金额阈值
  371. //List<SysDictData> data = dictTypeService.selectDictDataByType("sys_over_limit_threshold");
  372. //HashMap<String, String> thresholdMap = new LinkedHashMap<>();
  373. ////各个类型的概算金额阈值
  374. //for (SysDictData dictData : data) {
  375. // // 类型----阈值
  376. // thresholdMap.put(dictData.getDictLabel(), dictData.getDictValue());
  377. //}
  378. ////项目类型
  379. //for (ProjectTypes value : ProjectTypes.values()) {
  380. // if (byId.getProjectType().equals(value.getCode())) {
  381. // threshold = BigDecimal.valueOf(Long.parseLong(thresholdMap.get(value.getInfo())));
  382. // }
  383. // break;
  384. //}
  385. //
  386. //if (evaluation.compareTo(threshold) == 1) {
  387. // //是超额项目
  388. //}
  389. int commit = planQuarterMapper.commit(quarterStandardVo.getPlanPracticalId());
  390. if (commit != 1) {
  391. return AjaxResult.error("项目状态数据异常");
  392. }
  393. return AjaxResult.success();
  394. }
  395. @Override
  396. @Transactional
  397. public AjaxResult reviewTo(PlanQuarterStandardVo vo) {
  398. //季度计划审核通过后同步到年度计划和项目管理
  399. PlanQuarter quarters = new PlanQuarter();
  400. PmDemand demand = new PmDemand();
  401. PlanQuarter byId = planQuarterMapper.getById(vo.getPlanPracticalId());
  402. if (ObjectUtils.isEmpty(byId.getPlanYearId())) {
  403. PlanYears ofYears = new PlanYears();
  404. BeanUtils.copyProperties(byId, ofYears);
  405. ofYears.setProjectStatus(ProjectStatus.PLANTOEXAMINE.getCode());
  406. planYearsMapper.insertPlanYears(ofYears);
  407. quarters.setPlanYearId(ofYears.getPlanYearId());
  408. }
  409. BeanUtils.copyProperties(byId, demand);
  410. demand.setPlanId(byId.getPlanPracticalId());
  411. //同步到项目管理状态为需求待填制
  412. demand.setProjectStatus(Long.valueOf(PmProjectStatus.DEMAND_WAIT_FILL.getCode()));
  413. demand.setCreateTime(new Date());
  414. pmDemandMapper.insert(demand);
  415. //计划附件也进行同步---查询年度计划附件后复制一份改为项目需求附件
  416. LambdaQueryWrapper<SysFileRef> sysFileRefLp = new LambdaQueryWrapper<>();
  417. sysFileRefLp.eq(SysFileRef::getType, SysFileRefEnum.PLAN_YEAR.getType());
  418. sysFileRefLp.eq(SysFileRef::getRedId, vo.getPlanYearId());
  419. List<SysFileRef> sysFileRefs = sysFileRefMapper.selectList(sysFileRefLp);
  420. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  421. for (SysFileRef ref : sysFileRefs) {
  422. ref.setRedId(demand.getDemandId());
  423. ref.setType(SysFileRefEnum.PM_DEMAND.getType());
  424. sysFileRefMapper.insert(ref);
  425. }
  426. }
  427. vo.setProjectStatus(ProjectStatus.PLANTOEXAMINE.getCode());
  428. return review(vo);
  429. }
  430. @Override
  431. @Transactional
  432. public AjaxResult reviewReturn(PlanQuarterStandardVo vo) {
  433. vo.setProjectStatus(ProjectStatus.PLANTOBACK.getCode());
  434. return review(vo);
  435. }
  436. private AjaxResult review(PlanQuarterStandardVo vo) {
  437. List<SysFileRef> sysFileRefs = vo.getSysFileRefs();
  438. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  439. for (SysFileRef ref : sysFileRefs) {
  440. ref.setRedId(vo.getPlanPracticalId());
  441. ref.setType(SysFileRefEnum.PLAN_TEMPORARY.getType());
  442. ref.setCreated(vo.getUpdated());
  443. ref.setCreateTime(new Date());
  444. ref.setUpdated(vo.getUpdated());
  445. ref.setUpdateTime(new Date());
  446. sysFileRefMapper.insert(ref);
  447. }
  448. }
  449. int review = planQuarterMapper.review(vo);
  450. if (review != 1) {
  451. return AjaxResult.error("项目状态数据异常");
  452. }
  453. return AjaxResult.success();
  454. }
  455. @Override
  456. public AjaxResult appUpdate(PlanQuarterStandardVo vo) {
  457. //如果项目管理中数据已填制,则不允许申请修改
  458. LambdaQueryWrapper<PmDemand> demandLp = new LambdaQueryWrapper<>();
  459. demandLp.eq(PmDemand::getPlanId, vo.getPlanPracticalId());
  460. PmDemand demand = pmDemandMapper.selectOne(demandLp);
  461. if (!String.valueOf(demand.getProjectStatus()).equals(PmProjectStatus.DEMAND_WAIT_FILL.getCode())) {
  462. return AjaxResult.error("项目信息已填制,不可更改");
  463. }
  464. //申请后会成为未提交的状态,可以进行修改
  465. vo.setProjectStatus(ProjectStatus.PLANWAITCOMMIT.getCode());
  466. int review = planQuarterMapper.review(vo);
  467. if (review != 1) {
  468. return AjaxResult.error("项目状态数据异常");
  469. }
  470. return AjaxResult.success();
  471. }
  472. @Override
  473. public AjaxResult sendLetter(PlanQuarterStandardVo quarterStandardVo) {
  474. int review = planQuarterMapper.sendLetter(quarterStandardVo.getPlanPracticalId());
  475. if (review != 1) {
  476. return AjaxResult.error("项目状态数据异常");
  477. }
  478. return AjaxResult.success();
  479. }
  480. @Override
  481. public AjaxResult upLoadPlanFile(PlanQuarterStandardVo quarterStandardVo) {
  482. List<SysFileRef> sysFileRefs = quarterStandardVo.getSysFileRefs();
  483. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  484. for (SysFileRef ref : sysFileRefs) {
  485. ref.setRedId(quarterStandardVo.getPlanPracticalId());
  486. ref.setType(SysFileRefEnum.PLAN_TEMPORARY.getType());
  487. sysFileRefMapper.insert(ref);
  488. }
  489. }
  490. return AjaxResult.success();
  491. }
  492. @Override
  493. public AjaxResult downLoadPlanFile(PlanQuarterStandardVo quarterStandardVo) {
  494. return AjaxResult.success();
  495. }
  496. //判断是否为超额计划
  497. public String isExcessOrNo(String projectType, BigDecimal evaluation) {
  498. BigDecimal threshold = new BigDecimal(0);
  499. //获取各个项目类型设定的概算金额阈值
  500. List<SysDictData> data = dictTypeService.selectDictDataByType("sys_over_limit_threshold");
  501. HashMap<String, String> thresholdMap = new LinkedHashMap<>();
  502. //各个类型的概算金额阈值
  503. for (SysDictData dictData : data) {
  504. // 类型----阈值
  505. thresholdMap.put(dictData.getDictLabel(), dictData.getDictValue());
  506. }
  507. //项目类型
  508. for (ProjectTypes value : ProjectTypes.values()) {
  509. if (projectType.equals(value.getCode())) {
  510. threshold = BigDecimal.valueOf(Long.parseLong(thresholdMap.get(value.getInfo())));
  511. }
  512. break;
  513. }
  514. if (evaluation.compareTo(threshold) == 1) {
  515. //是超额计划
  516. return ("1");
  517. } else {
  518. return ("0");
  519. }
  520. }
  521. //字段赋值对应的名称
  522. public List<PlanQuarter> changeTo(List<PlanQuarter> planQuarter) {
  523. HashMap<String, HashMap<String, String>> planEnums = dictTypeService.getAboutEnums();
  524. HashMap<String, String> projectTypesMap = planEnums.get("projectTypes");
  525. HashMap<String, String> planPurchaseModesMap = planEnums.get("planPurchaseModes");
  526. HashMap<String, String> projectAttributes = planEnums.get("projectAttributes");
  527. HashMap<String, String> purchaseServices = planEnums.get("purchaseServices");
  528. List<PlanQuarter> list = new ArrayList<PlanQuarter>();
  529. for (PlanQuarter planYear : planQuarter) {
  530. SysDeptResponseVo sysDeptResponseVo = (SysDeptResponseVo) deptService.selectDeptById(Long.valueOf(planYear.getPurchaseDeptId())).get("sysDept");
  531. planYear.setPurchaseDeptName(sysDeptResponseVo.getDeptName());
  532. for (Map.Entry<String, String> entry : projectTypesMap.entrySet()) {
  533. if (planYear.getProjectType().equals(entry.getValue())) {
  534. planYear.setProjectTypeStr(entry.getKey());
  535. break;
  536. }
  537. }
  538. for (Map.Entry<String, String> entry : planPurchaseModesMap.entrySet()) {
  539. if (planYear.getPurchaseMode().equals(entry.getValue())) {
  540. planYear.setPurchaseModeStr(entry.getKey());
  541. break;
  542. }
  543. }
  544. //项目属性是拼接的
  545. if (!ObjectUtils.isEmpty(planYear.getProjectAttr())) {
  546. if (planYear.getProjectAttr().length() > 1) {
  547. StringBuilder builder = new StringBuilder();
  548. String[] split = planYear.getProjectAttr().split(",");
  549. for (String s : split) {
  550. for (Map.Entry<String, String> entry : projectAttributes.entrySet()) {
  551. if (s.equals(entry.getValue())) {
  552. builder.append(entry.getKey() + ",");
  553. break;
  554. }
  555. }
  556. }
  557. planYear.setProjectAttrStr(builder.toString());
  558. } else {
  559. for (Map.Entry<String, String> entry : projectAttributes.entrySet()) {
  560. if (planYear.getProjectAttr().equals(entry.getValue())) {
  561. planYear.setProjectAttrStr(entry.getKey());
  562. break;
  563. }
  564. }
  565. }
  566. }
  567. for (Map.Entry<String, String> entry : purchaseServices.entrySet()) {
  568. if (planYear.getPurchaseServices().equals(entry.getValue())) {
  569. planYear.setPurchaseServicesStr(entry.getKey());
  570. break;
  571. }
  572. }
  573. list.add(planYear);
  574. }
  575. return list;
  576. }
  577. }