900eabdc6932be3aa5e84753b7f34a8c6518dc86.svn-base 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. package cn.com.goldenwater.dcproj.service.impl.mend;
  2. import cn.com.goldenwater.dcproj.constValue.SplitValue;
  3. import cn.com.goldenwater.dcproj.dao.BisInspPblmPlistDao;
  4. import cn.com.goldenwater.dcproj.model.*;
  5. import cn.com.goldenwater.dcproj.param.BisInspLocalConfigParam;
  6. import cn.com.goldenwater.dcproj.param.BisInspPblmPlistParam;
  7. import cn.com.goldenwater.dcproj.service.*;
  8. import cn.com.goldenwater.dcproj.util.CheckUtil;
  9. import cn.com.goldenwater.target.CheckException;
  10. import com.workflow.bpm.api.bpmservices.ActionConstant;
  11. import com.workflow.bpm.api.bpmservices.BpmProcessInstService;
  12. import com.workflow.bpm.api.bpmservices.BpmTaskService;
  13. import com.workflow.bpm.api.bpmservices.co.processinstance.ProcessStartCO;
  14. import com.workflow.bpm.api.bpmservices.co.taskinst.QueryTaskActionCO;
  15. import com.workflow.common.struct.res.impl.APIResult;
  16. import org.apache.commons.collections.MapUtils;
  17. import org.slf4j.Logger;
  18. import org.slf4j.LoggerFactory;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import java.util.Calendar;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;
  26. /**
  27. * @author lhc
  28. * @date 2020-11-4
  29. */
  30. @Service
  31. @Transactional
  32. public class BisInspPblmPlistFormServiceImpl implements BisInspPblmPlistFormService {
  33. @Autowired
  34. private BisInspPblmPlistService plistService;
  35. @Autowired
  36. private DicService dicService;
  37. @Autowired
  38. private BpmProcessInstService bpmProcessInstService;
  39. @Autowired
  40. private BpmTaskService bpmTaskService;
  41. @Autowired
  42. private BisInspBpmOrgService bisInspBpmOrgService;
  43. @Autowired
  44. private BisInspPblmPlistDao bisInspPblmPlistDao;
  45. @Autowired
  46. private BisInspLocalConfigService bisInspLocalConfigService;
  47. private Logger logger = LoggerFactory.getLogger(getClass());
  48. @Override
  49. public boolean saveFormsAndStartFlow(BisInspPblmPlistFormDTO form, String userId, String orgId, String province) {
  50. // 获取工作流对应类型,如果没有配置则返回失败
  51. BisInspBpmOrg bisInspBpmOrg = getBpmCode(province, form.getPblmPlist().getPblmClassify());
  52. CheckUtil.notNull(bisInspBpmOrg, "发起流程失败,请联系管理员配置流程:13401079738 ");
  53. BisInspPblmPlist bisInspPblmPlist = plistService.get(form.getPblmPlist().getId());
  54. CheckUtil.notNull(bisInspPblmPlist, "数据异常!");
  55. CheckUtil.check(!"1".equals(bisInspPblmPlist.getIsStart()), "工作流已经启动,请勿重复启动!");
  56. CheckUtil.check(!"1".equals(bisInspPblmPlist.getPblmOut()), "整改问题已销号!");
  57. form.getPblmPlist().setIsStart("1");
  58. if (null == form.getPblmPlist().getPblmCrtm()) {
  59. //当前时间加一个月
  60. Calendar cal = Calendar.getInstance();
  61. cal.add(Calendar.MONTH, 1);
  62. form.getPblmPlist().setPblmCrtm(cal.getTime());
  63. }
  64. plistService.update(form.getPblmPlist());
  65. ProcessStartCO processStartCO = new ProcessStartCO();
  66. processStartCO.setBizKey(form.getPblmPlist().getId());
  67. processStartCO.setFormUrl("pdcApi/bis/insp/pblm/plist/form/" + form.getPblmPlist().getId());
  68. processStartCO.setProcessName(getBpmName(form));
  69. processStartCO.setProcessTypeCode(bisInspBpmOrg.getBpmCode()); // 根据当前用户所属省份和督查类型 取出对应工作流 id
  70. processStartCO.setTenantId("1");
  71. processStartCO.setUserId(userId);
  72. processStartCO.setProvince(province);
  73. processStartCO.setCompleteFirstTaskFlag(true);
  74. Map<String, Object> sendVar = new HashMap<>();
  75. sendVar.put("sendVar", "city");
  76. sendVar.put("sendBus", "1");
  77. logger.info("------------------------BisInspPblmPlistFormServiceImpl:province:" + province + "------------------------------");
  78. if (province.equals("370000000000")) {
  79. if (null == form.getPblmPlist().getProvincial()) {
  80. sendVar.put("sendLocal", "fzg");
  81. } else {
  82. logger.info("------------------------BisInspPblmPlistFormServiceImpl:getProvincial:" + form.getPblmPlist().getProvincial() + "------------------------------");
  83. //判断是否省属工程
  84. if (form.getPblmPlist().getProvincial().equals("1")) {
  85. logger.info("------------------------BisInspPblmPlistFormServiceImpl:getProvincial:province------------------------------");
  86. //是省属工程,直接转发到省级单位整改
  87. sendVar.put("sendLocal", "province");
  88. } else {
  89. //非直管县
  90. logger.info("------------------------BisInspPblmPlistFormServiceImpl:getProvincial:fzg------------------------------");
  91. sendVar.put("sendLocal", "fzg");
  92. }
  93. }
  94. } else {
  95. logger.info("------------------------BisInspPblmPlistFormServiceImpl:province:<>37-----------------------------");
  96. if (isLocalAd(form.getPblmPlist().getObjAdCode())) {
  97. //直管县
  98. sendVar.put("sendLocal", "zg");
  99. } else {
  100. //非直管县
  101. sendVar.put("sendLocal", "fzg");
  102. }
  103. }
  104. sendVar.put("sendSpc", "spc");// 山东省 --监督处是否专家审核
  105. processStartCO.setVariables(sendVar);
  106. //直管县 名称要去掉直管层级,设置参数如果是直管县,设置参数直接走到县反馈,后续继续审核 整改
  107. APIResult apiResult = bpmProcessInstService.startProcInst(processStartCO, userId, orgId);
  108. if (apiResult.isRetStatus()) {
  109. return true;
  110. } else {
  111. throw new CheckException("发起流程失败!");
  112. }
  113. }
  114. /**
  115. * 是否直管县
  116. *
  117. * @param objAdCode
  118. * @return
  119. */
  120. public Boolean isLocalAd(String objAdCode) {
  121. BisInspLocalConfigParam bisInspLocalConfigParam = new BisInspLocalConfigParam();
  122. bisInspLocalConfigParam.setAdCode(objAdCode);
  123. List<BisInspLocalConfig> bisInspLocalConfigs = bisInspLocalConfigService.findList(bisInspLocalConfigParam);
  124. if (bisInspLocalConfigs != null && bisInspLocalConfigs.size() > 0) {
  125. return true;
  126. } else {
  127. return false;
  128. }
  129. }
  130. public String getBpmName(BisInspPblmPlistFormDTO form) {
  131. String nameString = "督查整改-";
  132. logger.info("获取工作流名称前:" + form.getPblmPlist().toString());
  133. if (form.getPblmPlist().getPblmAdName().contains(SplitValue.HENG_SPLIT)) {
  134. String[] split = form.getPblmPlist().getPblmAdName().split(SplitValue.HENG_SPLIT);
  135. if (split.length == 3) {
  136. form.getPblmPlist().setProvince(split[0]);
  137. form.getPblmPlist().setCity(split[1]);
  138. form.getPblmPlist().setCounty(split[2]);
  139. }
  140. if (split.length == 2) {
  141. form.getPblmPlist().setProvince(split[0]);
  142. form.getPblmPlist().setCity(split[1]);
  143. }
  144. if (split.length == 1) {
  145. form.getPblmPlist().setProvince(split[0]);
  146. form.getPblmPlist().setCity("");
  147. }
  148. }
  149. //获取对象所属行政区代码
  150. String objAdCode = form.getPblmPlist().getObjAdCode();
  151. //查询此行政是否是直辖县
  152. nameString = nameString + form.getPblmPlist().getProvince();
  153. if (isLocalAd(form.getPblmPlist().getObjAdCode())) {
  154. if (form.getPblmPlist().getCounty() != null) {
  155. nameString = nameString + "-" + form.getPblmPlist().getCounty();
  156. }
  157. if (null != form.getPblmPlist().getInspPblmDesc()) {
  158. nameString = nameString + "-" + form.getPblmPlist().getObjName() + ":" + form.getPblmPlist().getInspPblmDesc();
  159. } else {
  160. nameString = nameString + "-" + form.getPblmPlist().getObjName();
  161. }
  162. } else {
  163. if (null != form.getPblmPlist().getCity()) {
  164. nameString = nameString + "-" + form.getPblmPlist().getCity();
  165. }
  166. if (null != form.getPblmPlist().getCounty()) {
  167. nameString = nameString + "-" + form.getPblmPlist().getCounty();
  168. }
  169. if (null != form.getPblmPlist().getInspPblmDesc()) {
  170. nameString = nameString + "-" + form.getPblmPlist().getObjName() + ":" + form.getPblmPlist().getInspPblmDesc();
  171. } else {
  172. nameString = nameString + "-" + form.getPblmPlist().getObjName();
  173. }
  174. }
  175. logger.info("获取工作流名称后:" + nameString);
  176. return nameString;
  177. }
  178. @Override
  179. public void allStartup(BisInspPblmPlistParam bisInspPblmPlistParam, Map<String, String> params) {
  180. List<BisInspPblmPlist> list = this.bisInspPblmPlistDao.sendOrgGetList(bisInspPblmPlistParam);
  181. if (list == null || list.size() == 0) {
  182. return;
  183. }
  184. for (BisInspPblmPlist bisInspPblmPlist : list) {
  185. //
  186. // 已启动的整改,直接跳过
  187. if ("1".equals(bisInspPblmPlist.getIsStart())) {
  188. continue;
  189. }
  190. if (bisInspPblmPlist.getPblmAdName().contains(SplitValue.HENG_SPLIT)) {
  191. String[] split = bisInspPblmPlist.getPblmAdName().split(SplitValue.HENG_SPLIT);
  192. if (split.length == 3) {
  193. bisInspPblmPlist.setProvince(split[0]);
  194. bisInspPblmPlist.setCity(split[1]);
  195. bisInspPblmPlist.setCounty(split[2]);
  196. }
  197. if (split.length == 2) {
  198. bisInspPblmPlist.setProvince(split[0]);
  199. bisInspPblmPlist.setCity(split[1]);
  200. }
  201. if (split.length == 1) {
  202. bisInspPblmPlist.setProvince(split[0]);
  203. bisInspPblmPlist.setCity("");
  204. }
  205. }
  206. BisInspPblmPlistFormDTO formDTO = new BisInspPblmPlistFormDTO();
  207. formDTO.setPblmPlist(bisInspPblmPlist);
  208. // 发起流程
  209. saveFormsAndStartFlow(formDTO,
  210. MapUtils.getString(params, "persId"),
  211. MapUtils.getString(params, "orgId"),
  212. MapUtils.getString(params, "province"));
  213. }
  214. }
  215. public BisInspBpmOrg getBpmCode(String province, String ptype) {
  216. BisInspBpmOrg bisInspBpmOrg = bisInspBpmOrgService.getBpmCodeBypp(province, ptype);
  217. return bisInspBpmOrg;
  218. }
  219. @Override
  220. public boolean submitForm(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  221. plistService.update(form.getPblmPlist());
  222. QueryTaskActionCO task = form.getQueryTaskActionCO();
  223. task.setActionType(ActionConstant.ACTION_SUBMIT);
  224. Map<String, Object> sendVar = new HashMap<>();
  225. sendVar.put("sendSpc", "zj");// 山东省 --监督处发专家
  226. task.setVariables(sendVar);
  227. task.setClaimTaskDirectExeFlag(true);
  228. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  229. return apiResult.isRetStatus();
  230. }
  231. @Override
  232. public boolean backwardForm(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  233. QueryTaskActionCO task = form.getQueryTaskActionCO();
  234. task.setActionType(ActionConstant.ACTION_BACK);
  235. task.setClaimTaskDirectExeFlag(true);
  236. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  237. return apiResult.isRetStatus();
  238. }
  239. @Override
  240. public boolean feedbackForm(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  241. form.getPblmPlist().setIsRect("1");//是否反馈
  242. plistService.update(form.getPblmPlist());
  243. QueryTaskActionCO task = form.getQueryTaskActionCO();
  244. task.setActionType(ActionConstant.ACTION_SUBMIT);
  245. task.setClaimTaskDirectExeFlag(true);
  246. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  247. return apiResult.isRetStatus();
  248. }
  249. @Override
  250. public boolean feedbackCityForm(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  251. plistService.update(form.getPblmPlist());
  252. QueryTaskActionCO task = form.getQueryTaskActionCO();
  253. task.setActionType(ActionConstant.ACTION_SUBMIT);
  254. Map<String, Object> sendVar = new HashMap<>();
  255. sendVar.put("sendVar", "city");
  256. task.setVariables(sendVar);
  257. task.setClaimTaskDirectExeFlag(true);
  258. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  259. return apiResult.isRetStatus();
  260. }
  261. @Override
  262. public boolean sendCountyForm(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  263. plistService.update(form.getPblmPlist());
  264. QueryTaskActionCO task = form.getQueryTaskActionCO();
  265. Map<String, Object> sendVar = new HashMap<>();
  266. sendVar.put("sendVar", "county");
  267. task.setVariables(sendVar);
  268. task.setActionType(ActionConstant.ACTION_SUBMIT);
  269. task.setClaimTaskDirectExeFlag(true);
  270. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  271. return apiResult.isRetStatus();
  272. }
  273. @Override
  274. public boolean sendProvinceForm(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  275. plistService.update(form.getPblmPlist());
  276. QueryTaskActionCO task = form.getQueryTaskActionCO();
  277. Map<String, Object> sendVar = new HashMap<>();
  278. sendVar.put("sendLocal", "province");
  279. task.setVariables(sendVar);
  280. task.setActionType(ActionConstant.ACTION_SUBMIT);
  281. task.setClaimTaskDirectExeFlag(true);
  282. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  283. return apiResult.isRetStatus();
  284. }
  285. @Override
  286. public boolean complete(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  287. form.getPblmPlist().setPblmOut("1");//已销号
  288. plistService.update(form.getPblmPlist());
  289. QueryTaskActionCO task = form.getQueryTaskActionCO();
  290. Map<String, Object> sendVar = new HashMap<>();
  291. sendVar.put("sendSpc", "xh");// 山东省 --监督处直接销号
  292. task.setVariables(sendVar);
  293. task.setActionType(ActionConstant.ACTION_SUBMIT);
  294. task.setClaimTaskDirectExeFlag(true);
  295. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  296. return apiResult.isRetStatus();
  297. }
  298. @Override
  299. public boolean holdSave(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  300. plistService.update(form.getPblmPlist());
  301. return true;
  302. }
  303. @Override
  304. public BisInspPblmPlist getProblemListInfo(String plistId) {
  305. return plistService.get(plistId);
  306. }
  307. @Override
  308. public Map<String, BisInspPblmClassify> getPblmClassifyMap(List<String> businessKeys) {
  309. if (businessKeys == null || businessKeys.size() == 0) {
  310. return new HashMap<>();
  311. }
  312. return bisInspPblmPlistDao.getPblmClassifyMap(businessKeys);
  313. }
  314. @Override
  315. public boolean sendBuild(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  316. plistService.update(form.getPblmPlist());
  317. QueryTaskActionCO task = form.getQueryTaskActionCO();
  318. task.setActionType(ActionConstant.ACTION_SUBMIT);
  319. Map<String, Object> sendBus = new HashMap<>();
  320. sendBus.put("sendBus", "build");
  321. task.setVariables(sendBus);
  322. task.setClaimTaskDirectExeFlag(true);
  323. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  324. return apiResult.isRetStatus();
  325. }
  326. @Override
  327. public boolean sendRunMgr(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  328. plistService.update(form.getPblmPlist());
  329. QueryTaskActionCO task = form.getQueryTaskActionCO();
  330. task.setActionType(ActionConstant.ACTION_SUBMIT);
  331. Map<String, Object> sendBus = new HashMap<>();
  332. sendBus.put("sendBus", "runmgr");
  333. task.setVariables(sendBus);
  334. task.setClaimTaskDirectExeFlag(true);
  335. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  336. return apiResult.isRetStatus();
  337. }
  338. @Override
  339. public boolean sendFloods(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  340. plistService.update(form.getPblmPlist());
  341. QueryTaskActionCO task = form.getQueryTaskActionCO();
  342. task.setActionType(ActionConstant.ACTION_SUBMIT);
  343. Map<String, Object> sendBus = new HashMap<>();
  344. sendBus.put("sendBus", "floods");
  345. task.setVariables(sendBus);
  346. task.setClaimTaskDirectExeFlag(true);
  347. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  348. return apiResult.isRetStatus();
  349. }
  350. @Override
  351. public boolean sendWater(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  352. plistService.update(form.getPblmPlist());
  353. QueryTaskActionCO task = form.getQueryTaskActionCO();
  354. task.setActionType(ActionConstant.ACTION_SUBMIT);
  355. Map<String, Object> sendBus = new HashMap<>();
  356. sendBus.put("sendBus", "water");
  357. task.setVariables(sendBus);
  358. task.setClaimTaskDirectExeFlag(true);
  359. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  360. return apiResult.isRetStatus();
  361. }
  362. @Override
  363. public boolean sendSupervise(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  364. plistService.update(form.getPblmPlist());
  365. QueryTaskActionCO task = form.getQueryTaskActionCO();
  366. task.setActionType(ActionConstant.ACTION_SUBMIT);
  367. Map<String, Object> sendBus = new HashMap<>();
  368. sendBus.put("sendBus", "supervise");
  369. task.setVariables(sendBus);
  370. task.setClaimTaskDirectExeFlag(true);
  371. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  372. return apiResult.isRetStatus();
  373. }
  374. @Override
  375. public boolean sendSouth(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  376. plistService.update(form.getPblmPlist());
  377. QueryTaskActionCO task = form.getQueryTaskActionCO();
  378. task.setActionType(ActionConstant.ACTION_SUBMIT);
  379. Map<String, Object> sendBus = new HashMap<>();
  380. sendBus.put("sendBus", "south");
  381. task.setVariables(sendBus);
  382. task.setClaimTaskDirectExeFlag(true);
  383. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  384. return apiResult.isRetStatus();
  385. }
  386. @Override
  387. public boolean sendLakes(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  388. plistService.update(form.getPblmPlist());
  389. QueryTaskActionCO task = form.getQueryTaskActionCO();
  390. task.setActionType(ActionConstant.ACTION_SUBMIT);
  391. Map<String, Object> sendBus = new HashMap<>();
  392. sendBus.put("sendBus", "lakes");
  393. task.setVariables(sendBus);
  394. task.setClaimTaskDirectExeFlag(true);
  395. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  396. return apiResult.isRetStatus();
  397. }
  398. @Override
  399. public boolean sendPermissions(BisInspPblmPlistFormDTO form, String userId, String orgId) {
  400. plistService.update(form.getPblmPlist());
  401. QueryTaskActionCO task = form.getQueryTaskActionCO();
  402. task.setActionType(ActionConstant.ACTION_SUBMIT);
  403. Map<String, Object> sendBus = new HashMap<>();
  404. sendBus.put("sendBus", "permissions");
  405. task.setVariables(sendBus);
  406. task.setClaimTaskDirectExeFlag(true);
  407. APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId);
  408. return apiResult.isRetStatus();
  409. }
  410. }