PmDemandServiceImpl.java 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691
  1. package com.ozs.pm.service.impl;
  2. import java.util.*;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  7. import com.ozs.common.enums.*;
  8. import com.ozs.common.utils.DateUtils;
  9. import com.ozs.common.utils.StringUtils;
  10. import com.ozs.common.utils.bean.BeanUtils;
  11. import com.ozs.pm.doman.*;
  12. import com.ozs.pm.doman.vo.requestVo.*;
  13. import com.ozs.pm.doman.vo.responseVo.*;
  14. import com.ozs.pm.mapper.PmDemandMapper;
  15. import com.ozs.pm.service.*;
  16. import com.ozs.system.domain.SysFileInfo;
  17. import com.ozs.system.domain.SysFileRef;
  18. import com.ozs.system.domain.vo.responseVo.SysDeptResponseVo;
  19. import com.ozs.system.service.ISysDeptService;
  20. import com.ozs.system.service.ISysDictDataService;
  21. import com.ozs.system.service.SysFileRefService;
  22. import com.ozs.system.service.SysFileService;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.stereotype.Service;
  25. import org.springframework.util.ObjectUtils;
  26. /**
  27. * 采购需求Service业务层处理
  28. *
  29. * @author ruoyi
  30. * @date 2023-01-16
  31. */
  32. @Service
  33. public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> implements IPmDemandService
  34. {
  35. @Autowired
  36. private PmDemandMapper pmDemandMapper;
  37. @Autowired
  38. private IPmDemandEquipService iPmDemandEquipService;
  39. @Autowired
  40. private IPmDemandMaterialsService iPmDemandMaterialsService;
  41. @Autowired
  42. private IPmDemandServeService iPmDemandServeService;
  43. @Autowired
  44. private IPmDemandEngineeringService iPmDemandEngineeringService;
  45. @Autowired
  46. private ISysDeptService deptService;
  47. @Autowired
  48. private ISysDictDataService dictDataService;
  49. @Autowired
  50. private SysFileService fileService;
  51. @Autowired
  52. private SysFileRefService sysFileRefService;
  53. @Autowired
  54. private IPmFlowChartService iPmFlowChartService;
  55. /**
  56. * 查询采购需求
  57. *
  58. * @param demandId 采购需求主键
  59. * @return 采购需求
  60. */
  61. @Override
  62. public PmDemandResVo selectPmDemandByDemandId(Long demandId) {
  63. PmDemand pmDemand = pmDemandMapper.selectPmDemandByDemandId(demandId);
  64. if(pmDemand != null){
  65. PmDemandResVo vo = new PmDemandResVo();
  66. BeanUtils.copyProperties(pmDemand, vo);
  67. SysDeptResponseVo sysDeptResponseVo = (SysDeptResponseVo) deptService.selectDeptById(vo.getPurchaseDeptId()).get("sysDept");
  68. if(sysDeptResponseVo != null){
  69. vo.setPurchaseDeptName(sysDeptResponseVo.getDeptName());
  70. }
  71. String purchaseServicesName = dictDataService.selectDictLabel("purchase_services", vo.getPurchaseServices());
  72. if(StringUtils.isNotEmpty(purchaseServicesName)){
  73. vo.setPurchaseServicesName(purchaseServicesName);
  74. }
  75. HashMap<String, String> demandFileMap = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND.getType());
  76. if(demandFileMap != null){
  77. vo.setDemandFileMap(demandFileMap);
  78. }
  79. HashMap<String, String> auditFileMap = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND_EXAMINE.getType());
  80. if(auditFileMap != null){
  81. vo.setAuditFileMap(auditFileMap);
  82. }
  83. //项目类型
  84. for (ProjectTypes value : ProjectTypes.values()) {
  85. if (vo.getProjectType() != null && vo.getProjectType().equals(value.getCode())) {
  86. vo.setProjectTypeName(value.getInfo());
  87. break;
  88. }
  89. }
  90. //是否为超限额计划
  91. for (IsExcess value : IsExcess.values()) {
  92. if (vo.getIsExcess() != null && vo.getIsExcess().equals(value.getCode())) {
  93. vo.setIsExcessName(value.getInfo());
  94. break;
  95. }
  96. }
  97. //采购方式
  98. for (PlanPurchaseMode value : PlanPurchaseMode.values()) {
  99. if (vo.getPurchaseMode() != null && vo.getPurchaseMode().equals(value.getCode())) {
  100. vo.setPurchaseModeName(value.getInfo());
  101. break;
  102. }
  103. }
  104. //项目属性
  105. for (ProjectAttribute value : ProjectAttribute.values()) {
  106. if (vo.getProjectAttr() != null && vo.getProjectAttr().equals(value.getCode())) {
  107. vo.setProjectAttrName(value.getInfo());
  108. break;
  109. }
  110. }
  111. //预警状态
  112. for (WarnStatus value : WarnStatus.values()) {
  113. if (vo.getWarnStatus() != null && vo.getWarnStatus().equals(value.getCode())) {
  114. vo.setWarnStatusName(value.getInfo());
  115. break;
  116. }
  117. }
  118. //项目状态
  119. for (PmProjectStatus value : PmProjectStatus.values()) {
  120. if (vo.getProjectStatus() != null && vo.getProjectStatus().equals(value.getCode())) {
  121. vo.setProjectStatusName(value.getInfo());
  122. break;
  123. }
  124. }
  125. if(ProjectTypes.EQUIPMENTTYPE.getCode().equals(vo.getProjectType())){//装备类
  126. PmDemandEquip obj = new PmDemandEquip();
  127. obj.setDemandId(demandId);
  128. List<PmDemandEquip> list = iPmDemandEquipService.selectPmDemandEquipList(obj);
  129. if(list !=null && list.size() > 0){
  130. PmDemandEquipResVo responseVo = new PmDemandEquipResVo();
  131. BeanUtils.copyProperties(list.get(0),responseVo);
  132. //采购方式建议
  133. for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
  134. if (responseVo.getProcurementMethodSuggest() != null && responseVo.getProcurementMethodSuggest().equals(value.getCode())) {
  135. responseVo.setProcurementMethodSuggestName(value.getInfo());
  136. break;
  137. }
  138. }
  139. HashMap<String, String> fileMap1 = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND_EQUIP.getType());
  140. if(fileMap1 != null){
  141. responseVo.setFileMap(fileMap1);
  142. }
  143. vo.setPmDemandEquipResVo(responseVo);
  144. }
  145. } else if(ProjectTypes.MATERIALTYPE.getCode().equals(vo.getProjectType())){ //物资类
  146. PmDemandMaterials obj = new PmDemandMaterials();
  147. obj.setDemandId(demandId);
  148. List<PmDemandMaterials> list = iPmDemandMaterialsService.selectPmDemandMaterialsList(obj);
  149. if(list !=null && list.size() > 0){
  150. PmDemandMaterialsResVo responseVo = new PmDemandMaterialsResVo();
  151. BeanUtils.copyProperties(list.get(0),responseVo);
  152. //采购方式建议
  153. for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
  154. if (responseVo.getProcurementMethodSuggest() != null && responseVo.getProcurementMethodSuggest().equals(value.getCode())) {
  155. responseVo.setProcurementMethodSuggestName(value.getInfo());
  156. break;
  157. }
  158. }
  159. HashMap<String, String> fileMap2 = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND_MATERIALS.getType());
  160. if(fileMap2 != null){
  161. responseVo.setFileMap(fileMap2);
  162. }
  163. vo.setPmDemandMaterialsResVo(responseVo);
  164. }
  165. } else if(ProjectTypes.SERVICESTYPE.getCode().equals(vo.getProjectType())){//服务类
  166. PmDemandServe obj = new PmDemandServe();
  167. obj.setDemandId(demandId);
  168. List<PmDemandServe> list = iPmDemandServeService.selectPmDemandServeList(obj);
  169. if(list !=null && list.size() > 0){
  170. PmDemandServeResVo responseVo = new PmDemandServeResVo();
  171. BeanUtils.copyProperties(list.get(0),responseVo);
  172. //采购方式建议
  173. for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
  174. if (responseVo.getProcurementMethodSuggest() != null && responseVo.getProcurementMethodSuggest().equals(value.getCode())) {
  175. responseVo.setProcurementMethodSuggestName(value.getInfo());
  176. break;
  177. }
  178. }
  179. HashMap<String, String> fileMap3 = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND_SERVE.getType());
  180. if(fileMap3 != null){
  181. responseVo.setFileMap(fileMap3);
  182. }
  183. vo.setPmDemandServeResVo(responseVo);
  184. }
  185. } else if(ProjectTypes.PLANTOEXAMINETYPE.getCode().equals(vo.getProjectType())){//工程类
  186. PmDemandEngineering obj = new PmDemandEngineering();
  187. obj.setDemandId(demandId);
  188. List<PmDemandEngineering> list = iPmDemandEngineeringService.selectPmDemandEngineeringList(obj);
  189. if(list !=null && list.size() > 0){
  190. PmDemandEngineeringResVo responseVo = new PmDemandEngineeringResVo();
  191. BeanUtils.copyProperties(list.get(0),responseVo);
  192. //采购方式建议
  193. for (ProcurementMethodSuggest value : ProcurementMethodSuggest.values()) {
  194. if (responseVo.getProcurementMethodSuggest() != null && responseVo.getProcurementMethodSuggest().equals(value.getCode())) {
  195. responseVo.setProcurementMethodSuggestName(value.getInfo());
  196. break;
  197. }
  198. }
  199. //项目类别
  200. for (EngineeringProjectCategory value : EngineeringProjectCategory.values()) {
  201. if (responseVo.getProjectCategory() != null && responseVo.getProjectCategory().equals(value.getCode())) {
  202. responseVo.setProjectCategoryName(value.getInfo());
  203. break;
  204. }
  205. }
  206. //承包方式
  207. for (EngineeringContractingMode value : EngineeringContractingMode.values()) {
  208. if (responseVo.getContractingMode() != null && responseVo.getContractingMode().equals(value.getCode())) {
  209. responseVo.setContractingModeName(value.getInfo());
  210. break;
  211. }
  212. }
  213. //施工图是否完成
  214. for (ConstructionDrawing value : ConstructionDrawing.values()) {
  215. if (responseVo.getConstructionDrawing() != null && responseVo.getConstructionDrawing().equals(value.getCode())) {
  216. responseVo.setConstructionDrawingName(value.getInfo());
  217. break;
  218. }
  219. }
  220. HashMap<String, String> fileMap4 = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_DEMAND_ENGINEERING.getType());
  221. if(fileMap4 != null){
  222. responseVo.setFileMap(fileMap4);
  223. }
  224. vo.setPmDemandEngineeringResVo(responseVo);
  225. }
  226. }
  227. return vo;
  228. } else {
  229. return null;
  230. }
  231. }
  232. /**
  233. * 查询采购需求列表
  234. *
  235. * @param pmDemandReqVo
  236. * @return 采购需求
  237. */
  238. @Override
  239. public IPage<PmDemandResVo> selectPmDemandList(PmDemandReqVo pmDemandReqVo) {
  240. LambdaQueryWrapper<PmDemand> lw = new LambdaQueryWrapper<>();
  241. if (!StringUtils.isBlank(pmDemandReqVo.getProjectName())) {
  242. lw.like(PmDemand::getProjectName, "%" + pmDemandReqVo.getProjectName() + "%");
  243. }
  244. if (!StringUtils.isBlank(pmDemandReqVo.getPurchaseServices())) {
  245. lw.eq(PmDemand::getPurchaseServices, pmDemandReqVo.getPurchaseServices());
  246. }
  247. if (pmDemandReqVo.getProjectStatus() != null) {
  248. lw.eq(PmDemand::getProjectStatus, pmDemandReqVo.getProjectStatus());
  249. }
  250. if (pmDemandReqVo.getIsExcess() != null) {
  251. lw.eq(PmDemand::getIsExcess, pmDemandReqVo.getIsExcess());
  252. }
  253. if (!StringUtils.isBlank(pmDemandReqVo.getBeginDate())) {
  254. lw.apply("(plan_demand_sub_time >= '" + pmDemandReqVo.getBeginDate() +"' or plan_purchase_finish_time >= '" + pmDemandReqVo.getBeginDate() + "' or plan_deliver_time >= '" + pmDemandReqVo.getBeginDate() +"' )");
  255. }
  256. if (!StringUtils.isBlank(pmDemandReqVo.getEndDate())) {
  257. lw.apply("(plan_demand_sub_time <= '" + pmDemandReqVo.getEndDate() +"' or plan_purchase_finish_time <= '" + pmDemandReqVo.getEndDate() + "' or plan_deliver_time <= '" + pmDemandReqVo.getEndDate() +"' )");
  258. }
  259. IPage<PmDemand> pageRes = this.page(new Page<>(pmDemandReqVo.getPageNum(), pmDemandReqVo.getPageSize()), lw);
  260. IPage<PmDemandResVo> results = new Page<>(pageRes.getCurrent(), pageRes.getSize(), pageRes.getTotal());
  261. if(pageRes.getRecords() != null && pageRes.getRecords().size() > 0){
  262. List<PmDemandResVo> pmDemandResponseVoList = new ArrayList<>();
  263. for(PmDemand pmDemand1 : pageRes.getRecords()){
  264. PmDemandResVo vo = new PmDemandResVo();
  265. BeanUtils.copyProperties(pmDemand1,vo);
  266. if(vo.getPurchaseDeptId() != null){
  267. Map<String, Object> deptMap = deptService.selectDeptById(vo.getPurchaseDeptId());
  268. if(deptMap!= null){
  269. SysDeptResponseVo sysDeptResponseVo = (SysDeptResponseVo)deptMap.get("sysDept");
  270. if(sysDeptResponseVo != null){
  271. vo.setPurchaseDeptName(sysDeptResponseVo.getDeptName());
  272. }
  273. }
  274. }
  275. String purchaseServicesName = dictDataService.selectDictLabel("purchase_services",vo.getPurchaseServices());
  276. if(StringUtils.isNotEmpty(purchaseServicesName)){
  277. vo.setPurchaseServicesName(purchaseServicesName);
  278. }
  279. //项目类型
  280. for (ProjectTypes value : ProjectTypes.values()) {
  281. if (vo.getProjectType() != null && vo.getProjectType().equals(value.getCode())) {
  282. vo.setProjectTypeName(value.getInfo());
  283. break;
  284. }
  285. }
  286. //是否为超限额计划
  287. for (IsExcess value : IsExcess.values()) {
  288. if (vo.getIsExcess() != null && vo.getIsExcess().equals(value.getCode())) {
  289. vo.setIsExcessName(value.getInfo());
  290. break;
  291. }
  292. }
  293. //采购方式
  294. for (PlanPurchaseMode value : PlanPurchaseMode.values()) {
  295. if (vo.getPurchaseMode() != null && vo.getPurchaseMode().equals(value.getCode())) {
  296. vo.setPurchaseModeName(value.getInfo());
  297. break;
  298. }
  299. }
  300. //项目属性
  301. for (ProjectAttribute value : ProjectAttribute.values()) {
  302. if (vo.getProjectAttr() != null && vo.getProjectAttr().equals(value.getCode())) {
  303. vo.setProjectAttrName(value.getInfo());
  304. break;
  305. }
  306. }
  307. //预警状态
  308. for (WarnStatus value : WarnStatus.values()) {
  309. if (vo.getWarnStatus() != null && vo.getWarnStatus().equals(value.getCode())) {
  310. vo.setWarnStatusName(value.getInfo());
  311. break;
  312. }
  313. }
  314. //项目状态
  315. for (PmProjectStatus value : PmProjectStatus.values()) {
  316. if (vo.getProjectStatus() != null && vo.getProjectStatus().equals(value.getCode())) {
  317. vo.setProjectStatusName(value.getInfo());
  318. break;
  319. }
  320. }
  321. pmDemandResponseVoList.add(vo);
  322. }
  323. results.setRecords(pmDemandResponseVoList);
  324. }
  325. return results;
  326. }
  327. /**
  328. * 新增采购需求
  329. *
  330. * @param pmDemand 采购需求
  331. * @return 结果
  332. */
  333. @Override
  334. public int insertPmDemand(PmDemand pmDemand) {
  335. pmDemand.setCreateTime(DateUtils.getNowDate());
  336. return pmDemandMapper.insertPmDemand(pmDemand);
  337. }
  338. /**
  339. * 修改采购需求
  340. *
  341. * @param pmDemand 采购需求
  342. * @return 结果
  343. */
  344. @Override
  345. public int updatePmDemand(PmDemand pmDemand) {
  346. pmDemand.setUpdateTime(DateUtils.getNowDate());
  347. return pmDemandMapper.updatePmDemand(pmDemand);
  348. }
  349. /**
  350. * 需求建档
  351. *
  352. * @param vo 采购需求
  353. * @return 结果
  354. */
  355. @Override
  356. public int bookBuilding(PmBookBuildingReqVo vo) {
  357. PmDemand pmDemand = pmDemandMapper.selectPmDemandByDemandId(vo.getDemandId());
  358. String projectType = pmDemand.getProjectType();
  359. if(ProjectTypes.EQUIPMENTTYPE.getCode().equals(projectType)){ //装备类
  360. PmDemandEquipReqVo pmDemandEquipReqVo = vo.getPmDemandEquipReqVo();
  361. PmDemandEquip pmDemandEquipReq = new PmDemandEquip();
  362. pmDemandEquipReq.setDemandId(vo.getDemandId());
  363. PmDemandEquip pmDemandEquip = null;
  364. List<PmDemandEquip> pmDemandEquipList = iPmDemandEquipService.selectPmDemandEquipList(pmDemandEquipReq);
  365. if(pmDemandEquipList != null && pmDemandEquipList.size() > 0){
  366. pmDemandEquip = pmDemandEquipList.get(0);
  367. BeanUtils.copyProperties(pmDemandEquipReqVo,pmDemandEquip);
  368. iPmDemandEquipService.updatePmDemandEquip(pmDemandEquip);
  369. } else {
  370. pmDemandEquip = new PmDemandEquip();
  371. BeanUtils.copyProperties(pmDemandEquipReqVo,pmDemandEquip);
  372. iPmDemandEquipService.insertPmDemandEquip(pmDemandEquip);
  373. }
  374. List<SysFileRef> sysFileRefs = pmDemandEquipReqVo.getSysFileRefs();
  375. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  376. for (SysFileRef ref : sysFileRefs) {
  377. ref.setRedId(pmDemandEquip.getDemandEquipId());
  378. ref.setType(SysFileRefEnum.PM_DEMAND_EQUIP.getType());
  379. ref.setCreated(vo.getUpdateBy());
  380. ref.setCreateTime(new Date());
  381. ref.setUpdated(vo.getUpdateBy());
  382. ref.setUpdateTime(new Date());
  383. sysFileRefService.save(ref);
  384. }
  385. }
  386. } else if(ProjectTypes.MATERIALTYPE.getCode().equals(projectType)) { //物资类
  387. PmDemandMaterialsReqVo pmDemandMaterialsReqVo = vo.getPmDemandMaterialsReqVo();
  388. PmDemandMaterials pmDemandMaterialsReq = new PmDemandMaterials();
  389. pmDemandMaterialsReq.setDemandId(vo.getDemandId());
  390. PmDemandMaterials pmDemandMaterials = null;
  391. List<PmDemandMaterials> pmDemandMaterialsList = iPmDemandMaterialsService.selectPmDemandMaterialsList(pmDemandMaterialsReq);
  392. if(pmDemandMaterialsList != null && pmDemandMaterialsList.size() > 0){
  393. pmDemandMaterials = pmDemandMaterialsList.get(0);
  394. BeanUtils.copyProperties(pmDemandMaterialsReqVo,pmDemandMaterials);
  395. iPmDemandMaterialsService.updatePmDemandMaterials(pmDemandMaterials);
  396. } else {
  397. pmDemandMaterials = new PmDemandMaterials();
  398. BeanUtils.copyProperties(pmDemandMaterialsReqVo,pmDemandMaterials);
  399. iPmDemandMaterialsService.insertPmDemandMaterials(pmDemandMaterials);
  400. }
  401. List<SysFileRef> sysFileRefs = pmDemandMaterialsReqVo.getSysFileRefs();
  402. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  403. for (SysFileRef ref : sysFileRefs) {
  404. ref.setRedId(pmDemandMaterials.getDemandMaterialsId());
  405. ref.setType(SysFileRefEnum.PM_DEMAND_MATERIALS.getType());
  406. ref.setCreated(vo.getUpdateBy());
  407. ref.setCreateTime(new Date());
  408. ref.setUpdated(vo.getUpdateBy());
  409. ref.setUpdateTime(new Date());
  410. sysFileRefService.save(ref);
  411. }
  412. }
  413. } else if(ProjectTypes.SERVICESTYPE.getCode().equals(projectType)) { //服务类
  414. PmDemandServeReqVo pmDemandServeReqVo = vo.getPmDemandServeReqVo();
  415. PmDemandServe pmDemandServeReq = new PmDemandServe();
  416. pmDemandServeReq.setDemandId(vo.getDemandId());
  417. PmDemandServe pmDemandServe = null;
  418. List<PmDemandServe> pmDemandServeList = iPmDemandServeService.selectPmDemandServeList(pmDemandServeReq);
  419. if(pmDemandServeList != null && pmDemandServeList.size() > 0){
  420. pmDemandServe = pmDemandServeList.get(0);
  421. BeanUtils.copyProperties(pmDemandServeReqVo,pmDemandServe);
  422. iPmDemandServeService.updatePmDemandServe(pmDemandServe);
  423. } else {
  424. pmDemandServe = new PmDemandServe();
  425. BeanUtils.copyProperties(pmDemandServeReqVo,pmDemandServe);
  426. iPmDemandServeService.insertPmDemandServe(pmDemandServe);
  427. }
  428. List<SysFileRef> sysFileRefs = pmDemandServeReqVo.getSysFileRefs();
  429. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  430. for (SysFileRef ref : sysFileRefs) {
  431. ref.setRedId(pmDemandServe.getDemandServeId());
  432. ref.setType(SysFileRefEnum.PM_DEMAND_SERVE.getType());
  433. ref.setCreated(vo.getUpdateBy());
  434. ref.setCreateTime(new Date());
  435. ref.setUpdated(vo.getUpdateBy());
  436. ref.setUpdateTime(new Date());
  437. sysFileRefService.save(ref);
  438. }
  439. }
  440. } else if(ProjectTypes.PLANTOEXAMINETYPE.getCode().equals(projectType)) { //工程类
  441. PmDemandEngineeringReqVo pmDemandEngineeringReqVo = vo.getPmDemandEngineeringReqVo();
  442. PmDemandEngineering pmDemandEngineeringReq = new PmDemandEngineering();
  443. pmDemandEngineeringReq.setDemandId(vo.getDemandId());
  444. PmDemandEngineering pmDemandEngineering = null;
  445. List<PmDemandEngineering> pmDemandEngineeringList = iPmDemandEngineeringService.selectPmDemandEngineeringList(pmDemandEngineeringReq);
  446. if(pmDemandEngineeringList != null && pmDemandEngineeringList.size() > 0){
  447. pmDemandEngineering = pmDemandEngineeringList.get(0);
  448. BeanUtils.copyProperties(pmDemandEngineeringReqVo,pmDemandEngineering);
  449. iPmDemandEngineeringService.updatePmDemandEngineering(pmDemandEngineering);
  450. } else {
  451. pmDemandEngineering = new PmDemandEngineering();
  452. BeanUtils.copyProperties(pmDemandEngineeringReqVo,pmDemandEngineering);
  453. iPmDemandEngineeringService.insertPmDemandEngineering(pmDemandEngineering);
  454. }
  455. List<SysFileRef> sysFileRefs = pmDemandEngineeringReqVo.getSysFileRefs();
  456. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  457. for (SysFileRef ref : sysFileRefs) {
  458. ref.setRedId(pmDemandEngineering.getDemandEngineeringId());
  459. ref.setType(SysFileRefEnum.PM_DEMAND_ENGINEERING.getType());
  460. ref.setCreated(vo.getUpdateBy());
  461. ref.setCreateTime(new Date());
  462. ref.setUpdated(vo.getUpdateBy());
  463. ref.setUpdateTime(new Date());
  464. sysFileRefService.save(ref);
  465. }
  466. }
  467. }
  468. pmDemand.setUpdateBy(vo.getUpdateBy());
  469. pmDemand.setUpdateTime(DateUtils.getNowDate());
  470. return pmDemandMapper.updatePmDemand(pmDemand);
  471. }
  472. private HashMap<String, String> getFileMap(Long redId,Integer type){
  473. HashMap<String, Object> map = new HashMap<>();
  474. map.put("red_id", redId);
  475. map.put("type", type);
  476. List<SysFileRef> fileRefs = sysFileRefService.listByMap(map);
  477. if (!ObjectUtils.isEmpty(fileRefs)) {
  478. HashMap<String, String> fileMap = new HashMap<>();
  479. for (SysFileRef ref : fileRefs) {
  480. SysFileInfo fileInfo = fileService.getById(ref.getFileId());
  481. fileMap.put(fileInfo.getFileUrl(), fileInfo.getFileName());
  482. }
  483. return fileMap;
  484. } else {
  485. return null;
  486. }
  487. }
  488. /**
  489. * 查看流程图
  490. *
  491. * @param demandId 采购需求主键
  492. * @return 采购需求
  493. */
  494. @Override
  495. public String viewFlowChart(Long demandId) {
  496. PmDemand pmDemand = pmDemandMapper.selectPmDemandByDemandId(demandId);
  497. String projectStatus = String.valueOf(pmDemand.getProjectStatus());
  498. String moduleName = null;
  499. //todo
  500. if (PmProjectStatus.DEMAND_WAIT_FILL.getCode().equals(projectStatus) || PmProjectStatus.DEMAND_AUDIT_RETURN.getCode().equals(projectStatus)) {
  501. moduleName = "需求填制";
  502. } else if(PmProjectStatus.DEMAND_WAIT_COMMIT.getCode().equals(projectStatus)) {
  503. moduleName = "需求提交";
  504. } else if(PmProjectStatus.DEMAND_WAIT_AUDIT.getCode().equals(projectStatus)) {
  505. moduleName = "需求审核";
  506. } else if(PmProjectStatus.TASK_WAIT_RELEASE.getCode().equals(projectStatus)) {
  507. moduleName = "任务下达";
  508. } else if(PmProjectStatus.BID_INFO_WAIT_FILL.getCode().equals(projectStatus)) {
  509. moduleName = "中标情况填制";
  510. } else if(PmProjectStatus.CONTRACT_WAIT_FILL.getCode().equals(projectStatus)) {
  511. moduleName = "合同填制";
  512. } else if(PmProjectStatus.UNDER_CONSTRUCTION.getCode().equals(projectStatus)) {
  513. moduleName = "建设文档填制";
  514. } else if(PmProjectStatus.COMPLETION_CONSTRUCTION.getCode().equals(projectStatus)) {
  515. moduleName = "项目归档";
  516. }
  517. return moduleName;
  518. }
  519. public PmFlowChartResVo getModuleInfo(Long demandId,String moduleName){
  520. PmDemand pmDemand = pmDemandMapper.selectPmDemandByDemandId(demandId);
  521. String projectType = pmDemand.getProjectType();
  522. PmFlowChart pmFlowChartReq = new PmFlowChart();
  523. pmFlowChartReq.setModuleName(moduleName);
  524. List<PmFlowChart> pmFlowChartList = iPmFlowChartService.selectPmFlowChartList(pmFlowChartReq);
  525. if(pmFlowChartList == null || pmFlowChartList.size() ==0){
  526. return null;
  527. }
  528. PmFlowChartResVo vo = new PmFlowChartResVo();
  529. BeanUtils.copyProperties(pmFlowChartList.get(0), vo);
  530. if("需求填制".equals(moduleName)) {
  531. HashMap<String, String> fileMap = getFileMap(demandId,SysFileRefEnum.PM_DEMAND.getType());
  532. if(fileMap != null){
  533. vo.setFileMap(fileMap);
  534. }
  535. } else if("需求提交".equals(moduleName)) {
  536. if(ProjectTypes.EQUIPMENTTYPE.getCode().equals(projectType)){ //装备类
  537. PmDemandEquip pmDemandEquipReq = new PmDemandEquip();
  538. pmDemandEquipReq.setDemandId(demandId);
  539. List<PmDemandEquip> pmDemandEquipList = iPmDemandEquipService.selectPmDemandEquipList(pmDemandEquipReq);
  540. if(pmDemandEquipList != null && pmDemandEquipList.size() > 0){
  541. HashMap<String, String> fileMap = getFileMap(pmDemandEquipList.get(0).getDemandEquipId(),SysFileRefEnum.PM_DEMAND_EQUIP.getType());
  542. if(fileMap != null){
  543. vo.setFileMap(fileMap);
  544. }
  545. }
  546. } else if(ProjectTypes.MATERIALTYPE.getCode().equals(projectType)) { //物资类
  547. PmDemandMaterials pmDemandMaterialsReq = new PmDemandMaterials();
  548. pmDemandMaterialsReq.setDemandId(demandId);
  549. List<PmDemandMaterials> pmDemandMaterialsList = iPmDemandMaterialsService.selectPmDemandMaterialsList(pmDemandMaterialsReq);
  550. if(pmDemandMaterialsList != null && pmDemandMaterialsList.size() > 0){
  551. HashMap<String, String> fileMap = getFileMap(pmDemandMaterialsList.get(0).getDemandMaterialsId(),SysFileRefEnum.PM_DEMAND_MATERIALS.getType());
  552. if(fileMap != null){
  553. vo.setFileMap(fileMap);
  554. }
  555. }
  556. } else if(ProjectTypes.SERVICESTYPE.getCode().equals(projectType)) { //服务类
  557. PmDemandServe pmDemandServeReq = new PmDemandServe();
  558. pmDemandServeReq.setDemandId(demandId);
  559. List<PmDemandServe> pmDemandServeList = iPmDemandServeService.selectPmDemandServeList(pmDemandServeReq);
  560. if(pmDemandServeList != null && pmDemandServeList.size() > 0){
  561. HashMap<String, String> fileMap = getFileMap(pmDemandServeList.get(0).getDemandServeId(),SysFileRefEnum.PM_DEMAND_SERVE.getType());
  562. if(fileMap != null){
  563. vo.setFileMap(fileMap);
  564. }
  565. }
  566. } else if(ProjectTypes.PLANTOEXAMINETYPE.getCode().equals(projectType)) { //工程类
  567. PmDemandEngineering pmDemandEngineeringReq = new PmDemandEngineering();
  568. pmDemandEngineeringReq.setDemandId(demandId);
  569. List<PmDemandEngineering> pmDemandEngineeringList = iPmDemandEngineeringService.selectPmDemandEngineeringList(pmDemandEngineeringReq);
  570. if(pmDemandEngineeringList != null && pmDemandEngineeringList.size() > 0){
  571. HashMap<String, String> fileMap = getFileMap(pmDemandEngineeringList.get(0).getDemandEngineeringId(),SysFileRefEnum.PM_DEMAND_ENGINEERING.getType());
  572. if(fileMap != null){
  573. vo.setFileMap(fileMap);
  574. }
  575. }
  576. }
  577. } else if("需求审核".equals(moduleName)) {
  578. HashMap<String, String> fileMap = getFileMap(demandId,SysFileRefEnum.PM_DEMAND_EXAMINE.getType());
  579. if(fileMap != null){
  580. vo.setFileMap(fileMap);
  581. }
  582. } else if("任务下达".equals(moduleName)) {
  583. //todo
  584. }
  585. return vo;
  586. }
  587. /**
  588. * 提交采购需求
  589. *
  590. * @param pmDemandReqVo
  591. * @return 结果
  592. */
  593. @Override
  594. public int commit(PmDemandReqVo pmDemandReqVo) {
  595. PmDemand pmDemand = new PmDemand();
  596. pmDemand.setDemandId(pmDemandReqVo.getDemandId());
  597. pmDemand.setProjectStatus(Long.parseLong(PmProjectStatus.DEMAND_WAIT_AUDIT.getCode()));
  598. pmDemand.setUpdateBy(pmDemandReqVo.getUpdateBy());
  599. pmDemand.setUpdateTime(DateUtils.getNowDate());
  600. return pmDemandMapper.updatePmDemand(pmDemand);
  601. }
  602. /**
  603. * 审核采购需求通过
  604. *
  605. * @param pmDemandReqVo
  606. * @return 结果
  607. */
  608. @Override
  609. public int reviewTo(PmDemandReqVo pmDemandReqVo) {
  610. PmDemand pmDemand = new PmDemand();
  611. pmDemand.setDemandId(pmDemandReqVo.getDemandId());
  612. pmDemand.setProjectStatus(Long.parseLong(PmProjectStatus.TASK_WAIT_RELEASE.getCode()));
  613. List<SysFileRef> sysFileRefs = pmDemandReqVo.getSysFileRefs();
  614. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  615. for (SysFileRef ref : sysFileRefs) {
  616. ref.setRedId(pmDemandReqVo.getDemandId());
  617. ref.setType(SysFileRefEnum.PM_DEMAND_EXAMINE.getType());
  618. ref.setCreated(pmDemandReqVo.getUpdateBy());
  619. ref.setCreateTime(new Date());
  620. ref.setUpdated(pmDemandReqVo.getUpdateBy());
  621. ref.setUpdateTime(new Date());
  622. sysFileRefService.save(ref);
  623. }
  624. }
  625. pmDemand.setUpdateBy(pmDemandReqVo.getUpdateBy());
  626. pmDemand.setUpdateTime(DateUtils.getNowDate());
  627. pmDemand.setAuditTime(DateUtils.getNowDate());
  628. return pmDemandMapper.updatePmDemand(pmDemand);
  629. }
  630. /**
  631. * 审核采购需求退回
  632. *
  633. * @param pmDemandReqVo
  634. * @return 结果
  635. */
  636. @Override
  637. public int reviewReturn(PmDemandReqVo pmDemandReqVo) {
  638. PmDemand pmDemand = new PmDemand();
  639. pmDemand.setDemandId(pmDemandReqVo.getDemandId());
  640. pmDemand.setProjectStatus(Long.parseLong(PmProjectStatus.DEMAND_WAIT_COMMIT.getCode()));
  641. pmDemand.setAdjustReason(pmDemandReqVo.getRefuseReason());
  642. pmDemand.setUpdateBy(pmDemandReqVo.getUpdateBy());
  643. pmDemand.setUpdateTime(DateUtils.getNowDate());
  644. pmDemand.setAuditTime(DateUtils.getNowDate());
  645. return pmDemandMapper.updatePmDemand(pmDemand);
  646. }
  647. }