766d6860a057860307f5728ac1f3fddab025534c.svn-base 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613
  1. package cn.com.goldenwater.dcproj.controller.tacplan;
  2. import cn.com.goldenwater.core.web.BaseController;
  3. import cn.com.goldenwater.core.web.BaseResponse;
  4. import cn.com.goldenwater.dcproj.constValue.StateEnum;
  5. import cn.com.goldenwater.dcproj.dto.TacProvincePblmInfoDto;
  6. import cn.com.goldenwater.dcproj.model.GwComFile;
  7. import cn.com.goldenwater.dcproj.model.TacObjPblmstb;
  8. import cn.com.goldenwater.dcproj.model.TacPawpRgstr;
  9. import cn.com.goldenwater.dcproj.model.TacPblmInfo;
  10. import cn.com.goldenwater.dcproj.model.TacPblmSubject;
  11. import cn.com.goldenwater.dcproj.model.TacProvincePblmInfo;
  12. import cn.com.goldenwater.dcproj.model.TacProvincePblmInfoReDto;
  13. import cn.com.goldenwater.dcproj.model.TacProvincePlanExamine;
  14. import cn.com.goldenwater.dcproj.model.TacProvincePlanProcess;
  15. import cn.com.goldenwater.dcproj.model.TacProvincePlanTask;
  16. import cn.com.goldenwater.dcproj.param.GwComFileParam;
  17. import cn.com.goldenwater.dcproj.param.TacPblmInfoParam;
  18. import cn.com.goldenwater.dcproj.param.TacPblmSubjectParam;
  19. import cn.com.goldenwater.dcproj.param.TacProvincePblmInfoParam;
  20. import cn.com.goldenwater.dcproj.param.TacProvincePlanExamineParam;
  21. import cn.com.goldenwater.dcproj.param.TacProvincePlanProcessParam;
  22. import cn.com.goldenwater.dcproj.param.TacProvincePlanTaskParam;
  23. import cn.com.goldenwater.dcproj.service.GwComFileService;
  24. import cn.com.goldenwater.dcproj.service.OlBisInspOrgService;
  25. import cn.com.goldenwater.dcproj.service.TacActiveLogService;
  26. import cn.com.goldenwater.dcproj.service.TacObjPblmstbService;
  27. import cn.com.goldenwater.dcproj.service.TacPawpRgstrService;
  28. import cn.com.goldenwater.dcproj.service.TacPblmInfoService;
  29. import cn.com.goldenwater.dcproj.service.TacPblmSubjectService;
  30. import cn.com.goldenwater.dcproj.service.TacProvincePblmInfoService;
  31. import cn.com.goldenwater.dcproj.service.TacProvincePlanExamineService;
  32. import cn.com.goldenwater.dcproj.service.TacProvincePlanProcessService;
  33. import cn.com.goldenwater.dcproj.service.TacProvincePlanTaskService;
  34. import cn.com.goldenwater.dcproj.utils.BeanUtil;
  35. import cn.com.goldenwater.dcproj.utils.InspUtils;
  36. import cn.com.goldenwater.id.util.UuidUtil;
  37. import com.github.pagehelper.PageInfo;
  38. import com.workflow.common.util.convert.ConvertBeanUtils;
  39. import io.swagger.annotations.Api;
  40. import io.swagger.annotations.ApiOperation;
  41. import io.swagger.annotations.ApiParam;
  42. import org.apache.commons.lang3.StringUtils;
  43. import org.slf4j.Logger;
  44. import org.slf4j.LoggerFactory;
  45. import org.springframework.beans.factory.annotation.Autowired;
  46. import org.springframework.web.bind.annotation.PathVariable;
  47. import org.springframework.web.bind.annotation.RequestBody;
  48. import org.springframework.web.bind.annotation.RequestMapping;
  49. import org.springframework.web.bind.annotation.RequestMethod;
  50. import org.springframework.web.bind.annotation.RequestParam;
  51. import org.springframework.web.bind.annotation.RestController;
  52. import java.util.Date;
  53. import java.util.HashMap;
  54. import java.util.List;
  55. import java.util.Map;
  56. /**
  57. * @author lune
  58. * @date 2020-5-28
  59. */
  60. @Api(value = "TAC 稽察问题审核信息表管理", tags = "TAC 稽察问题审核信息表管理")
  61. @RestController
  62. @RequestMapping("/tac/province/pblm/info")
  63. public class TacProvincePblmInfoController extends BaseController {
  64. private Logger logger = LoggerFactory.getLogger(getClass());
  65. @Autowired
  66. private TacProvincePblmInfoService tacProvincePblmInfoService;
  67. @Autowired
  68. private TacPawpRgstrService tacPawpRgstrService;
  69. @Autowired
  70. private TacProvincePlanTaskService tacProvincePlanTaskService;
  71. @Autowired
  72. private TacProvincePlanProcessService tacProvincePlanProcessService;
  73. @Autowired
  74. private TacPblmInfoService tacPblmInfoService;
  75. @Autowired
  76. private TacPblmSubjectService tacPblmSubjectService;
  77. @Autowired
  78. private OlBisInspOrgService olBisInspOrgService;
  79. @Autowired
  80. private TacActiveLogService activeLogService;
  81. @Autowired
  82. private TacProvincePlanExamineService tacProvincePlanExamineService;
  83. @Autowired
  84. private TacObjPblmstbService tacObjPblmstbService;
  85. @Autowired
  86. private GwComFileService gwComFileService;
  87. @ApiOperation(value = "添加/修改稽察问题审核信息表,审核阶段")
  88. @RequestMapping(value = "", method = RequestMethod.POST)
  89. public BaseResponse insert(@ApiParam(name = "tacProvincePblmInfo", value = "TacProvincePblmInfo", required = true) @RequestBody TacProvincePblmInfo tacProvincePblmInfo) {
  90. tacProvincePblmInfo.setProvince(olBisInspOrgService.getRlProvince(getCurrentOrgId()));
  91. tacProvincePblmInfo.setPersId(getCurrentPersId());
  92. tacProvincePblmInfo.setPblmMendPersId(getCurrentPersId());
  93. TacProvincePlanTaskParam tacProvincePlanTaskParam = new TacProvincePlanTaskParam();
  94. tacProvincePlanTaskParam.setRgstrId(tacProvincePblmInfo.getRgstrId());
  95. tacProvincePlanTaskParam.setNowId(tacProvincePblmInfo.getStepId());
  96. TacProvincePlanTask tacProvincePlanTask = tacProvincePlanTaskService.getBy(tacProvincePlanTaskParam);
  97. // TacPawpRgstr tacPawpRgstr = tacPawpRgstrService.get(tacProvincePblmInfo.getRgstrId());
  98. if (tacProvincePlanTask != null) {
  99. tacProvincePblmInfo.setTaskId(tacProvincePlanTask.getId());
  100. }
  101. if (StringUtils.isNotBlank(tacProvincePblmInfo.getId())) {
  102. tacProvincePblmInfo.setUptm(new Date());
  103. tacProvincePblmInfo.setState("1");
  104. tacProvincePblmInfoService.updatePblm(tacProvincePblmInfo);
  105. } else {
  106. String key = getCurrentPersId() + "_pblm_info_province";
  107. synchronized (this) {
  108. if (!tacPawpRgstrService.suoding(key)) {
  109. return buildFailResponse("操作太频繁,请等会儿再操作");
  110. }
  111. }
  112. if (StringUtils.isBlank(tacProvincePblmInfo.getIfCasePblm())) {
  113. tacProvincePblmInfo.setIfCasePblm("0");
  114. }
  115. String uuid = UuidUtil.uuid();
  116. tacProvincePblmInfo.setId(uuid);
  117. tacProvincePblmInfo.setIntm(new Date());
  118. tacProvincePblmInfoService.insertPblm(tacProvincePblmInfo);
  119. }
  120. return buildSuccessResponse(tacProvincePblmInfo);
  121. }
  122. @ApiOperation(value = "根据ID删除稽察问题审核信息表")
  123. @RequestMapping(value = "/del/{id}", method = RequestMethod.GET)
  124. public BaseResponse delete(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) {
  125. int ret = tacProvincePblmInfoService.delete(id);
  126. return buildSuccessResponse();
  127. }
  128. @ApiOperation(value = "问题第一次提交审核,根据专业提交问题至初始阶段")
  129. @RequestMapping(value = "/plan/{rgstrId}/{type}", method = RequestMethod.GET)
  130. public BaseResponse plan(@ApiParam(name = "rgstrId", value = "rgstrId", required = true) @PathVariable String rgstrId,
  131. @ApiParam(name = "type", value = "type", required = false) @PathVariable String type) {
  132. TacPawpRgstr tacPawpRgstr = tacPawpRgstrService.get(rgstrId);
  133. if (tacPawpRgstr != null) {
  134. String state = InspUtils.getTypeState(type, tacPawpRgstr);
  135. if (StateEnum.SUBMIT_ZHULI.getKey().equals(state)) {
  136. return buildFailResponse("当前专业问题已经提交完成!!不可以重复提交!");
  137. }
  138. //提交后问题录入初始阶段,初始为开始状态
  139. TacProvincePlanProcessParam tacProvincePlanProcessParam = new TacProvincePlanProcessParam();
  140. tacProvincePlanProcessParam.setOrgId(getCurrentOrgId());
  141. tacProvincePlanProcessParam.setPrvId("0");//上一步id为0表示当前为起始位置
  142. TacProvincePlanProcess tacProvincePlanProcess = tacProvincePlanProcessService.getBy(tacProvincePlanProcessParam);
  143. // 机构定制阶段流程
  144. if (tacProvincePlanProcess == null) {
  145. return buildFailResponse("当前机构还没有定义相关的审核流程,请先定义审核流程再提交!!");
  146. }
  147. //查询稽察对象的专业所属问题
  148. TacPblmInfoParam tacPblmInfoParam = new TacPblmInfoParam();
  149. tacPblmInfoParam.setRgstrId(rgstrId);
  150. tacPblmInfoParam.setListType(type);
  151. tacPblmInfoParam.setProvince(tacPawpRgstr.getProvince());
  152. List<TacPblmInfo> tacPblmInfoList = tacPblmInfoService.findList(tacPblmInfoParam);
  153. // if (tacPblmInfoList != null && !tacPblmInfoList.isEmpty()) {有问题能提交,没有问题不能提交
  154. //问题不为空,则提交问题至初始阶段
  155. String content = InspUtils.getSpfsnlType(type);//专业内容
  156. //记录提交阶段
  157. String taskId = tacProvincePblmInfoService.addPlan(tacPblmInfoList, tacProvincePlanProcess, rgstrId, getCurrentPersId());
  158. //添加记录至日志中
  159. activeLogService.addTacLog(tacPawpRgstr.getName(), StateEnum.SUBMIT_ZHULI.getDesc(), tacPawpRgstr.getId(), type, StateEnum.SUBMIT_ZHULI.getKey(), tacProvincePlanProcess.getNowId(),
  160. content + "提交给助理【" + tacProvincePlanProcess.getNowStep() + "】", getCurrentPersId());
  161. //稽察对象修改提交专业状态为4(专家提交到助理)
  162. tacPawpRgstrService.updateSubmit(tacPawpRgstr, type, StateEnum.SUBMIT_ZHULI.getKey());
  163. //稽察对象加入对应的阶段值
  164. tacPawpRgstr.setTaskId(taskId);
  165. tacPawpRgstr.setUptm(new Date());
  166. tacPawpRgstrService.update(tacPawpRgstr);
  167. return buildSuccessResponse("提交审核成功");
  168. // }
  169. }
  170. return buildFailResponse("请确认提交参数是否正确!!");
  171. }
  172. @ApiOperation(value = "单个问题提交问题审核流程")
  173. @RequestMapping(value = "/planPblm/{pblmId}/{nextId}", method = RequestMethod.GET)
  174. public BaseResponse planPblm(@ApiParam(name = "pblmId", value = "pblmId", required = true) @PathVariable String pblmId,
  175. @ApiParam(name = "nextId", value = "nextId", required = true) @PathVariable String nextId) {
  176. if ("1".equals(nextId)) {
  177. return buildSuccessResponse("已经完成整合流程审核,无更多审核阶段!!");
  178. }
  179. TacProvincePblmInfo tacProvincePblmInfo = tacProvincePblmInfoService.get(pblmId);
  180. if (tacProvincePblmInfo != null && "1".equals(tacProvincePblmInfo.getState())) {
  181. TacProvincePlanTaskParam tacProvincePlanTaskParam = new TacProvincePlanTaskParam();
  182. tacProvincePlanTaskParam.setRgstrId(tacProvincePblmInfo.getRgstrId());
  183. tacProvincePlanTaskParam.setNowId(nextId);
  184. TacProvincePlanTask tacProvincePlanTask = tacProvincePlanTaskService.getBy(tacProvincePlanTaskParam);
  185. if (tacProvincePlanTask != null) {
  186. TacProvincePblmInfo provincePblmInfo = new TacProvincePblmInfo();
  187. BeanUtil.copyObject1(tacProvincePblmInfo, provincePblmInfo);
  188. provincePblmInfo.setState("0");
  189. provincePblmInfo.setOldPblmId(tacProvincePblmInfo.getId());
  190. String uuid = UuidUtil.uuid();
  191. provincePblmInfo.setId(uuid);
  192. provincePblmInfo.setStepId(nextId);
  193. provincePblmInfo.setTaskId(tacProvincePlanTask.getId());
  194. tacProvincePblmInfoService.insert(provincePblmInfo);
  195. List<GwComFile> gwComFiles = gwComFileService.findFileByBiz(tacProvincePblmInfo.getId());
  196. tacProvincePblmInfoService.addComFiles(gwComFiles, uuid);
  197. tacProvincePblmInfo.setState("0");
  198. tacProvincePblmInfoService.update(tacProvincePblmInfo);
  199. TacPawpRgstr tacPawpRgstr = tacPawpRgstrService.get(tacProvincePblmInfo.getRgstrId());
  200. activeLogService.addTacLog(tacPawpRgstr.getName(), StateEnum.SUBMIT_ZHULI.getDesc(), tacProvincePblmInfo.getRgstrId(), tacProvincePblmInfo.getListType()
  201. , StateEnum.SUBMIT_ZHULI.getKey(), nextId,
  202. "提交给单个问题【" + tacProvincePlanTask.getNowStep() + "】", getCurrentPersId());
  203. return buildSuccessResponse("单个问题提交成功!");
  204. }
  205. }
  206. return buildFailResponse("提交单个问题审核失败!!");
  207. }
  208. @ApiOperation(value = "所有问题提交问题审核流程")
  209. @RequestMapping(value = "/planProcess/{rgstrId}/{nextId}", method = RequestMethod.GET)
  210. public BaseResponse planProcess(@ApiParam(name = "rgstrId", value = "rgstrId", required = true) @PathVariable String rgstrId,
  211. @ApiParam(name = "nextId", value = "nextId", required = true) @PathVariable String nextId,
  212. @RequestParam(name = "pblmChType", value = "pblmChType", required = true) String pblmChType) {
  213. TacPawpRgstr tacPawpRgstr = tacPawpRgstrService.get(rgstrId);
  214. // "1", "前期与设计专业", "2", "建设管理专业","4", "资金使用与管理专业"
  215. // "5", "工程质量专业","6", "工程安全专业","3", "计划下达与执行专业"
  216. // 状态都为4(专家提交到助理)时,则更改稽察对象状态为4,则可提交到初始阶段的下一阶段中
  217. if (tacPawpRgstr != null && "4".equals(tacPawpRgstr.getState())) {
  218. //下一阶段为结束阶段时,则停止阶段提交
  219. if ("1".equals(nextId)) {
  220. return buildSuccessResponse("已经完成整合流程审核,无更多审核阶段!!");
  221. }
  222. //查询下一阶段记录是否存在,若不存在则新增阶段记录,存在则不能重复提交到下一阶段
  223. TacProvincePlanTaskParam provincePlanTaskParam = new TacProvincePlanTaskParam();
  224. provincePlanTaskParam.setNowId(nextId);
  225. provincePlanTaskParam.setRgstrId(rgstrId);
  226. provincePlanTaskParam.setOrgId(getCurrentOrgId());
  227. TacProvincePlanTask tacProvincePlanTask = tacProvincePlanTaskService.getBy(provincePlanTaskParam);
  228. if (tacProvincePlanTask != null) {
  229. return buildFailResponse("当前阶段问题已经提交,请不要重复提交!!");
  230. }
  231. //根据稽察对象的当前阶段记录,查询阶段记录表中该阶段记录。
  232. tacProvincePlanTask = tacProvincePlanTaskService.get(tacPawpRgstr.getTaskId());
  233. //查询机构所属阶段,查询提交的下一阶段,
  234. TacProvincePlanProcessParam tacProvincePlanProcessParam = new TacProvincePlanProcessParam();
  235. tacProvincePlanProcessParam.setOrgId(getCurrentOrgId());
  236. tacProvincePlanProcessParam.setNowId(nextId);//上一步id为0表示当前为起始位置,下一步id为1时表示为结束位置
  237. TacProvincePlanProcess tacProvincePlanProcess = tacProvincePlanProcessService.getBy(tacProvincePlanProcessParam);
  238. if (tacProvincePlanProcess == null) {
  239. return buildFailResponse("当前机构还没有定义相关的审核流程,请先定义审核流程再提交!!");
  240. }
  241. //机构所属阶段中提交的下一阶段与稽察对象的当前阶段是否一致,若不一致则有问题,一致则没有问题。判断稽察对象的当前阶段,是否与机构阶段中的当前阶段一致
  242. if (!tacProvincePlanProcess.getPrvId().equals(tacProvincePlanTask.getNowId())) {
  243. return buildFailResponse("审核阶段提交存在问题,请检查当前提交参数是否正常!!");
  244. }
  245. //阶段提交至下一阶段
  246. // state为1时,为提交问题至下一阶段,state为0时,为驳回为题至上一阶段
  247. if (addProcessPlan(rgstrId, tacPawpRgstr.getTaskId(), tacProvincePlanProcess, "1")) {
  248. activeLogService.addTacLog(tacPawpRgstr.getName(), tacProvincePlanProcess.getNextStep(), tacPawpRgstr.getId(),
  249. pblmChType, "", nextId, tacProvincePlanProcess.getNowStep() + "提交到" + tacProvincePlanProcess.getNextStep(),
  250. getCurrentPersId());
  251. return buildSuccessResponse("提交审核成功!!");
  252. }
  253. }
  254. // 判断 哪个阶段 的问题没有提交到 交换意见阶段
  255. String errorMsg = getErrorMsg(tacPawpRgstr);
  256. return buildFailResponse("请确认" + errorMsg + "!!");
  257. }
  258. private String getErrorMsg(TacPawpRgstr tacPawpRgstr) {
  259. if (null == tacPawpRgstr) {
  260. return "提交参数登记表标识是否正确";
  261. }
  262. String msg = "";
  263. if (!StateEnum.SUBMIT_ZHULI.getKey().equals(tacPawpRgstr.getPdbstStat())) {
  264. msg += "前期与设计";
  265. }
  266. if (!StateEnum.SUBMIT_ZHULI.getKey().equals(tacPawpRgstr.getBstocmTsopbfpStat())) {
  267. msg += "、建设管理";
  268. }
  269. if (!StateEnum.SUBMIT_ZHULI.getKey().equals(tacPawpRgstr.getRaiobisStat())) {
  270. msg += "、计划下达与执行";
  271. }
  272. if (!StateEnum.SUBMIT_ZHULI.getKey().equals(tacPawpRgstr.getBstocmCmsStat())) {
  273. msg += "、资金使用与管理";
  274. }
  275. if (!StateEnum.SUBMIT_ZHULI.getKey().equals(tacPawpRgstr.getBitopqPeqaaStat())) {
  276. msg += "、工程质量";
  277. }
  278. if (!StateEnum.SUBMIT_ZHULI.getKey().equals(tacPawpRgstr.getBioesRwunitStat())) {
  279. msg += "、工程安全";
  280. }
  281. msg += " 专业是否提交";
  282. if (msg.startsWith("、")) {
  283. msg = msg.substring(1, msg.length() - 1);
  284. }
  285. return msg;
  286. }
  287. private boolean addProcessPlan(String rgstrId, String taskId, TacProvincePlanProcess tacProvincePlanProcess, String state) {
  288. //查询当前阶段问题清单
  289. TacProvincePblmInfoParam tacPblmInfoParam = new TacProvincePblmInfoParam();
  290. tacPblmInfoParam.setRgstrId(rgstrId);
  291. tacPblmInfoParam.setTaskId(taskId);//稽察对象对应的阶段记录taskId
  292. tacPblmInfoParam.setProvince(tacProvincePlanProcess.getAdCode());
  293. List<TacProvincePblmInfo> tacPblmInfoList = tacProvincePblmInfoService.findList(tacPblmInfoParam);
  294. if (tacPblmInfoList != null && !tacPblmInfoList.isEmpty()) {
  295. //提交至下一阶段
  296. tacProvincePblmInfoService.addProcessPlan(tacPblmInfoList, tacProvincePlanProcess, rgstrId, getCurrentPersId(), state);
  297. return true;
  298. }
  299. return false;
  300. }
  301. private boolean rollbackProcessPlan(String rgstrId, String taskId, TacProvincePlanProcess tacProvincePlanProcess, String state, String note) {
  302. // 查询上一个阶段记录
  303. TacProvincePlanTaskParam tacProvincePlanTaskParam = new TacProvincePlanTaskParam();
  304. tacProvincePlanTaskParam.setOrgId(tacProvincePlanProcess.getOrgId());
  305. tacProvincePlanTaskParam.setNowId(tacProvincePlanProcess.getNowId());
  306. tacProvincePlanTaskParam.setRgstrId(rgstrId);
  307. TacProvincePlanTask tacProvincePlanTask = tacProvincePlanTaskService.getBy(tacProvincePlanTaskParam);
  308. //查询当前阶段问题清单
  309. TacProvincePblmInfoParam tacPblmInfoParam = new TacProvincePblmInfoParam();
  310. tacPblmInfoParam.setRgstrId(rgstrId);
  311. tacPblmInfoParam.setTaskId(taskId);//驳回,上一阶段问题数据删除,当前阶段问题回退到上一个阶段
  312. tacPblmInfoParam.setProvince(tacProvincePlanProcess.getAdCode());
  313. List<TacProvincePblmInfo> tacPblmInfoList = tacProvincePblmInfoService.findList(tacPblmInfoParam);
  314. if (tacPblmInfoList != null && !tacPblmInfoList.isEmpty()) {
  315. //驳回至上一阶段
  316. tacProvincePlanTaskService.delete(taskId);
  317. //查询上一阶段问题清单删除
  318. TacProvincePblmInfoParam tacPblmInfoParamdel = new TacProvincePblmInfoParam();
  319. tacPblmInfoParamdel.setRgstrId(rgstrId);
  320. tacPblmInfoParamdel.setTaskId(tacProvincePlanTask.getId());//驳回,上一阶段问题数据删除,当前阶段问题回退到上一个阶段
  321. tacPblmInfoParamdel.setProvince(tacProvincePlanProcess.getAdCode());
  322. //阶段问题驳回到稽察填报时,稽察阶段多个问题对应多个单位主体性质删除
  323. List<TacProvincePblmInfo> ProvincePblmInfolists = tacProvincePblmInfoService.findList(tacPblmInfoParamdel);
  324. for (TacProvincePblmInfo tacProvincePblmInfodel : ProvincePblmInfolists) {
  325. TacPblmSubjectParam tacPblmSubjectParam = new TacPblmSubjectParam();
  326. tacPblmSubjectParam.setPblmId(tacProvincePblmInfodel.getId());
  327. tacPblmSubjectService.deleteBy(tacPblmSubjectParam);
  328. }
  329. tacProvincePblmInfoService.deleteBy(tacPblmInfoParamdel);
  330. tacProvincePblmInfoService.rollbackProcess(tacPblmInfoList, tacProvincePlanProcess, tacProvincePlanTask, getCurrentPersId(), rgstrId);
  331. return true;
  332. }
  333. return false;
  334. }
  335. @ApiOperation(value = "所有工程,驳回问题到提交流程")
  336. @RequestMapping(value = "/rollback/{rgstrId}/{prvId}/{type}", method = RequestMethod.GET)
  337. public BaseResponse rollback(@ApiParam(name = "rgstrId", value = "rgstrId", required = true) @PathVariable String rgstrId,
  338. @ApiParam(name = "prvId", value = "prvId", required = true) @PathVariable String prvId,
  339. @ApiParam(name = "type", value = "type", required = false) @PathVariable String type,
  340. @RequestParam(name = "note", value = "note", required = false, defaultValue = "") String note,
  341. @RequestParam(name = "pblmChType", value = "pblmChType", required = true) String pblmChType) {
  342. TacPawpRgstr tacPawpRgstr = tacPawpRgstrService.get(rgstrId);
  343. if (tacPawpRgstr != null) {
  344. //初始为开始状态
  345. if ("0".equals(prvId) && StringUtils.isNotBlank(type)) {
  346. TacProvincePblmInfoParam tacPblmInfoParam = new TacProvincePblmInfoParam();
  347. tacPblmInfoParam.setRgstrId(rgstrId);
  348. tacPblmInfoParam.setListType(type);
  349. tacPblmInfoParam.setTaskId(tacPawpRgstr.getTaskId());
  350. //阶段问题驳回到稽察填报时,稽察阶段多个问题对应多个单位主体性质删除
  351. List<TacProvincePblmInfo> lists = tacProvincePblmInfoService.findList(tacPblmInfoParam);
  352. for (TacProvincePblmInfo tacProvincePblmInfodel : lists) {
  353. TacPblmSubjectParam tacPblmSubjectParam = new TacPblmSubjectParam();
  354. tacPblmSubjectParam.setPblmId(tacProvincePblmInfodel.getId());
  355. tacPblmSubjectService.deleteBy(tacPblmSubjectParam);
  356. }
  357. tacProvincePblmInfoService.deleteBy(tacPblmInfoParam);
  358. tacPawpRgstrService.updateSubmit(tacPawpRgstr, type, StateEnum.COMASTSTATE.getKey());
  359. //全专业问题驳回到专家填报阶段后,删除记录表,改变工程登记表taskId
  360. if (StateEnum.COMASTSTATE.getKey().equals(tacPawpRgstr.getPdbstStat())
  361. && StateEnum.COMASTSTATE.getKey().equals(tacPawpRgstr.getBstocmTsopbfpStat())
  362. && StateEnum.COMASTSTATE.getKey().equals(tacPawpRgstr.getRaiobisStat()) &&
  363. StateEnum.COMASTSTATE.getKey().equals(tacPawpRgstr.getBstocmCmsStat()) &&
  364. StateEnum.COMASTSTATE.getKey().equals(tacPawpRgstr.getBitopqPeqaaStat()) &&
  365. StateEnum.COMASTSTATE.getKey().equals(tacPawpRgstr.getBioesRwunitStat())) {
  366. //所有专业所属问题回退后清除阶段记录表
  367. tacProvincePlanTaskService.delete(tacPawpRgstr.getTaskId());
  368. tacPawpRgstr.setTaskId("0");//专业问题全都已经驳回
  369. }
  370. tacPawpRgstr.setState(StateEnum.COMASTSTATE.getKey());
  371. tacPawpRgstr.setUptm(new Date());
  372. tacPawpRgstrService.update(tacPawpRgstr);
  373. return buildSuccessResponse("已退回到问题最初状态!!");
  374. }
  375. TacProvincePlanTask tacProvincePlanTask = tacProvincePlanTaskService.get(tacPawpRgstr.getTaskId());
  376. if (tacProvincePlanTask == null) {
  377. return buildFailResponse("当前阶段问题已经退回!!");
  378. }
  379. TacProvincePlanProcessParam tacProvincePlanProcessParam = new TacProvincePlanProcessParam();
  380. tacProvincePlanProcessParam.setOrgId(getCurrentOrgId());
  381. tacProvincePlanProcessParam.setNowId(prvId);//上一步id为0表示当前为起始位置
  382. TacProvincePlanProcess tacProvincePlanProcess = tacProvincePlanProcessService.getBy(tacProvincePlanProcessParam);
  383. if (tacProvincePlanProcess == null) {
  384. return buildFailResponse("当前机构还没有定义相关的审核流程,请先定义审核流程再提交!!");
  385. }
  386. if (!tacProvincePlanTask.getNowId().equals(tacProvincePlanProcess.getNextId())) {
  387. return buildFailResponse("驳回流程存在问题,请检查上一步是否正确!!");
  388. }
  389. if (StringUtils.isNotBlank(note)) {
  390. note = "-[驳回说明:" + note + "]";
  391. }
  392. //数据全部驳回
  393. //state为1时,为提交问题至下一阶段,state为0时,为驳回为题至上一阶段
  394. if (rollbackProcessPlan(rgstrId, tacPawpRgstr.getTaskId(), tacProvincePlanProcess, "0", note)) {
  395. activeLogService.addTacLog(tacPawpRgstr.getName(), tacProvincePlanProcess.getNextStep(), tacPawpRgstr.getId(),
  396. pblmChType, "", prvId, tacProvincePlanProcess.getNextStep() + "驳回到" + tacProvincePlanProcess.getNowStep() + note, getCurrentPersId());
  397. return buildSuccessResponse("驳回数据成功!!");
  398. }
  399. }
  400. return buildFailResponse("请确认提交参数是否正确!!");
  401. }
  402. @ApiOperation(value = "所有工程,非第一个阶段成果驳回问题到提交流程")
  403. @RequestMapping(value = "/rollback/allType/{rgstrId}/{prvId}", method = RequestMethod.GET)
  404. public BaseResponse rollbackNoFirstAllType(@ApiParam(name = "rgstrId", value = "rgstrId", required = true) @PathVariable String rgstrId,
  405. @ApiParam(name = "prvId", value = "prvId", required = true) @PathVariable String prvId,
  406. @RequestParam(name = "note", value = "note", required = false, defaultValue = "") String note,
  407. @RequestParam(name = "pblmChType", value = "pblmChType", required = false) String pblmChType) {
  408. TacPawpRgstr tacPawpRgstr = tacPawpRgstrService.get(rgstrId);
  409. if (tacPawpRgstr != null) {
  410. //初始为开始状态
  411. if ("0".equals(prvId)) {
  412. return buildFailResponse("请确认提交参数-阶段标识-是否正确!!");
  413. }
  414. TacProvincePlanTask tacProvincePlanTask = tacProvincePlanTaskService.get(tacPawpRgstr.getTaskId());
  415. if (tacProvincePlanTask == null) {
  416. return buildFailResponse("当前阶段问题已经退回!!");
  417. }
  418. TacProvincePlanProcessParam tacProvincePlanProcessParam = new TacProvincePlanProcessParam();
  419. tacProvincePlanProcessParam.setOrgId(getCurrentOrgId());
  420. tacProvincePlanProcessParam.setNowId(prvId);//上一步id为0表示当前为起始位置
  421. TacProvincePlanProcess tacProvincePlanProcess = tacProvincePlanProcessService.getBy(tacProvincePlanProcessParam);
  422. if (tacProvincePlanProcess == null) {
  423. return buildFailResponse("当前机构还没有定义相关的审核流程,请先定义审核流程再提交!!");
  424. }
  425. if (!tacProvincePlanTask.getNowId().equals(tacProvincePlanProcess.getNextId())) {
  426. return buildFailResponse("驳回流程存在问题,请检查上一步是否正确!!");
  427. }
  428. if (StringUtils.isNotBlank(note)) {
  429. note = "-[驳回说明:" + note + "]";
  430. }
  431. //数据全部驳回
  432. //state为1时,为提交问题至下一阶段,state为0时,为驳回为题至上一阶段
  433. if (rollbackProcessPlan(rgstrId, tacPawpRgstr.getTaskId(), tacProvincePlanProcess, "0", note)) {
  434. activeLogService.addTacLog(tacPawpRgstr.getName(), tacProvincePlanProcess.getNextStep(), tacPawpRgstr.getId(),
  435. pblmChType, "", prvId, tacProvincePlanProcess.getNextStep() + "驳回到" + tacProvincePlanProcess.getNowStep() + note, getCurrentPersId());
  436. return buildSuccessResponse("驳回数据成功!!");
  437. }
  438. }
  439. return buildFailResponse("请确认提交参数是否正确!!");
  440. }
  441. @ApiOperation(value = "所有工程,驳回单个问题审核流程")
  442. @RequestMapping(value = "/rollback/{pblmId}/{prvId}", method = RequestMethod.GET)
  443. public BaseResponse rollbackPblm(@ApiParam(name = "pblmId", value = "pblmId", required = true) @PathVariable String pblmId,
  444. @ApiParam(name = "prvId", value = "prvId", required = true) @PathVariable String prvId) {
  445. TacProvincePblmInfo tacProvincePblmInfo = tacProvincePblmInfoService.get(pblmId);
  446. if (tacProvincePblmInfo != null) {
  447. if ("0".equals(prvId)) {
  448. return buildFailResponse("已经退回到初始节点!!");
  449. }
  450. TacProvincePlanProcessParam tacProvincePlanProcessParam = new TacProvincePlanProcessParam();
  451. tacProvincePlanProcessParam.setOrgId(getCurrentOrgId());
  452. tacProvincePlanProcessParam.setNowId(prvId);//上一步id为0表示当前为起始位置
  453. TacProvincePlanProcess tacProvincePlanProcess = tacProvincePlanProcessService.getBy(tacProvincePlanProcessParam);
  454. if (tacProvincePlanProcess == null) {
  455. return buildFailResponse("当前机构还没有定义相关的审核流程,请先定义审核流程再提交!!");
  456. }
  457. TacProvincePlanTaskParam provincePlanTaskParam = new TacProvincePlanTaskParam();
  458. provincePlanTaskParam.setRgstrId(tacProvincePblmInfo.getRgstrId());
  459. provincePlanTaskParam.setNowId(prvId);
  460. TacProvincePlanTask tacProvincePlanTask = tacProvincePlanTaskService.getBy(provincePlanTaskParam);
  461. if (tacProvincePlanTask == null) {
  462. return buildFailResponse("上一步无法进行回退,请仔细核查数据!!");
  463. }
  464. TacProvincePblmInfo tacProvincePblmInfoBak = new TacProvincePblmInfo();
  465. BeanUtil.copyObject1(tacProvincePblmInfo, tacProvincePblmInfoBak);
  466. tacProvincePblmInfoBak.setState("1");
  467. tacProvincePblmInfoBak.setStepId(prvId);
  468. tacProvincePblmInfoBak.setTaskId(tacProvincePlanTask.getId());
  469. tacProvincePblmInfoBak.setId(tacProvincePblmInfo.getOldPblmId());
  470. GwComFileParam gwComFileParam = new GwComFileParam();
  471. tacProvincePblmInfoService.update(tacProvincePblmInfoBak);
  472. gwComFileParam.setBizId(tacProvincePblmInfo.getOldPblmId());
  473. gwComFileService.deleteBy(gwComFileParam);//删除历史附件
  474. List<GwComFile> gwComFiles = gwComFileService.findFileByBiz(pblmId);
  475. tacProvincePblmInfoService.addComFiles(gwComFiles, tacProvincePblmInfo.getOldPblmId());//将当前附件添加到驳回问题信息中
  476. tacProvincePblmInfoService.delete(pblmId);//删除当前阶段的问题
  477. gwComFileParam.setBizId(pblmId);
  478. gwComFileService.deleteBy(gwComFileParam);//删除当前附件
  479. TacPawpRgstr tacPawpRgstr = tacPawpRgstrService.get(tacProvincePblmInfo.getRgstrId());
  480. activeLogService.addTacLog(tacPawpRgstr.getName(), StateEnum.SUBMIT_ZHULI.getDesc(), tacProvincePblmInfo.getRgstrId(),
  481. tacProvincePblmInfo.getListType(), StateEnum.SUBMIT_ZHULI.getKey(), tacProvincePlanProcess.getNowId(),
  482. "驳回单个问题到【" + tacProvincePlanTask.getNowStep() + "】", getCurrentPersId());
  483. return buildSuccessResponse("问题驳回完成!!");
  484. }
  485. return buildFailResponse("请确认提交参数是否正确!!");
  486. }
  487. @ApiOperation(value = "根据ID获取稽察问题审核信息表(单表)")
  488. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  489. public BaseResponse<TacProvincePblmInfo> get(@ApiParam(name = "id", value = "id", required = true) @PathVariable String id) {
  490. TacProvincePblmInfo tacProvincePblmInfo = tacProvincePblmInfoService.get(id);
  491. if (tacProvincePblmInfo == null) {
  492. TacPblmInfo tacPblmInfo = tacPblmInfoService.get(id);
  493. tacProvincePblmInfo = new TacProvincePblmInfo();
  494. ConvertBeanUtils.copyPropertiesBySource(tacPblmInfo, tacProvincePblmInfo);
  495. }
  496. if (tacProvincePblmInfo != null) {
  497. List<TacPblmSubject> pblmSubjectList = tacPblmInfoService.findSubjectList(id, tacProvincePblmInfo.getSubjectNames(), tacProvincePblmInfo.getSubjectIds());
  498. tacProvincePblmInfo.setPblmSubjectList(pblmSubjectList);
  499. if (StringUtils.isNotBlank(tacProvincePblmInfo.getPblmstdId())) {
  500. TacObjPblmstb objPblmstb = tacObjPblmstbService.getOne(tacProvincePblmInfo.getPblmstdId());
  501. if (null != objPblmstb) {
  502. // lxf 2023/01/28 回显 专家编辑之后的 法律条款 法规内容
  503. if (StringUtils.isNotBlank(tacProvincePblmInfo.getRelativeLaw())) {
  504. objPblmstb.setRelativeLaw(tacProvincePblmInfo.getRelativeLaw());
  505. }
  506. if (StringUtils.isNotBlank(tacProvincePblmInfo.getLawContent())) {
  507. objPblmstb.setLawContent(tacProvincePblmInfo.getLawContent());
  508. }
  509. }
  510. tacProvincePblmInfo.setTacObjPblmstb(objPblmstb);
  511. }
  512. if (StringUtils.isNotBlank(tacProvincePblmInfo.getPblmRevisionProof())) {
  513. tacProvincePblmInfo.setRevisionFileList(gwComFileService.findFileByBiz(tacProvincePblmInfo.getPblmRevisionProof()));
  514. }
  515. tacProvincePblmInfo.setGwComFileList(gwComFileService.findFileByBiz(id));
  516. }
  517. return buildSuccessResponse(tacProvincePblmInfo);
  518. }
  519. @ApiOperation(value = "分页查询稽察问题清单-成果")
  520. @RequestMapping(value = "/pagecg", method = RequestMethod.POST)
  521. public BaseResponse<PageInfo<TacProvincePblmInfo>> pageCg(@RequestBody TacProvincePblmInfoParam tacProvincePblmInfoParam) {
  522. tacProvincePblmInfoParam.setProvince(olBisInspOrgService.getRlProvince(getCurrentOrgId()));
  523. return buildSuccessResponse(tacProvincePblmInfoService.findPageJieduanInfo(tacProvincePblmInfoParam));
  524. }
  525. @ApiOperation(value = "分页查询稽察问题清单-最终成果")
  526. @RequestMapping(value = "/finalResults", method = RequestMethod.POST)
  527. public BaseResponse<PageInfo<TacProvincePblmInfoReDto>> finalResults(@RequestBody TacProvincePblmInfoParam tacProvincePblmInfoParam) {
  528. tacProvincePblmInfoParam.setOrgId(getCurrentOrgId());
  529. tacProvincePblmInfoParam.setProvince(olBisInspOrgService.getRlProvince(getCurrentOrgId()));
  530. return buildSuccessResponse(tacProvincePblmInfoService.finalResults(tacProvincePblmInfoParam));
  531. }
  532. @ApiOperation(value = "批量修改问题")
  533. @RequestMapping(value = "/updatePblmInfoList", method = RequestMethod.POST)
  534. public BaseResponse updatePblmInfoList(@RequestBody TacProvincePblmInfoDto dto) {
  535. int a = tacProvincePblmInfoService.updatePblmInfoList(dto);
  536. return buildSuccessResponse();
  537. }
  538. @ApiOperation(value = "查询项目处于阶段")
  539. @RequestMapping(value = "/taskProcess/{rgstrId}/{planProcessId}", method = RequestMethod.GET)
  540. public BaseResponse taskProcess(@ApiParam(name = "rgstrId", value = "rgstrId", required = true) @PathVariable String rgstrId, @ApiParam(name = "planProcessId", value = "planProcessId", required = true) @PathVariable String planProcessId) {
  541. Map<String, String> response = new HashMap<>();
  542. TacPawpRgstr tacPawpRgstr = tacPawpRgstrService.get(rgstrId);
  543. if (StringUtils.isNotBlank(tacPawpRgstr.getTaskId())) {
  544. TacProvincePlanTask tacProvincePlanTask = tacProvincePlanTaskService.get(tacPawpRgstr.getTaskId());
  545. if (tacProvincePlanTask != null) {
  546. //当前工程所在阶段
  547. response.put("nowId", tacProvincePlanTask.getNowId());
  548. TacProvincePlanProcessParam tacProvincePlanProcessParam = new TacProvincePlanProcessParam();
  549. tacProvincePlanProcessParam.setNowId(planProcessId);
  550. TacProvincePlanProcess tacProvincePlanProcess = tacProvincePlanProcessService.getBy(tacProvincePlanProcessParam);
  551. if (tacProvincePlanProcess != null) {
  552. //工程所在阶段是否需要审定
  553. response.put("isExamine", tacProvincePlanProcess.getIsExamine());
  554. TacProvincePlanExamineParam tacProvincePlanExamineParam = new TacProvincePlanExamineParam();
  555. tacProvincePlanExamineParam.setRgstrId(rgstrId);
  556. tacProvincePlanExamineParam.setPlanProcessId(planProcessId);
  557. TacProvincePlanExamine tacProvincePlanExamine = tacProvincePlanExamineService.getBy(tacProvincePlanExamineParam);
  558. if (tacProvincePlanExamine != null) {
  559. String stageStatus = tacProvincePlanExamine.getStageStatus();
  560. //工程所在阶段审定结果
  561. response.put("stageStatus", stageStatus);
  562. }
  563. }
  564. return buildSuccessResponse(response);
  565. } else {
  566. return buildFailResponse("阶段记录数据为空");
  567. }
  568. }
  569. return buildFailResponse("阶段记录数据为空");
  570. }
  571. }