PmDemandServiceImpl.java 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704
  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, int reqType) {
  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. if(reqType== 1) { //需求审核单位列表
  260. lw.eq(PmDemand::getProjectStatus, PmProjectStatus.DEMAND_WAIT_AUDIT.getCode());
  261. } else if(reqType== 2) { //任务下达列表
  262. lw.apply("(project_status = 8 or project_status = 9 )");
  263. } else if(reqType== 3) { //采购执行列表
  264. lw.apply("(project_status = 9 or project_status = 10 )");
  265. } else if(reqType== 4) { //合同信息列表
  266. lw.apply("(project_status = 10 or project_status = 11 )");
  267. } else if(reqType== 5) { //项目建设列表
  268. lw.apply("(project_status = 11 or project_status = 12 )");
  269. }
  270. IPage<PmDemand> pageRes = this.page(new Page<>(pmDemandReqVo.getPageNum(), pmDemandReqVo.getPageSize()), lw);
  271. IPage<PmDemandResVo> results = new Page<>(pageRes.getCurrent(), pageRes.getSize(), pageRes.getTotal());
  272. if(pageRes.getRecords() != null && pageRes.getRecords().size() > 0){
  273. List<PmDemandResVo> pmDemandResponseVoList = new ArrayList<>();
  274. for(PmDemand pmDemand1 : pageRes.getRecords()){
  275. PmDemandResVo vo = new PmDemandResVo();
  276. BeanUtils.copyProperties(pmDemand1,vo);
  277. if(vo.getPurchaseDeptId() != null){
  278. Map<String, Object> deptMap = deptService.selectDeptById(vo.getPurchaseDeptId());
  279. if(deptMap!= null){
  280. SysDeptResponseVo sysDeptResponseVo = (SysDeptResponseVo)deptMap.get("sysDept");
  281. if(sysDeptResponseVo != null){
  282. vo.setPurchaseDeptName(sysDeptResponseVo.getDeptName());
  283. }
  284. }
  285. }
  286. String purchaseServicesName = dictDataService.selectDictLabel("purchase_services",vo.getPurchaseServices());
  287. if(StringUtils.isNotEmpty(purchaseServicesName)){
  288. vo.setPurchaseServicesName(purchaseServicesName);
  289. }
  290. //项目类型
  291. for (ProjectTypes value : ProjectTypes.values()) {
  292. if (vo.getProjectType() != null && vo.getProjectType().equals(value.getCode())) {
  293. vo.setProjectTypeName(value.getInfo());
  294. break;
  295. }
  296. }
  297. //是否为超限额计划
  298. for (IsExcess value : IsExcess.values()) {
  299. if (vo.getIsExcess() != null && vo.getIsExcess().equals(value.getCode())) {
  300. vo.setIsExcessName(value.getInfo());
  301. break;
  302. }
  303. }
  304. //采购方式
  305. for (PlanPurchaseMode value : PlanPurchaseMode.values()) {
  306. if (vo.getPurchaseMode() != null && vo.getPurchaseMode().equals(value.getCode())) {
  307. vo.setPurchaseModeName(value.getInfo());
  308. break;
  309. }
  310. }
  311. //项目属性
  312. for (ProjectAttribute value : ProjectAttribute.values()) {
  313. if (vo.getProjectAttr() != null && vo.getProjectAttr().equals(value.getCode())) {
  314. vo.setProjectAttrName(value.getInfo());
  315. break;
  316. }
  317. }
  318. //预警状态
  319. for (WarnStatus value : WarnStatus.values()) {
  320. if (vo.getWarnStatus() != null && vo.getWarnStatus().equals(value.getCode())) {
  321. vo.setWarnStatusName(value.getInfo());
  322. break;
  323. }
  324. }
  325. //项目状态
  326. for (PmProjectStatus value : PmProjectStatus.values()) {
  327. if (vo.getProjectStatus() != null && vo.getProjectStatus().equals(value.getCode())) {
  328. vo.setProjectStatusName(value.getInfo());
  329. break;
  330. }
  331. }
  332. pmDemandResponseVoList.add(vo);
  333. }
  334. results.setRecords(pmDemandResponseVoList);
  335. }
  336. return results;
  337. }
  338. /**
  339. * 新增采购需求
  340. *
  341. * @param pmDemand 采购需求
  342. * @return 结果
  343. */
  344. @Override
  345. public int insertPmDemand(PmDemand pmDemand) {
  346. pmDemand.setCreateTime(DateUtils.getNowDate());
  347. return pmDemandMapper.insertPmDemand(pmDemand);
  348. }
  349. /**
  350. * 修改采购需求
  351. *
  352. * @param pmDemand 采购需求
  353. * @return 结果
  354. */
  355. @Override
  356. public int updatePmDemand(PmDemand pmDemand) {
  357. pmDemand.setUpdateTime(DateUtils.getNowDate());
  358. return pmDemandMapper.updatePmDemand(pmDemand);
  359. }
  360. /**
  361. * 需求建档
  362. *
  363. * @param vo 采购需求
  364. * @return 结果
  365. */
  366. @Override
  367. public int bookBuilding(PmBookBuildingReqVo vo) {
  368. PmDemand pmDemand = pmDemandMapper.selectPmDemandByDemandId(vo.getDemandId());
  369. String projectType = pmDemand.getProjectType();
  370. if(ProjectTypes.EQUIPMENTTYPE.getCode().equals(projectType)){ //装备类
  371. PmDemandEquipReqVo pmDemandEquipReqVo = vo.getPmDemandEquipReqVo();
  372. PmDemandEquip pmDemandEquipReq = new PmDemandEquip();
  373. pmDemandEquipReq.setDemandId(vo.getDemandId());
  374. PmDemandEquip pmDemandEquip = null;
  375. List<PmDemandEquip> pmDemandEquipList = iPmDemandEquipService.selectPmDemandEquipList(pmDemandEquipReq);
  376. if(pmDemandEquipList != null && pmDemandEquipList.size() > 0){
  377. pmDemandEquip = pmDemandEquipList.get(0);
  378. BeanUtils.copyProperties(pmDemandEquipReqVo,pmDemandEquip);
  379. iPmDemandEquipService.updatePmDemandEquip(pmDemandEquip);
  380. } else {
  381. pmDemandEquip = new PmDemandEquip();
  382. BeanUtils.copyProperties(pmDemandEquipReqVo,pmDemandEquip);
  383. iPmDemandEquipService.insertPmDemandEquip(pmDemandEquip);
  384. }
  385. List<SysFileRef> sysFileRefs = pmDemandEquipReqVo.getSysFileRefs();
  386. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  387. for (SysFileRef ref : sysFileRefs) {
  388. ref.setRedId(pmDemandEquip.getDemandEquipId());
  389. ref.setType(SysFileRefEnum.PM_DEMAND_EQUIP.getType());
  390. ref.setCreated(vo.getUpdateBy());
  391. ref.setCreateTime(new Date());
  392. ref.setUpdated(vo.getUpdateBy());
  393. ref.setUpdateTime(new Date());
  394. sysFileRefService.save(ref);
  395. }
  396. }
  397. } else if(ProjectTypes.MATERIALTYPE.getCode().equals(projectType)) { //物资类
  398. PmDemandMaterialsReqVo pmDemandMaterialsReqVo = vo.getPmDemandMaterialsReqVo();
  399. PmDemandMaterials pmDemandMaterialsReq = new PmDemandMaterials();
  400. pmDemandMaterialsReq.setDemandId(vo.getDemandId());
  401. PmDemandMaterials pmDemandMaterials = null;
  402. List<PmDemandMaterials> pmDemandMaterialsList = iPmDemandMaterialsService.selectPmDemandMaterialsList(pmDemandMaterialsReq);
  403. if(pmDemandMaterialsList != null && pmDemandMaterialsList.size() > 0){
  404. pmDemandMaterials = pmDemandMaterialsList.get(0);
  405. BeanUtils.copyProperties(pmDemandMaterialsReqVo,pmDemandMaterials);
  406. iPmDemandMaterialsService.updatePmDemandMaterials(pmDemandMaterials);
  407. } else {
  408. pmDemandMaterials = new PmDemandMaterials();
  409. BeanUtils.copyProperties(pmDemandMaterialsReqVo,pmDemandMaterials);
  410. iPmDemandMaterialsService.insertPmDemandMaterials(pmDemandMaterials);
  411. }
  412. List<SysFileRef> sysFileRefs = pmDemandMaterialsReqVo.getSysFileRefs();
  413. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  414. for (SysFileRef ref : sysFileRefs) {
  415. ref.setRedId(pmDemandMaterials.getDemandMaterialsId());
  416. ref.setType(SysFileRefEnum.PM_DEMAND_MATERIALS.getType());
  417. ref.setCreated(vo.getUpdateBy());
  418. ref.setCreateTime(new Date());
  419. ref.setUpdated(vo.getUpdateBy());
  420. ref.setUpdateTime(new Date());
  421. sysFileRefService.save(ref);
  422. }
  423. }
  424. } else if(ProjectTypes.SERVICESTYPE.getCode().equals(projectType)) { //服务类
  425. PmDemandServeReqVo pmDemandServeReqVo = vo.getPmDemandServeReqVo();
  426. PmDemandServe pmDemandServeReq = new PmDemandServe();
  427. pmDemandServeReq.setDemandId(vo.getDemandId());
  428. PmDemandServe pmDemandServe = null;
  429. List<PmDemandServe> pmDemandServeList = iPmDemandServeService.selectPmDemandServeList(pmDemandServeReq);
  430. if(pmDemandServeList != null && pmDemandServeList.size() > 0){
  431. pmDemandServe = pmDemandServeList.get(0);
  432. BeanUtils.copyProperties(pmDemandServeReqVo,pmDemandServe);
  433. iPmDemandServeService.updatePmDemandServe(pmDemandServe);
  434. } else {
  435. pmDemandServe = new PmDemandServe();
  436. BeanUtils.copyProperties(pmDemandServeReqVo,pmDemandServe);
  437. iPmDemandServeService.insertPmDemandServe(pmDemandServe);
  438. }
  439. List<SysFileRef> sysFileRefs = pmDemandServeReqVo.getSysFileRefs();
  440. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  441. for (SysFileRef ref : sysFileRefs) {
  442. ref.setRedId(pmDemandServe.getDemandServeId());
  443. ref.setType(SysFileRefEnum.PM_DEMAND_SERVE.getType());
  444. ref.setCreated(vo.getUpdateBy());
  445. ref.setCreateTime(new Date());
  446. ref.setUpdated(vo.getUpdateBy());
  447. ref.setUpdateTime(new Date());
  448. sysFileRefService.save(ref);
  449. }
  450. }
  451. } else if(ProjectTypes.PLANTOEXAMINETYPE.getCode().equals(projectType)) { //工程类
  452. PmDemandEngineeringReqVo pmDemandEngineeringReqVo = vo.getPmDemandEngineeringReqVo();
  453. PmDemandEngineering pmDemandEngineeringReq = new PmDemandEngineering();
  454. pmDemandEngineeringReq.setDemandId(vo.getDemandId());
  455. PmDemandEngineering pmDemandEngineering = null;
  456. List<PmDemandEngineering> pmDemandEngineeringList = iPmDemandEngineeringService.selectPmDemandEngineeringList(pmDemandEngineeringReq);
  457. if(pmDemandEngineeringList != null && pmDemandEngineeringList.size() > 0){
  458. pmDemandEngineering = pmDemandEngineeringList.get(0);
  459. BeanUtils.copyProperties(pmDemandEngineeringReqVo,pmDemandEngineering);
  460. iPmDemandEngineeringService.updatePmDemandEngineering(pmDemandEngineering);
  461. } else {
  462. pmDemandEngineering = new PmDemandEngineering();
  463. BeanUtils.copyProperties(pmDemandEngineeringReqVo,pmDemandEngineering);
  464. iPmDemandEngineeringService.insertPmDemandEngineering(pmDemandEngineering);
  465. }
  466. List<SysFileRef> sysFileRefs = pmDemandEngineeringReqVo.getSysFileRefs();
  467. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  468. for (SysFileRef ref : sysFileRefs) {
  469. ref.setRedId(pmDemandEngineering.getDemandEngineeringId());
  470. ref.setType(SysFileRefEnum.PM_DEMAND_ENGINEERING.getType());
  471. ref.setCreated(vo.getUpdateBy());
  472. ref.setCreateTime(new Date());
  473. ref.setUpdated(vo.getUpdateBy());
  474. ref.setUpdateTime(new Date());
  475. sysFileRefService.save(ref);
  476. }
  477. }
  478. }
  479. pmDemand.setUpdateBy(vo.getUpdateBy());
  480. pmDemand.setUpdateTime(DateUtils.getNowDate());
  481. return pmDemandMapper.updatePmDemand(pmDemand);
  482. }
  483. private HashMap<String, String> getFileMap(Long redId,Integer type){
  484. HashMap<String, Object> map = new HashMap<>();
  485. map.put("red_id", redId);
  486. map.put("type", type);
  487. List<SysFileRef> fileRefs = sysFileRefService.listByMap(map);
  488. if (!ObjectUtils.isEmpty(fileRefs)) {
  489. HashMap<String, String> fileMap = new HashMap<>();
  490. for (SysFileRef ref : fileRefs) {
  491. SysFileInfo fileInfo = fileService.getById(ref.getFileId());
  492. fileMap.put(fileInfo.getFileUrl(), fileInfo.getFileName());
  493. }
  494. return fileMap;
  495. } else {
  496. return null;
  497. }
  498. }
  499. /**
  500. * 查看流程图
  501. *
  502. * @param demandId 采购需求主键
  503. * @return 采购需求
  504. */
  505. @Override
  506. public String viewFlowChart(Long demandId) {
  507. PmDemand pmDemand = pmDemandMapper.selectPmDemandByDemandId(demandId);
  508. String projectStatus = String.valueOf(pmDemand.getProjectStatus());
  509. String moduleName = null;
  510. //todo
  511. if (PmProjectStatus.DEMAND_WAIT_FILL.getCode().equals(projectStatus) || PmProjectStatus.DEMAND_AUDIT_RETURN.getCode().equals(projectStatus)) {
  512. moduleName = "需求填制";
  513. } else if(PmProjectStatus.DEMAND_WAIT_COMMIT.getCode().equals(projectStatus)) {
  514. moduleName = "需求提交";
  515. } else if(PmProjectStatus.DEMAND_WAIT_AUDIT.getCode().equals(projectStatus)) {
  516. moduleName = "需求审核";
  517. } else if(PmProjectStatus.TASK_WAIT_RELEASE.getCode().equals(projectStatus)) {
  518. moduleName = "任务下达";
  519. } else if(PmProjectStatus.BID_INFO_WAIT_FILL.getCode().equals(projectStatus)) {
  520. moduleName = "中标情况填制";
  521. } else if(PmProjectStatus.CONTRACT_WAIT_FILL.getCode().equals(projectStatus)) {
  522. moduleName = "合同填制";
  523. } else if(PmProjectStatus.UNDER_CONSTRUCTION.getCode().equals(projectStatus)) {
  524. moduleName = "建设文档填制";
  525. } else if(PmProjectStatus.COMPLETION_CONSTRUCTION.getCode().equals(projectStatus)) {
  526. moduleName = "项目归档";
  527. }
  528. return moduleName;
  529. }
  530. public PmFlowChartResVo getModuleInfo(Long demandId,String moduleName){
  531. PmDemand pmDemand = pmDemandMapper.selectPmDemandByDemandId(demandId);
  532. String projectType = pmDemand.getProjectType();
  533. PmFlowChart pmFlowChartReq = new PmFlowChart();
  534. pmFlowChartReq.setModuleName(moduleName);
  535. List<PmFlowChart> pmFlowChartList = iPmFlowChartService.selectPmFlowChartList(pmFlowChartReq);
  536. if(pmFlowChartList == null || pmFlowChartList.size() ==0){
  537. return null;
  538. }
  539. PmFlowChartResVo vo = new PmFlowChartResVo();
  540. BeanUtils.copyProperties(pmFlowChartList.get(0), vo);
  541. if("需求填制".equals(moduleName)) {
  542. HashMap<String, String> fileMap = getFileMap(demandId,SysFileRefEnum.PM_DEMAND.getType());
  543. if(fileMap != null){
  544. vo.setFileMap(fileMap);
  545. }
  546. } else if("需求提交".equals(moduleName)) {
  547. if(ProjectTypes.EQUIPMENTTYPE.getCode().equals(projectType)){ //装备类
  548. PmDemandEquip pmDemandEquipReq = new PmDemandEquip();
  549. pmDemandEquipReq.setDemandId(demandId);
  550. List<PmDemandEquip> pmDemandEquipList = iPmDemandEquipService.selectPmDemandEquipList(pmDemandEquipReq);
  551. if(pmDemandEquipList != null && pmDemandEquipList.size() > 0){
  552. HashMap<String, String> fileMap = getFileMap(pmDemandEquipList.get(0).getDemandEquipId(),SysFileRefEnum.PM_DEMAND_EQUIP.getType());
  553. if(fileMap != null){
  554. vo.setFileMap(fileMap);
  555. }
  556. }
  557. } else if(ProjectTypes.MATERIALTYPE.getCode().equals(projectType)) { //物资类
  558. PmDemandMaterials pmDemandMaterialsReq = new PmDemandMaterials();
  559. pmDemandMaterialsReq.setDemandId(demandId);
  560. List<PmDemandMaterials> pmDemandMaterialsList = iPmDemandMaterialsService.selectPmDemandMaterialsList(pmDemandMaterialsReq);
  561. if(pmDemandMaterialsList != null && pmDemandMaterialsList.size() > 0){
  562. HashMap<String, String> fileMap = getFileMap(pmDemandMaterialsList.get(0).getDemandMaterialsId(),SysFileRefEnum.PM_DEMAND_MATERIALS.getType());
  563. if(fileMap != null){
  564. vo.setFileMap(fileMap);
  565. }
  566. }
  567. } else if(ProjectTypes.SERVICESTYPE.getCode().equals(projectType)) { //服务类
  568. PmDemandServe pmDemandServeReq = new PmDemandServe();
  569. pmDemandServeReq.setDemandId(demandId);
  570. List<PmDemandServe> pmDemandServeList = iPmDemandServeService.selectPmDemandServeList(pmDemandServeReq);
  571. if(pmDemandServeList != null && pmDemandServeList.size() > 0){
  572. HashMap<String, String> fileMap = getFileMap(pmDemandServeList.get(0).getDemandServeId(),SysFileRefEnum.PM_DEMAND_SERVE.getType());
  573. if(fileMap != null){
  574. vo.setFileMap(fileMap);
  575. }
  576. }
  577. } else if(ProjectTypes.PLANTOEXAMINETYPE.getCode().equals(projectType)) { //工程类
  578. PmDemandEngineering pmDemandEngineeringReq = new PmDemandEngineering();
  579. pmDemandEngineeringReq.setDemandId(demandId);
  580. List<PmDemandEngineering> pmDemandEngineeringList = iPmDemandEngineeringService.selectPmDemandEngineeringList(pmDemandEngineeringReq);
  581. if(pmDemandEngineeringList != null && pmDemandEngineeringList.size() > 0){
  582. HashMap<String, String> fileMap = getFileMap(pmDemandEngineeringList.get(0).getDemandEngineeringId(),SysFileRefEnum.PM_DEMAND_ENGINEERING.getType());
  583. if(fileMap != null){
  584. vo.setFileMap(fileMap);
  585. }
  586. }
  587. }
  588. } else if("需求审核".equals(moduleName)) {
  589. HashMap<String, String> fileMap = getFileMap(demandId,SysFileRefEnum.PM_DEMAND_EXAMINE.getType());
  590. if(fileMap != null){
  591. vo.setFileMap(fileMap);
  592. }
  593. } else if("任务下达".equals(moduleName)) {
  594. //todo
  595. }
  596. return vo;
  597. }
  598. /**
  599. * 提交采购需求
  600. *
  601. * @param pmDemandReqVo
  602. * @return 结果
  603. */
  604. @Override
  605. public int commit(PmDemandReqVo pmDemandReqVo) {
  606. PmDemand pmDemand = new PmDemand();
  607. pmDemand.setDemandId(pmDemandReqVo.getDemandId());
  608. pmDemand.setProjectStatus(Long.parseLong(PmProjectStatus.DEMAND_WAIT_AUDIT.getCode()));
  609. pmDemand.setUpdateBy(pmDemandReqVo.getUpdateBy());
  610. pmDemand.setUpdateTime(DateUtils.getNowDate());
  611. return pmDemandMapper.updatePmDemand(pmDemand);
  612. }
  613. /**
  614. * 审核采购需求通过
  615. *
  616. * @param pmDemandReqVo
  617. * @return 结果
  618. */
  619. @Override
  620. public int reviewTo(PmDemandReqVo pmDemandReqVo) {
  621. PmDemand pmDemand = new PmDemand();
  622. pmDemand.setDemandId(pmDemandReqVo.getDemandId());
  623. pmDemand.setProjectStatus(Long.parseLong(PmProjectStatus.TASK_WAIT_RELEASE.getCode()));
  624. List<SysFileRef> sysFileRefs = pmDemandReqVo.getSysFileRefs();
  625. if (!ObjectUtils.isEmpty(sysFileRefs)) {
  626. for (SysFileRef ref : sysFileRefs) {
  627. ref.setRedId(pmDemandReqVo.getDemandId());
  628. ref.setType(SysFileRefEnum.PM_DEMAND_EXAMINE.getType());
  629. ref.setCreated(pmDemandReqVo.getUpdateBy());
  630. ref.setCreateTime(new Date());
  631. ref.setUpdated(pmDemandReqVo.getUpdateBy());
  632. ref.setUpdateTime(new Date());
  633. sysFileRefService.save(ref);
  634. }
  635. }
  636. pmDemand.setUpdateBy(pmDemandReqVo.getUpdateBy());
  637. pmDemand.setUpdateTime(DateUtils.getNowDate());
  638. pmDemand.setAuditTime(DateUtils.getNowDate());
  639. return pmDemandMapper.updatePmDemand(pmDemand);
  640. }
  641. /**
  642. * 审核采购需求退回
  643. *
  644. * @param pmDemandReqVo
  645. * @return 结果
  646. */
  647. @Override
  648. public int reviewReturn(PmDemandReqVo pmDemandReqVo) {
  649. PmDemand pmDemand = new PmDemand();
  650. pmDemand.setDemandId(pmDemandReqVo.getDemandId());
  651. pmDemand.setProjectStatus(Long.parseLong(PmProjectStatus.DEMAND_WAIT_COMMIT.getCode()));
  652. pmDemand.setAdjustReason(pmDemandReqVo.getRefuseReason());
  653. pmDemand.setUpdateBy(pmDemandReqVo.getUpdateBy());
  654. pmDemand.setUpdateTime(DateUtils.getNowDate());
  655. pmDemand.setAuditTime(DateUtils.getNowDate());
  656. return pmDemandMapper.updatePmDemand(pmDemand);
  657. }
  658. }