PmDemandHisServiceImpl.java 47 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827
  1. package com.ozs.pm.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.ozs.base.domain.BaseAgency;
  6. import com.ozs.base.service.BaseAgencyService;
  7. import com.ozs.common.enums.*;
  8. import com.ozs.common.utils.StringUtils;
  9. import com.ozs.common.utils.bean.BeanUtils;
  10. import com.ozs.plan.doman.ProvisionalPlan;
  11. import com.ozs.plan.mapper.ProvisionalPlanMapper;
  12. import com.ozs.pm.doman.*;
  13. import com.ozs.pm.doman.vo.responseVo.*;
  14. import com.ozs.pm.mapper.PmDemandHisMapper;
  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.transaction.annotation.Transactional;
  26. import org.springframework.util.ObjectUtils;
  27. import java.util.ArrayList;
  28. import java.util.Date;
  29. import java.util.HashMap;
  30. import java.util.List;
  31. /**
  32. * 采购需求表历史表(PmDemandHis)表服务实现类
  33. *
  34. * @author makejava
  35. * @since 2023-03-06 16:43:50
  36. */
  37. @Service
  38. public class PmDemandHisServiceImpl extends ServiceImpl<PmDemandHisMapper, PmDemandHis> implements PmDemandHisService {
  39. @Autowired
  40. private IPmDemandService iPmDemandService;
  41. @Autowired
  42. private SysFileRefService sysFileRefService;
  43. @Autowired
  44. private SysFileService fileService;
  45. @Autowired
  46. private PmAuditDeptRefService pmAuditDeptRefService;
  47. @Autowired
  48. private PmBidFailureService pmBidFailureService;
  49. @Autowired
  50. private PmBidOpeningService pmBidOpeningService;
  51. @Autowired
  52. private PmBidWinningService pmBidWinningService;
  53. @Autowired
  54. private PmBidWinningOpeningRefService pmBidWinningOpeningRefService;
  55. @Autowired
  56. private PmBookBuildingService pmBookBuildingService;
  57. @Autowired
  58. private PmCallQuestionService pmCallQuestionService;
  59. @Autowired
  60. private PmDemandExpertRefService pmDemandExpertRefService;
  61. @Autowired
  62. private PmExpertFeedbackService pmExpertFeedbackService;
  63. @Autowired
  64. private PmProcurementDocumentsReviewService pmProcurementDocumentsReviewService;
  65. @Autowired
  66. private PmReleaseAnnouncementService pmReleaseAnnouncementService;
  67. @Autowired
  68. private PmBidFailureHisService pmBidFailureHisService;
  69. @Autowired
  70. private PmBidOpeningHisService pmBidOpeningHisService;
  71. @Autowired
  72. private PmBidWinningHisService pmBidWinningHisService;
  73. @Autowired
  74. private PmBidWinningOpeningRefHisService pmBidWinningOpeningRefHisService;
  75. @Autowired
  76. private PmBookBuildingHisService pmBookBuildingHisService;
  77. @Autowired
  78. private PmCallQuestionHisService pmCallQuestionHisService;
  79. @Autowired
  80. private PmDemandExpertRefHisService pmDemandExpertRefHisService;
  81. @Autowired
  82. private PmDemandHisService pmDemandHisService;
  83. @Autowired
  84. private PmExpertFeedbackHisService pmExpertFeedbackHisService;
  85. @Autowired
  86. private PmProcurementDocumentsReviewHisService pmProcurementDocumentsReviewHisService;
  87. @Autowired
  88. private PmReleaseAnnouncementHisService pmReleaseAnnouncementHisService;
  89. @Autowired
  90. private ProvisionalPlanMapper provisionalPlanMapper;
  91. @Autowired
  92. private ISysDeptService deptService;
  93. @Autowired
  94. private ISysDictDataService dictDataService;
  95. @Autowired
  96. private BaseAgencyService baseAgencyService;
  97. /**
  98. * 流废标退回
  99. * @param demandId
  100. * @param updateBy
  101. * @return
  102. * @throws Exception
  103. */
  104. @Override
  105. @Transactional(rollbackFor = Exception.class)
  106. public boolean returnBidFailure(Long demandId,String updateBy) throws Exception {
  107. PmDemand pmDemand = iPmDemandService.getById(demandId);
  108. if(ObjectUtils.isEmpty(pmDemand)){
  109. throw new Exception("参数错误");
  110. }
  111. //把相关表数据存入历史表,清空相关表数据
  112. //1需求建档表
  113. LambdaQueryWrapper<PmBookBuilding> pmBookBuildingLambdaQueryWrapper = new LambdaQueryWrapper<>();
  114. pmBookBuildingLambdaQueryWrapper.eq(PmBookBuilding::getDemandId,demandId);
  115. PmBookBuilding pmBookBuildingDb = this.pmBookBuildingService.getOne(pmBookBuildingLambdaQueryWrapper);
  116. if(pmBookBuildingDb != null) {
  117. PmBookBuildingHis pmBookBuildingHis = new PmBookBuildingHis();
  118. BeanUtils.copyProperties(pmBookBuildingDb,pmBookBuildingHis);
  119. LambdaQueryWrapper<PmBookBuildingHis> pmBookBuildingHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
  120. pmBookBuildingHisLambdaQueryWrapper.eq(PmBookBuildingHis::getDemandId,demandId)
  121. .orderByDesc(PmBookBuildingHis::getReturnOrderNumber).last(" limit 1");
  122. PmBookBuildingHis pmBookBuildingHisDb = this.pmBookBuildingHisService.getOne(pmBookBuildingHisLambdaQueryWrapper);
  123. if(pmBookBuildingHisDb != null){
  124. pmBookBuildingHis.setReturnOrderNumber(pmBookBuildingHisDb.getReturnOrderNumber() + 1);
  125. } else {
  126. pmBookBuildingHis.setReturnOrderNumber(1);
  127. }
  128. if(this.pmBookBuildingHisService.save(pmBookBuildingHis)){
  129. //文件
  130. List<SysFileRef> fileRefs = getSysFileRefList(pmBookBuildingDb.getId(), SysFileRefEnum.PM_BOOK_BUILDING.getType());
  131. if (!ObjectUtils.isEmpty(fileRefs)) {
  132. for (SysFileRef sysFileRef : fileRefs) {
  133. sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_BOOK_BUILDING.getType() + "" + pmBookBuildingHis.getReturnOrderNumber()));
  134. }
  135. sysFileRefService.updateBatchById(fileRefs);
  136. }
  137. this.pmBookBuildingService.removeById(pmBookBuildingDb.getId());
  138. }
  139. }
  140. //2专家意见反馈表
  141. LambdaQueryWrapper<PmExpertFeedback> pmExpertFeedbackLambdaQueryWrapper = new LambdaQueryWrapper<>();
  142. pmExpertFeedbackLambdaQueryWrapper.eq(PmExpertFeedback::getDemandId,demandId);
  143. PmExpertFeedback pmExpertFeedbackDb = this.pmExpertFeedbackService.getOne(pmExpertFeedbackLambdaQueryWrapper);
  144. if(pmExpertFeedbackDb != null) {
  145. PmExpertFeedbackHis pmExpertFeedbackHis = new PmExpertFeedbackHis();
  146. BeanUtils.copyProperties(pmExpertFeedbackDb,pmExpertFeedbackHis);
  147. LambdaQueryWrapper<PmExpertFeedbackHis> pmExpertFeedbackHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
  148. pmExpertFeedbackHisLambdaQueryWrapper.eq(PmExpertFeedbackHis::getDemandId,demandId)
  149. .orderByDesc(PmExpertFeedbackHis::getReturnOrderNumber).last(" limit 1");
  150. PmExpertFeedbackHis pmExpertFeedbackHisDb = this.pmExpertFeedbackHisService.getOne(pmExpertFeedbackHisLambdaQueryWrapper);
  151. if(pmExpertFeedbackHisDb != null){
  152. pmExpertFeedbackHis.setReturnOrderNumber(pmExpertFeedbackHisDb.getReturnOrderNumber() + 1);
  153. } else {
  154. pmExpertFeedbackHis.setReturnOrderNumber(1);
  155. }
  156. if(this.pmExpertFeedbackHisService.save(pmExpertFeedbackHis)){
  157. //文件
  158. List<SysFileRef> fileRefs = getSysFileRefList(pmExpertFeedbackDb.getId(), SysFileRefEnum.PM_EXPERT_FEEDBACK.getType());
  159. if (!ObjectUtils.isEmpty(fileRefs)) {
  160. for (SysFileRef sysFileRef : fileRefs) {
  161. sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_EXPERT_FEEDBACK.getType() + "" + pmExpertFeedbackHis.getReturnOrderNumber()));
  162. }
  163. sysFileRefService.updateBatchById(fileRefs);
  164. }
  165. this.pmExpertFeedbackService.removeById(pmExpertFeedbackDb.getId());
  166. }
  167. }
  168. //3采购文件编制审核表
  169. LambdaQueryWrapper<PmProcurementDocumentsReview> pmProcurementDocumentsReviewLambdaQueryWrapper = new LambdaQueryWrapper<>();
  170. pmProcurementDocumentsReviewLambdaQueryWrapper.eq(PmProcurementDocumentsReview::getDemandId,demandId);
  171. PmProcurementDocumentsReview pmProcurementDocumentsReviewDb = this.pmProcurementDocumentsReviewService.getOne(pmProcurementDocumentsReviewLambdaQueryWrapper);
  172. if(pmProcurementDocumentsReviewDb != null) {
  173. PmProcurementDocumentsReviewHis pmProcurementDocumentsReviewHis = new PmProcurementDocumentsReviewHis();
  174. BeanUtils.copyProperties(pmProcurementDocumentsReviewDb,pmProcurementDocumentsReviewHis);
  175. LambdaQueryWrapper<PmProcurementDocumentsReviewHis> pmProcurementDocumentsReviewHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
  176. pmProcurementDocumentsReviewHisLambdaQueryWrapper.eq(PmProcurementDocumentsReviewHis::getDemandId,demandId)
  177. .orderByDesc(PmProcurementDocumentsReviewHis::getReturnOrderNumber).last(" limit 1");
  178. PmProcurementDocumentsReviewHis pmProcurementDocumentsReviewHisDb = this.pmProcurementDocumentsReviewHisService.getOne(pmProcurementDocumentsReviewHisLambdaQueryWrapper);
  179. if(pmProcurementDocumentsReviewHisDb != null){
  180. pmProcurementDocumentsReviewHis.setReturnOrderNumber(pmProcurementDocumentsReviewHisDb.getReturnOrderNumber() + 1);
  181. } else {
  182. pmProcurementDocumentsReviewHis.setReturnOrderNumber(1);
  183. }
  184. if(this.pmProcurementDocumentsReviewHisService.save(pmProcurementDocumentsReviewHis)){
  185. //文件
  186. List<SysFileRef> fileRefs = getSysFileRefList(pmProcurementDocumentsReviewDb.getId(), SysFileRefEnum.PM_BID_FILE.getType());
  187. if (!ObjectUtils.isEmpty(fileRefs)) {
  188. for (SysFileRef sysFileRef : fileRefs) {
  189. sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_BID_FILE.getType() + "" + pmProcurementDocumentsReviewHis.getReturnOrderNumber()));
  190. }
  191. sysFileRefService.updateBatchById(fileRefs);
  192. }
  193. this.pmProcurementDocumentsReviewService.removeById(pmProcurementDocumentsReviewDb.getId());
  194. }
  195. }
  196. //4发布公告表
  197. LambdaQueryWrapper<PmReleaseAnnouncement> pmReleaseAnnouncementLambdaQueryWrapper = new LambdaQueryWrapper<>();
  198. pmReleaseAnnouncementLambdaQueryWrapper.eq(PmReleaseAnnouncement::getDemandId,demandId);
  199. List<PmReleaseAnnouncement> pmReleaseAnnouncementDbList = this.pmReleaseAnnouncementService.list(pmReleaseAnnouncementLambdaQueryWrapper);
  200. if(!ObjectUtils.isEmpty(pmReleaseAnnouncementDbList)) {
  201. LambdaQueryWrapper<PmReleaseAnnouncementHis> pmReleaseAnnouncementHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
  202. pmReleaseAnnouncementHisLambdaQueryWrapper.eq(PmReleaseAnnouncementHis::getDemandId,demandId)
  203. .orderByDesc(PmReleaseAnnouncementHis::getReturnOrderNumber).last(" limit 1");
  204. PmReleaseAnnouncementHis pmReleaseAnnouncementHisDb = this.pmReleaseAnnouncementHisService.getOne(pmReleaseAnnouncementHisLambdaQueryWrapper);
  205. for(PmReleaseAnnouncement pmReleaseAnnouncementDb : pmReleaseAnnouncementDbList) {
  206. PmReleaseAnnouncementHis pmReleaseAnnouncementHis = new PmReleaseAnnouncementHis();
  207. BeanUtils.copyProperties(pmReleaseAnnouncementDb,pmReleaseAnnouncementHis);
  208. if(pmReleaseAnnouncementHisDb != null){
  209. pmReleaseAnnouncementHis.setReturnOrderNumber(pmReleaseAnnouncementHisDb.getReturnOrderNumber() + 1);
  210. } else {
  211. pmReleaseAnnouncementHis.setReturnOrderNumber(1);
  212. }
  213. if(this.pmReleaseAnnouncementHisService.save(pmReleaseAnnouncementHis)){
  214. //文件
  215. List<SysFileRef> fileRefs = getSysFileRefList(pmReleaseAnnouncementDb.getId(), SysFileRefEnum.PM_ANNOUNCEMENT_FILE.getType());
  216. if (!ObjectUtils.isEmpty(fileRefs)) {
  217. for (SysFileRef sysFileRef : fileRefs) {
  218. sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_ANNOUNCEMENT_FILE.getType() + "" + pmReleaseAnnouncementHis.getReturnOrderNumber()));
  219. }
  220. sysFileRefService.updateBatchById(fileRefs);
  221. }
  222. this.pmReleaseAnnouncementService.removeById(pmReleaseAnnouncementDb.getId());
  223. }
  224. }
  225. }
  226. //5质疑表
  227. LambdaQueryWrapper<PmCallQuestion> pmCallQuestionLambdaQueryWrapper = new LambdaQueryWrapper<>();
  228. pmCallQuestionLambdaQueryWrapper.eq(PmCallQuestion::getDemandId,demandId);
  229. List<PmCallQuestion> pmCallQuestionDbList = this.pmCallQuestionService.list(pmCallQuestionLambdaQueryWrapper);
  230. if(!ObjectUtils.isEmpty(pmCallQuestionDbList)) {
  231. LambdaQueryWrapper<PmCallQuestionHis> pmCallQuestionHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
  232. pmCallQuestionHisLambdaQueryWrapper.eq(PmCallQuestionHis::getDemandId,demandId)
  233. .orderByDesc(PmCallQuestionHis::getReturnOrderNumber).last(" limit 1");
  234. PmCallQuestionHis pmCallQuestionHisDb = this.pmCallQuestionHisService.getOne(pmCallQuestionHisLambdaQueryWrapper);
  235. for(PmCallQuestion pmCallQuestionDb : pmCallQuestionDbList) {
  236. PmCallQuestionHis pmCallQuestionHis = new PmCallQuestionHis();
  237. BeanUtils.copyProperties(pmCallQuestionDb,pmCallQuestionHis);
  238. if(pmCallQuestionHisDb != null){
  239. pmCallQuestionHis.setReturnOrderNumber(pmCallQuestionHisDb.getReturnOrderNumber() + 1);
  240. } else {
  241. pmCallQuestionHis.setReturnOrderNumber(1);
  242. }
  243. if(this.pmCallQuestionHisService.save(pmCallQuestionHis)){
  244. String type = pmCallQuestionDb.getType();
  245. Integer sysFileRefType = null;
  246. if("0".equals(type)){
  247. sysFileRefType = SysFileRefEnum.PM_PRE_BID_CALL_QUESTION.getType();
  248. } else {
  249. sysFileRefType = SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType();
  250. }
  251. //文件
  252. List<SysFileRef> fileRefs = getSysFileRefList(pmCallQuestionDb.getId(), sysFileRefType);
  253. if (!ObjectUtils.isEmpty(fileRefs)) {
  254. for (SysFileRef sysFileRef : fileRefs) {
  255. sysFileRef.setType(Integer.parseInt(sysFileRefType + "" + pmCallQuestionHis.getReturnOrderNumber()));
  256. }
  257. sysFileRefService.updateBatchById(fileRefs);
  258. }
  259. this.pmCallQuestionService.removeById(pmCallQuestionDb.getId());
  260. }
  261. }
  262. }
  263. //6项目专家关联表
  264. LambdaQueryWrapper<PmDemandExpertRef> pmDemandExpertRefLambdaQueryWrapper = new LambdaQueryWrapper<>();
  265. pmDemandExpertRefLambdaQueryWrapper.eq(PmDemandExpertRef::getDemandId,demandId);
  266. List<PmDemandExpertRef> pmDemandExpertRefDbList = this.pmDemandExpertRefService.list(pmDemandExpertRefLambdaQueryWrapper);
  267. if(!ObjectUtils.isEmpty(pmDemandExpertRefDbList)) {
  268. LambdaQueryWrapper<PmDemandExpertRefHis> pmDemandExpertRefHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
  269. pmDemandExpertRefHisLambdaQueryWrapper.eq(PmDemandExpertRefHis::getDemandId,demandId)
  270. .orderByDesc(PmDemandExpertRefHis::getReturnOrderNumber).last(" limit 1");
  271. PmDemandExpertRefHis pmDemandExpertRefHisDb = this.pmDemandExpertRefHisService.getOne(pmDemandExpertRefHisLambdaQueryWrapper);
  272. for(PmDemandExpertRef pmDemandExpertRefDb : pmDemandExpertRefDbList) {
  273. PmDemandExpertRefHis pmDemandExpertRefHis = new PmDemandExpertRefHis();
  274. BeanUtils.copyProperties(pmDemandExpertRefDb,pmDemandExpertRefHis);
  275. if(pmDemandExpertRefHisDb != null){
  276. pmDemandExpertRefHis.setReturnOrderNumber(pmDemandExpertRefHisDb.getReturnOrderNumber() + 1);
  277. } else {
  278. pmDemandExpertRefHis.setReturnOrderNumber(1);
  279. }
  280. if(this.pmDemandExpertRefHisService.save(pmDemandExpertRefHis)){
  281. this.pmDemandExpertRefService.removeById(pmDemandExpertRefDb.getId());
  282. }
  283. }
  284. }
  285. //6开标信息表
  286. LambdaQueryWrapper<PmBidOpening> pmBidOpeningLambdaQueryWrapper = new LambdaQueryWrapper<>();
  287. pmBidOpeningLambdaQueryWrapper.eq(PmBidOpening::getDemandId,demandId);
  288. List<PmBidOpening> pmBidOpeningDbList = this.pmBidOpeningService.list(pmBidOpeningLambdaQueryWrapper);
  289. if(!ObjectUtils.isEmpty(pmBidOpeningDbList)) {
  290. LambdaQueryWrapper<PmBidOpeningHis> pmBidOpeningHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
  291. pmBidOpeningHisLambdaQueryWrapper.eq(PmBidOpeningHis::getDemandId,demandId)
  292. .orderByDesc(PmBidOpeningHis::getReturnOrderNumber).last(" limit 1");
  293. PmBidOpeningHis pmBidOpeningHisDb = this.pmBidOpeningHisService.getOne(pmBidOpeningHisLambdaQueryWrapper);
  294. for(PmBidOpening pmBidOpeningDb : pmBidOpeningDbList) {
  295. PmBidOpeningHis pmBidOpeningHis = new PmBidOpeningHis();
  296. BeanUtils.copyProperties(pmBidOpeningDb,pmBidOpeningHis);
  297. if(pmBidOpeningHisDb != null){
  298. pmBidOpeningHis.setReturnOrderNumber(pmBidOpeningHisDb.getReturnOrderNumber() + 1);
  299. } else {
  300. pmBidOpeningHis.setReturnOrderNumber(1);
  301. }
  302. if(this.pmBidOpeningHisService.save(pmBidOpeningHis)){
  303. this.pmBidOpeningService.removeById(pmBidOpeningDb.getId());
  304. }
  305. }
  306. }
  307. //7中标基本情况表
  308. LambdaQueryWrapper<PmBidWinning> pmBidWinningLambdaQueryWrapper = new LambdaQueryWrapper<>();
  309. pmBidWinningLambdaQueryWrapper.eq(PmBidWinning::getDemandId,demandId);
  310. List<PmBidWinning> pmBidWinningDbList = this.pmBidWinningService.list(pmBidWinningLambdaQueryWrapper);
  311. if(!ObjectUtils.isEmpty(pmBidWinningDbList)) {
  312. LambdaQueryWrapper<PmBidWinningHis> pmBidWinningHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
  313. pmBidWinningHisLambdaQueryWrapper.eq(PmBidWinningHis::getDemandId,demandId)
  314. .orderByDesc(PmBidWinningHis::getReturnOrderNumber).last(" limit 1");
  315. PmBidWinningHis pmBidWinningHisDb = this.pmBidWinningHisService.getOne(pmBidWinningHisLambdaQueryWrapper);
  316. for(PmBidWinning pmBidWinningDb : pmBidWinningDbList) {
  317. PmBidWinningHis pmBidWinningHis = new PmBidWinningHis();
  318. BeanUtils.copyProperties(pmBidWinningDb,pmBidWinningHis);
  319. if(pmBidWinningHisDb != null){
  320. pmBidWinningHis.setReturnOrderNumber(pmBidWinningHisDb.getReturnOrderNumber() + 1);
  321. } else {
  322. pmBidWinningHis.setReturnOrderNumber(1);
  323. }
  324. if(this.pmBidWinningHisService.save(pmBidWinningHis)){
  325. //文件
  326. List<SysFileRef> fileRefs = getSysFileRefList(pmBidWinningDb.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType());
  327. if (!ObjectUtils.isEmpty(fileRefs)) {
  328. for (SysFileRef sysFileRef : fileRefs) {
  329. sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_BID_WINNING_FILE.getType() + "" + pmBidWinningHis.getReturnOrderNumber()));
  330. }
  331. sysFileRefService.updateBatchById(fileRefs);
  332. }
  333. this.pmBidWinningService.removeById(pmBidWinningDb.getId());
  334. }
  335. }
  336. }
  337. //8中标开标关联表
  338. LambdaQueryWrapper<PmBidWinningOpeningRef> pmBidWinningOpeningRefLambdaQueryWrapper = new LambdaQueryWrapper<>();
  339. pmBidWinningOpeningRefLambdaQueryWrapper.eq(PmBidWinningOpeningRef::getDemandId,demandId);
  340. List<PmBidWinningOpeningRef> pmBidWinningOpeningRefDbList = this.pmBidWinningOpeningRefService.list(pmBidWinningOpeningRefLambdaQueryWrapper);
  341. if(!ObjectUtils.isEmpty(pmBidWinningOpeningRefDbList)) {
  342. LambdaQueryWrapper<PmBidWinningOpeningRefHis> pmBidWinningOpeningRefHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
  343. pmBidWinningOpeningRefHisLambdaQueryWrapper.eq(PmBidWinningOpeningRefHis::getDemandId,demandId)
  344. .orderByDesc(PmBidWinningOpeningRefHis::getReturnOrderNumber).last(" limit 1");
  345. PmBidWinningOpeningRefHis pmBidWinningOpeningRefHisDb = this.pmBidWinningOpeningRefHisService.getOne(pmBidWinningOpeningRefHisLambdaQueryWrapper);
  346. for(PmBidWinningOpeningRef pmBidWinningOpeningRefDb : pmBidWinningOpeningRefDbList) {
  347. PmBidWinningOpeningRefHis pmBidWinningOpeningRefHis = new PmBidWinningOpeningRefHis();
  348. BeanUtils.copyProperties(pmBidWinningOpeningRefDb,pmBidWinningOpeningRefHis);
  349. if(pmBidWinningOpeningRefHisDb != null){
  350. pmBidWinningOpeningRefHis.setReturnOrderNumber(pmBidWinningOpeningRefHisDb.getReturnOrderNumber() + 1);
  351. } else {
  352. pmBidWinningOpeningRefHis.setReturnOrderNumber(1);
  353. }
  354. if(this.pmBidWinningOpeningRefHisService.save(pmBidWinningOpeningRefHis)){
  355. this.pmBidWinningOpeningRefService.removeById(pmBidWinningOpeningRefDb.getId());
  356. }
  357. }
  358. }
  359. //9流标基本情况表
  360. LambdaQueryWrapper<PmBidFailure> pmBidFailureLambdaQueryWrapper = new LambdaQueryWrapper<>();
  361. pmBidFailureLambdaQueryWrapper.eq(PmBidFailure::getDemandId,demandId);
  362. List<PmBidFailure> pmBidFailureDbList = this.pmBidFailureService.list(pmBidFailureLambdaQueryWrapper);
  363. if(!ObjectUtils.isEmpty(pmBidFailureDbList)) {
  364. LambdaQueryWrapper<PmBidFailureHis> pmBidFailureHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
  365. pmBidFailureHisLambdaQueryWrapper.eq(PmBidFailureHis::getDemandId,demandId)
  366. .orderByDesc(PmBidFailureHis::getReturnOrderNumber).last(" limit 1");
  367. PmBidFailureHis pmBidFailureHisDb = this.pmBidFailureHisService.getOne(pmBidFailureHisLambdaQueryWrapper);
  368. for(PmBidFailure pmBidFailureDb : pmBidFailureDbList) {
  369. PmBidFailureHis pmBidFailureHis = new PmBidFailureHis();
  370. BeanUtils.copyProperties(pmBidFailureDb,pmBidFailureHis);
  371. if(pmBidFailureHisDb != null){
  372. pmBidFailureHis.setReturnOrderNumber(pmBidFailureHisDb.getReturnOrderNumber() + 1);
  373. } else {
  374. pmBidFailureHis.setReturnOrderNumber(1);
  375. }
  376. if(this.pmBidFailureHisService.save(pmBidFailureHis)){
  377. //文件
  378. List<SysFileRef> fileRefs = getSysFileRefList(pmBidFailureDb.getId(), SysFileRefEnum.PM_BID_FAILURE_FILE.getType());
  379. if (!ObjectUtils.isEmpty(fileRefs)) {
  380. for (SysFileRef sysFileRef : fileRefs) {
  381. sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_BID_FAILURE_FILE.getType() + "" + pmBidFailureHis.getReturnOrderNumber()));
  382. }
  383. sysFileRefService.updateBatchById(fileRefs);
  384. }
  385. List<SysFileRef> fileRefs2 = getSysFileRefList(pmBidFailureDb.getId(), SysFileRefEnum.PM_BID_FAILURE_CALL_QUESTION.getType());
  386. if (!ObjectUtils.isEmpty(fileRefs2)) {
  387. for (SysFileRef sysFileRef : fileRefs2) {
  388. sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_BID_FAILURE_CALL_QUESTION.getType() + "" + pmBidFailureHis.getReturnOrderNumber()));
  389. }
  390. sysFileRefService.updateBatchById(fileRefs2);
  391. }
  392. this.pmBidFailureService.removeById(pmBidFailureDb.getId());
  393. }
  394. }
  395. }
  396. //需求表
  397. PmDemandHis pmDemandHis = new PmDemandHis();
  398. BeanUtils.copyProperties(pmDemand,pmDemandHis);
  399. LambdaQueryWrapper<PmDemandHis> pmDemandHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
  400. pmDemandHisLambdaQueryWrapper.eq(PmDemandHis::getDemandId,demandId)
  401. .orderByDesc(PmDemandHis::getReturnOrderNumber).last(" limit 1");
  402. PmDemandHis pmDemandHisDb= this.pmDemandHisService.getOne(pmDemandHisLambdaQueryWrapper);
  403. if(pmDemandHisDb != null){
  404. pmDemandHis.setReturnOrderNumber(pmDemandHisDb.getReturnOrderNumber() + 1);
  405. } else {
  406. pmDemandHis.setReturnOrderNumber(1);
  407. }
  408. if(this.pmDemandHisService.save(pmDemandHis)){
  409. UpdateWrapper<PmDemand> pmDemandUpdateWrapper = new UpdateWrapper<>();
  410. pmDemandUpdateWrapper.lambda()
  411. .set(PmDemand::getRealDemandCommitTime,null)
  412. .set(PmDemand::getRealPurchaseFinishTime,null)
  413. .set(PmDemand::getRealDeliverTime,null)
  414. .set(PmDemand::getAuditTime,null)
  415. .set(PmDemand::getAgencyId,null)
  416. .set(PmDemand::getExtractAgencyTime,null)
  417. .set(PmDemand::getPurchaseTaskDocumentNumber,null)
  418. .set(PmDemand::getTaskReleaseTime,null)
  419. .set(PmDemand::getHasExpert,0)
  420. .set(PmDemand::getProjectStatus,PmProjectStatus.WASTE_BID_RETURN.getCode())
  421. .set(PmDemand::getUpdateBy,updateBy)
  422. .set(PmDemand::getUpdateTime,new Date())
  423. .eq(PmDemand::getDemandId,demandId);
  424. iPmDemandService.update(pmDemandUpdateWrapper);
  425. List<SysFileRef> fileRefs = getSysFileRefList(demandId, SysFileRefEnum.PM_DEMAND_EXAMINE.getType());
  426. if (!ObjectUtils.isEmpty(fileRefs)) {
  427. for (SysFileRef sysFileRef : fileRefs) {
  428. sysFileRef.setType(Integer.parseInt(SysFileRefEnum.PM_DEMAND_EXAMINE.getType() + "" + pmDemandHis.getReturnOrderNumber()));
  429. }
  430. sysFileRefService.updateBatchById(fileRefs);
  431. }
  432. LambdaQueryWrapper<PmAuditDeptRef> lw = new LambdaQueryWrapper<>();
  433. lw.eq(PmAuditDeptRef::getRefId, demandId);
  434. lw.eq(PmAuditDeptRef::getRefType, "2");
  435. pmAuditDeptRefService.remove(lw);
  436. }
  437. return true;
  438. }
  439. private List<SysFileRef> getSysFileRefList(Long redId, Integer type) {
  440. HashMap<String, Object> map = new HashMap<>();
  441. map.put("red_id", redId);
  442. map.put("type", type);
  443. List<SysFileRef> fileRefs = sysFileRefService.listByMap(map);
  444. return fileRefs;
  445. }
  446. /**
  447. * 查询采购需求
  448. *
  449. * @param demandId 采购需求主键
  450. * @return 采购需求
  451. */
  452. @Override
  453. public PmDemandResVo selectPmDemandHisByDemandId(Long demandId, String detailType,Integer returnOrderNumber) {
  454. LambdaQueryWrapper<PmDemandHis> pmDemandHisLambdaQueryWrapper = new LambdaQueryWrapper<>();
  455. pmDemandHisLambdaQueryWrapper.eq(PmDemandHis::getDemandId,demandId).eq(PmDemandHis::getReturnOrderNumber,returnOrderNumber);
  456. PmDemandHis pmDemandHis = this.pmDemandHisService.getOne(pmDemandHisLambdaQueryWrapper);
  457. if (pmDemandHis != null) {
  458. PmDemandResVo vo = new PmDemandResVo();
  459. vo.setProjectName(pmDemandHis.getProjectName());
  460. vo.setDemandId(demandId);
  461. if ("1".equals(detailType)) { //项目计划
  462. BeanUtils.copyProperties(pmDemandHis, vo);
  463. //project_type,evaluation 从原来计划里取
  464. ProvisionalPlan provisionalPlan = provisionalPlanMapper.seletById(pmDemandHis.getPlanId());
  465. vo.setProjectType(provisionalPlan.getProjectType());
  466. vo.setEvaluation(provisionalPlan.getEvaluation().doubleValue());
  467. SysDeptResponseVo sysDeptResponseVo = (SysDeptResponseVo) deptService.selectDeptById(vo.getPurchaseDeptId()).get("sysDept");
  468. if (sysDeptResponseVo != null) {
  469. vo.setPurchaseDeptName(sysDeptResponseVo.getDeptName());
  470. }
  471. String purchaseServicesName = dictDataService.selectDictLabel("purchase_services", vo.getPurchaseServices());
  472. if (StringUtils.isNotEmpty(purchaseServicesName)) {
  473. vo.setPurchaseServicesName(purchaseServicesName);
  474. }
  475. //采购需求附件
  476. List<SysFileInfo> demandFileInfos = getSysFileInfoList(vo.getDemandId(), SysFileRefEnum.PM_DEMAND.getType());
  477. if (!ObjectUtils.isEmpty(demandFileInfos)) {
  478. vo.setDemandFileInfos(demandFileInfos);
  479. }
  480. //项目类型
  481. String projectTypeName = dictDataService.selectDictLabel("sys_project_type", vo.getProjectType());
  482. if (StringUtils.isNotEmpty(projectTypeName)) {
  483. vo.setProjectTypeName(projectTypeName);
  484. }
  485. //是否为超限额计划
  486. for (IsExcess value : IsExcess.values()) {
  487. if (vo.getIsExcess() != null && vo.getIsExcess().equals(value.getCode())) {
  488. vo.setIsExcessName(value.getInfo());
  489. break;
  490. }
  491. }
  492. //采购方式
  493. for (PlanPurchaseMode value : PlanPurchaseMode.values()) {
  494. if (vo.getPurchaseMode() != null && vo.getPurchaseMode().equals(value.getCode())) {
  495. vo.setPurchaseModeName(value.getInfo());
  496. break;
  497. }
  498. }
  499. //项目属性
  500. for (ProjectAttribute value : ProjectAttribute.values()) {
  501. if (vo.getProjectAttr() != null && vo.getProjectAttr().equals(value.getCode())) {
  502. vo.setProjectAttrName(value.getInfo());
  503. break;
  504. }
  505. }
  506. //预警状态
  507. for (WarnStatus value : WarnStatus.values()) {
  508. if (vo.getWarnStatus() != null && vo.getWarnStatus().equals(value.getCode())) {
  509. vo.setWarnStatusName(value.getInfo());
  510. break;
  511. }
  512. }
  513. //项目状态
  514. for (PmProjectStatus value : PmProjectStatus.values()) {
  515. if (vo.getProjectStatus() != null && vo.getProjectStatus().equals(value.getCode())) {
  516. vo.setProjectStatusName(value.getInfo());
  517. break;
  518. }
  519. }
  520. } else if ("2".equals(detailType)) { //需求建档
  521. //采购需求审核文件
  522. List<SysFileInfo> auditFileInfos = getSysFileInfoList(vo.getDemandId(), Integer.parseInt(SysFileRefEnum.PM_DEMAND_EXAMINE.getType() + "" + pmDemandHis.getReturnOrderNumber()));
  523. if (!ObjectUtils.isEmpty(auditFileInfos)) {
  524. vo.setAuditFileInfos(auditFileInfos);
  525. }
  526. LambdaQueryWrapper<PmBookBuildingHis> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  527. lambdaQueryWrapper.eq(PmBookBuildingHis::getDemandId, demandId).eq(PmBookBuildingHis::getReturnOrderNumber,returnOrderNumber);
  528. PmBookBuildingHis pmBookBuildingHis = pmBookBuildingHisService.getOne(lambdaQueryWrapper);
  529. if (pmBookBuildingHis != null) {
  530. PmBookBuildingResVo responseVo = new PmBookBuildingResVo();
  531. BeanUtils.copyProperties(pmBookBuildingHis, responseVo);
  532. List<SysFileInfo> fileInfos = getSysFileInfoList(pmBookBuildingHis.getId(), Integer.parseInt(SysFileRefEnum.PM_BOOK_BUILDING.getType() + "" + pmBookBuildingHis.getReturnOrderNumber()));
  533. if (!ObjectUtils.isEmpty(fileInfos)) {
  534. if (!ObjectUtils.isEmpty(auditFileInfos)) {
  535. fileInfos.addAll(auditFileInfos);
  536. }
  537. responseVo.setFileInfos(fileInfos);
  538. }
  539. vo.setPmBookBuildingResVo(responseVo);
  540. }
  541. } else if ("3".equals(detailType)) { //任务下达
  542. vo.setTaskReleaseTime(pmDemandHis.getTaskReleaseTime());
  543. //任务下达文件
  544. List<SysFileInfo> taskReleaseFileInfos = getSysFileInfoList(vo.getDemandId(), Integer.parseInt(SysFileRefEnum.PM_TAST_RELEASE.getType() + "" + pmDemandHis.getReturnOrderNumber()));
  545. if (!ObjectUtils.isEmpty(taskReleaseFileInfos)) {
  546. vo.setTaskReleaseFileInfos(taskReleaseFileInfos);
  547. }
  548. } else if ("4".equals(detailType)) { //中标信息
  549. PmPurchaseExecutionResVo pmPurchaseExecutionResVo = new PmPurchaseExecutionResVo();
  550. //代理商信息
  551. BaseAgency baseAgency = this.baseAgencyService.getById(pmDemandHis.getAgencyId());
  552. pmPurchaseExecutionResVo.setBaseAgency(baseAgency);
  553. //专家意见反馈
  554. LambdaQueryWrapper<PmExpertFeedbackHis> pmExpertFeedbackLambdaQueryWrapper = new LambdaQueryWrapper<>();
  555. pmExpertFeedbackLambdaQueryWrapper.eq(PmExpertFeedbackHis::getDemandId,demandId).eq(PmExpertFeedbackHis::getReturnOrderNumber,returnOrderNumber);
  556. PmExpertFeedbackHis pmExpertFeedbackHis = pmExpertFeedbackHisService.getOne(pmExpertFeedbackLambdaQueryWrapper);
  557. if(!ObjectUtils.isEmpty(pmExpertFeedbackHis)){
  558. PmExpertFeedbackResVo pmExpertFeedbackResVo = new PmExpertFeedbackResVo();
  559. BeanUtils.copyProperties(pmExpertFeedbackHis,pmExpertFeedbackResVo);
  560. List<SysFileInfo> fileInfos = getSysFileInfoList(pmExpertFeedbackResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_EXPERT_FEEDBACK.getType() + "" + pmExpertFeedbackHis.getReturnOrderNumber()));
  561. if (!ObjectUtils.isEmpty(fileInfos)) {
  562. pmExpertFeedbackResVo.setFileInfos(fileInfos);
  563. }
  564. pmPurchaseExecutionResVo.setPmExpertFeedbackResVo(pmExpertFeedbackResVo);
  565. }
  566. //采购文件编制审核
  567. LambdaQueryWrapper<PmProcurementDocumentsReviewHis> pmProcurementDocumentsReviewLambdaQueryWrapper = new LambdaQueryWrapper<>();
  568. pmProcurementDocumentsReviewLambdaQueryWrapper.eq(PmProcurementDocumentsReviewHis::getDemandId,demandId).eq(PmProcurementDocumentsReviewHis::getReturnOrderNumber,returnOrderNumber);
  569. PmProcurementDocumentsReviewHis pmProcurementDocumentsReviewHis = pmProcurementDocumentsReviewHisService.getOne(pmProcurementDocumentsReviewLambdaQueryWrapper);
  570. if(!ObjectUtils.isEmpty(pmProcurementDocumentsReviewHis)){
  571. PmProcurementDocumentsReviewResVo pmProcurementDocumentsReviewResVo = new PmProcurementDocumentsReviewResVo();
  572. BeanUtils.copyProperties(pmProcurementDocumentsReviewHis,pmProcurementDocumentsReviewResVo);
  573. List<SysFileInfo> fileInfos = getSysFileInfoList(pmProcurementDocumentsReviewResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_BID_FILE.getType() + "" + pmProcurementDocumentsReviewHis.getReturnOrderNumber()));
  574. if (!ObjectUtils.isEmpty(fileInfos)) {
  575. pmProcurementDocumentsReviewResVo.setFileInfos(fileInfos);
  576. }
  577. pmPurchaseExecutionResVo.setPmProcurementDocumentsReviewResVo(pmProcurementDocumentsReviewResVo);
  578. }
  579. //采购公告列表
  580. LambdaQueryWrapper<PmReleaseAnnouncementHis> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  581. lambdaQueryWrapper.eq(PmReleaseAnnouncementHis::getDemandId, demandId).eq(PmReleaseAnnouncementHis::getReturnOrderNumber,returnOrderNumber);
  582. List<PmReleaseAnnouncementHis> pmReleaseAnnouncementHisList = this.pmReleaseAnnouncementHisService.list(lambdaQueryWrapper);
  583. if (!ObjectUtils.isEmpty(pmReleaseAnnouncementHisList)) {
  584. List<PmReleaseAnnouncementResVo> pmReleaseAnnouncementResVoList = new ArrayList<>();
  585. List<SysFileInfo> fileInfosAll = new ArrayList<>();
  586. for (PmReleaseAnnouncementHis pmReleaseAnnouncementHis : pmReleaseAnnouncementHisList) {
  587. PmReleaseAnnouncementResVo pmReleaseAnnouncementResVo = new PmReleaseAnnouncementResVo();
  588. BeanUtils.copyProperties(pmReleaseAnnouncementHis, pmReleaseAnnouncementResVo);
  589. List<SysFileInfo> fileInfos = getSysFileInfoList(pmReleaseAnnouncementResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_ANNOUNCEMENT_FILE.getType() + "" + pmReleaseAnnouncementHis.getReturnOrderNumber()));
  590. if (!ObjectUtils.isEmpty(fileInfos)) {
  591. fileInfosAll.addAll(fileInfos);
  592. }
  593. pmReleaseAnnouncementResVoList.add(pmReleaseAnnouncementResVo);
  594. }
  595. pmPurchaseExecutionResVo.setPmReleaseAnnouncementFileInfos(fileInfosAll);
  596. pmPurchaseExecutionResVo.setPmReleaseAnnouncementResVoList(pmReleaseAnnouncementResVoList);
  597. }
  598. //标前质疑投诉
  599. LambdaQueryWrapper<PmCallQuestionHis> pmCallQuestionLambdaQueryWrapper = new LambdaQueryWrapper<>();
  600. pmCallQuestionLambdaQueryWrapper.eq(PmCallQuestionHis::getDemandId,demandId).eq(PmCallQuestionHis::getReturnOrderNumber,returnOrderNumber)
  601. .eq(PmCallQuestionHis::getType,'0').orderByDesc(PmCallQuestionHis::getCallQuestionTime);
  602. List<PmCallQuestionHis> pmCallQuestionHisList = pmCallQuestionHisService.list(pmCallQuestionLambdaQueryWrapper);
  603. if(!ObjectUtils.isEmpty(pmCallQuestionHisList)){
  604. List<PmCallQuestionResVo> pmCallQuestionResVoList = new ArrayList<>();
  605. List<SysFileInfo> fileInfosAll = new ArrayList<>();
  606. for(PmCallQuestionHis pmCallQuestionHis : pmCallQuestionHisList){
  607. PmCallQuestionResVo pmCallQuestionResVo = new PmCallQuestionResVo();
  608. BeanUtils.copyProperties(pmCallQuestionHis,pmCallQuestionResVo);
  609. List<SysFileInfo> fileInfos = getSysFileInfoList(pmCallQuestionResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_PRE_BID_CALL_QUESTION.getType() + "" + pmCallQuestionHis.getReturnOrderNumber()));
  610. if (!ObjectUtils.isEmpty(fileInfos)) {
  611. fileInfosAll.addAll(fileInfos);
  612. }
  613. pmCallQuestionResVoList.add(pmCallQuestionResVo);
  614. }
  615. pmPurchaseExecutionResVo.setPmCallQuestionPreResVoList(pmCallQuestionResVoList);
  616. pmPurchaseExecutionResVo.setPmCallQuestionPreFileInfos(fileInfosAll);
  617. }
  618. //专家信息列表
  619. List<PmBaseExpertResVo> pmBaseExpertResVoList = this.pmDemandExpertRefHisService.getPmBaseExpertResVoList(demandId,returnOrderNumber);
  620. pmPurchaseExecutionResVo.setPmBaseExpertResVoList(pmBaseExpertResVoList);
  621. //开标信息列表
  622. List<PmBidOpeningResVo> pmBidOpeningResVoList = this.pmBidOpeningHisService.getPmBidOpeningResVoList(demandId,returnOrderNumber);
  623. pmPurchaseExecutionResVo.setPmBidOpeningResVoList(pmBidOpeningResVoList);
  624. //评标结果公告列表
  625. LambdaQueryWrapper<PmBidWinningHis> lambdaQueryWrapper1 = new LambdaQueryWrapper<>();
  626. lambdaQueryWrapper1.eq(PmBidWinningHis::getDemandId, demandId).eq(PmBidWinningHis::getReturnOrderNumber,returnOrderNumber)
  627. .ne(PmBidWinningHis::getStatus, BidWinningStatus.BE_REPLACED.getCode())
  628. .orderByDesc(PmBidWinningHis::getBidAnnouncementTime);
  629. List<PmBidWinningHis> pmBidWinningHisList = this.pmBidWinningHisService.list(lambdaQueryWrapper1);
  630. if (!ObjectUtils.isEmpty(pmBidWinningHisList)) {
  631. List<PmBidWinningResVo> pmBidWinningResVoList = new ArrayList<>();
  632. List<SysFileInfo> fileInfosAll = new ArrayList<>();
  633. for (PmBidWinningHis pmBidWinningHis : pmBidWinningHisList) {
  634. PmBidWinningResVo pmBidWinningResVo = new PmBidWinningResVo();
  635. BeanUtils.copyProperties(pmBidWinningHis, pmBidWinningResVo);
  636. pmBidWinningResVoList.add(pmBidWinningResVo);
  637. List<SysFileInfo> fileInfos = getSysFileInfoList(pmBidWinningResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_BID_WINNING_FILE.getType() + "" + pmBidWinningHis.getReturnOrderNumber()));
  638. if (!ObjectUtils.isEmpty(fileInfos)) {
  639. fileInfosAll.addAll(fileInfos);
  640. }
  641. }
  642. pmPurchaseExecutionResVo.setPmBidWinningResVoList(pmBidWinningResVoList);
  643. pmPurchaseExecutionResVo.setPmBidWinningFileInfos(fileInfosAll);
  644. }
  645. //标后质疑
  646. LambdaQueryWrapper<PmCallQuestionHis> pmCallQuestionLambdaQueryWrapper2 = new LambdaQueryWrapper<>();
  647. pmCallQuestionLambdaQueryWrapper2.eq(PmCallQuestionHis::getDemandId,demandId).eq(PmCallQuestionHis::getReturnOrderNumber,returnOrderNumber)
  648. .eq(PmCallQuestionHis::getType,'1').orderByDesc(PmCallQuestionHis::getCallQuestionTime);
  649. List<PmCallQuestionHis> pmCallQuestionHisList2 = pmCallQuestionHisService.list(pmCallQuestionLambdaQueryWrapper2);
  650. if(!ObjectUtils.isEmpty(pmCallQuestionHisList2)){
  651. List<PmCallQuestionResVo> pmCallQuestionResVoList = new ArrayList<>();
  652. List<SysFileInfo> fileInfosAll = new ArrayList<>();
  653. for(PmCallQuestionHis pmCallQuestionHis : pmCallQuestionHisList2){
  654. PmCallQuestionResVo pmCallQuestionResVo = new PmCallQuestionResVo();
  655. BeanUtils.copyProperties(pmCallQuestionHis,pmCallQuestionResVo);
  656. List<SysFileInfo> fileInfos = getSysFileInfoList(pmCallQuestionResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_BID_CALL_QEUSTION_FILE.getType() + "" + pmCallQuestionHis.getReturnOrderNumber()));
  657. if (!ObjectUtils.isEmpty(fileInfos)) {
  658. fileInfosAll.addAll(fileInfos);
  659. }
  660. pmCallQuestionResVoList.add(pmCallQuestionResVo);
  661. }
  662. pmPurchaseExecutionResVo.setPmCallQuestionPostResVoList(pmCallQuestionResVoList);
  663. pmPurchaseExecutionResVo.setPmCallRequestPostFileInfos(fileInfosAll);
  664. }
  665. //流标情况
  666. LambdaQueryWrapper<PmBidFailureHis> lambdaQueryWrapper2 = new LambdaQueryWrapper<>();
  667. lambdaQueryWrapper2.eq(PmBidFailureHis::getDemandId, demandId).eq(PmBidFailureHis::getReturnOrderNumber,returnOrderNumber)
  668. .orderByDesc(PmBidFailureHis::getBidFailureTime);
  669. List<PmBidFailureHis> pmBidFailureHisList = this.pmBidFailureHisService.list(lambdaQueryWrapper2);
  670. if (!ObjectUtils.isEmpty(pmBidFailureHisList)) {
  671. List<PmBidFailureResVo> pmBidFailureResVoList = new ArrayList<>();
  672. List<PmCallQuestionResVo> pmCallQuestionBidFailureResVoList = new ArrayList<>();
  673. List<SysFileInfo> pmBidFailureFileInfos = new ArrayList<>();
  674. List<SysFileInfo> pmCallRequestBidFailureFileInfos = new ArrayList<>();
  675. for (PmBidFailureHis pmBidFailureHis : pmBidFailureHisList) {
  676. PmBidFailureResVo pmBidFailureResVo = new PmBidFailureResVo();
  677. BeanUtils.copyProperties(pmBidFailureHis, pmBidFailureResVo);
  678. pmBidFailureResVoList.add(pmBidFailureResVo);
  679. //流标文件
  680. List<SysFileInfo> fileInfos = getSysFileInfoList(pmBidFailureResVo.getId(), Integer.parseInt(SysFileRefEnum.PM_BID_FAILURE_FILE.getType() + "" + pmBidFailureHis.getReturnOrderNumber()));
  681. if (!ObjectUtils.isEmpty(fileInfos)) {
  682. pmBidFailureFileInfos.addAll(fileInfos);
  683. }
  684. if("1".equals(pmBidFailureHis.getCallQuestion())){ //有质疑
  685. PmCallQuestionResVo pmCallQuestionResVo = new PmCallQuestionResVo();
  686. pmCallQuestionResVo.setCallQuestion(pmBidFailureHis.getCallQuestion());
  687. pmCallQuestionResVo.setCallQuestionTime(pmBidFailureHis.getCallQuestionTime());
  688. pmCallQuestionBidFailureResVoList.add(pmCallQuestionResVo);
  689. //流废标质疑文件
  690. List<SysFileInfo> fileInfos2 = getSysFileInfoList(pmBidFailureHis.getId(), Integer.parseInt(SysFileRefEnum.PM_BID_FAILURE_CALL_QUESTION.getType() + "" + pmBidFailureHis.getReturnOrderNumber()));
  691. if (!ObjectUtils.isEmpty(fileInfos2)) {
  692. pmCallRequestBidFailureFileInfos.addAll(fileInfos2);
  693. }
  694. }
  695. }
  696. pmPurchaseExecutionResVo.setPmBidFailureResVoList(pmBidFailureResVoList);
  697. pmPurchaseExecutionResVo.setPmBidFailureFileInfos(pmBidFailureFileInfos);
  698. //流废标处置
  699. pmPurchaseExecutionResVo.setPmCallQuestionBidFailureResVoList(pmCallQuestionBidFailureResVoList);
  700. pmPurchaseExecutionResVo.setPmCallRequestBidFailureFileInfos(pmCallRequestBidFailureFileInfos);
  701. }
  702. //中标通知书
  703. List<SysFileInfo> pmBidWinningNotificationFileInfos = getSysFileInfoList(vo.getDemandId(), Integer.parseInt(SysFileRefEnum.PM_BID_WINNING_NOTIFICATION.getType() + "" + pmDemandHis.getReturnOrderNumber()));
  704. pmPurchaseExecutionResVo.setFileInfos(pmBidWinningNotificationFileInfos);
  705. vo.setPmPurchaseExecutionResVo(pmPurchaseExecutionResVo);
  706. } else if ("5".equals(detailType)) { //合同信息
  707. return null;
  708. } else if ("6".equals(detailType)) { //建设情况
  709. return null;
  710. }
  711. return vo;
  712. } else {
  713. return null;
  714. }
  715. }
  716. private List<SysFileInfo> getSysFileInfoList(Long redId, Integer type) {
  717. HashMap<String, Object> map = new HashMap<>();
  718. map.put("red_id", redId);
  719. map.put("type", type);
  720. List<SysFileRef> fileRefs = sysFileRefService.listByMap(map);
  721. if (!ObjectUtils.isEmpty(fileRefs)) {
  722. List<SysFileInfo> fileInfos = new ArrayList<>();
  723. for (SysFileRef ref : fileRefs) {
  724. SysFileInfo fileInfo = fileService.getById(ref.getFileId());
  725. fileInfos.add(fileInfo);
  726. }
  727. return fileInfos;
  728. } else {
  729. return null;
  730. }
  731. }
  732. }