ApprovalOrderServiceImpl.java 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718
  1. package com.iamberry.rst.service.approval;
  2. import com.github.pagehelper.PageHelper;
  3. import com.iamberry.rst.core.approval.*;
  4. import com.iamberry.rst.core.cm.CustomerInfo;
  5. import com.iamberry.rst.core.page.PagedResult;
  6. import com.iamberry.rst.core.sys.Admin;
  7. import com.iamberry.rst.faces.approval.ApprovalOrderService;
  8. import com.iamberry.rst.faces.approval.ApprovalTaskService;
  9. import com.iamberry.rst.service.approval.mapper.ApplyPickMapper;
  10. import com.iamberry.rst.service.approval.mapper.ApprovalOrderMapper;
  11. import com.iamberry.rst.service.sys.mapper.SysMapper;
  12. import com.iamberry.rst.util.PageUtil;
  13. import com.iamberry.wechat.core.entity.WechatUtils;
  14. import com.iamberry.wechat.tools.ResponseJson;
  15. import com.iamberry.wechat.tools.ResultInfo;
  16. import com.iamberry.wechat.tools.SendMessageUtil;
  17. import net.sf.json.JSONArray;
  18. import net.sf.json.JSONObject;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.stereotype.Service;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import java.text.SimpleDateFormat;
  23. import java.util.*;
  24. /**
  25. * 提货项信息接口
  26. * @author
  27. * @Date 2018-09-19
  28. */
  29. @Service
  30. public class ApprovalOrderServiceImpl implements ApprovalOrderService {
  31. @Autowired
  32. private ApprovalOrderMapper approvalOrderMapper;
  33. @Autowired
  34. private SysMapper sysMapper;
  35. @Autowired
  36. private ApprovalTaskService approvalTaskService;
  37. @Autowired
  38. private ApplyPickMapper applyPickMapper;
  39. @Override
  40. public Integer insertApprovalInfo(ApprovalInfo approvalInfo) {
  41. return approvalOrderMapper.insertApprovalInfo(approvalInfo);
  42. }
  43. @Override
  44. @Transactional
  45. public boolean insertApprovalProduction(ApprovalProduction approvalProduction,
  46. List<ApprovalProductionItem> listApprovalProductionItem,
  47. List<ApprovalProductionContract> productionContracts,
  48. Map<String, Object> tasknfo,
  49. String openId) {
  50. //获取登录人信息
  51. Admin admin = sysMapper.getByOpenid(openId);
  52. if(admin == null){
  53. throw new RuntimeException("未查询到当前登录人信息");
  54. }
  55. SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
  56. //添加审批信息
  57. ApprovalInfo approvalInfo = new ApprovalInfo();
  58. approvalInfo.setApprovalName(approvalProduction.getApplicantName()+"的审批订单");
  59. approvalInfo.setApprovalType(1);
  60. approvalInfo.setApprovalStatus(1);
  61. approvalInfo.setAdminId(admin.getAdminId());
  62. approvalInfo.setApprovalApplicant(approvalProduction.getApplicantName());
  63. approvalInfo.setActivitiId(tasknfo.get("key").toString());
  64. approvalInfo.setApprovalDetails("html内容");
  65. approvalInfo.setApprovalRemark(approvalProduction.getProductionRemark());
  66. int returnValue = approvalOrderMapper.insertApprovalInfo(approvalInfo);
  67. if(returnValue < 1){
  68. throw new RuntimeException("添加审批信息失败");
  69. }
  70. //添加生产审批信息
  71. approvalProduction.setApprovalId(approvalInfo.getApprovalId());
  72. approvalProduction.setApplicantId(admin.getAdminId());
  73. approvalProduction.setApplicantOrderNo("123456789");//订单编号未定
  74. approvalProduction.setApplicantName(admin.getAdminName());
  75. //申请人ID
  76. approvalProduction.setApplicantId(1);
  77. approvalProduction.setProductionState(1);
  78. int returnValue2 = approvalOrderMapper.insertApprovalProduction(approvalProduction);
  79. if(returnValue2 < 1){
  80. throw new RuntimeException("添加生产审批信息失败");
  81. }
  82. //添加合同信息
  83. if(productionContracts.size() > 0){
  84. for(ApprovalProductionContract approvalProductionContract : productionContracts){
  85. approvalProductionContract.setApprovalId(approvalProduction.getProductionId());
  86. approvalProductionContract.setContractName(approvalProduction.getApplicantName()+"的审批订单合同");
  87. approvalOrderMapper.insertProductionContract(approvalProductionContract);
  88. }
  89. }
  90. //封装生产审批产品项
  91. for(ApprovalProductionItem approvalProductionItem : listApprovalProductionItem){
  92. approvalProductionItem.setProductionId(approvalProduction.getProductionId());
  93. }
  94. int returnValue3 = approvalOrderMapper.insertItem(listApprovalProductionItem);
  95. if(returnValue3 < 1){
  96. throw new RuntimeException("添加生产审批产品项信息失败");
  97. }
  98. //添加流程信息
  99. ProcessInfo processInfo = new ProcessInfo();
  100. processInfo.setAdminId(admin.getAdminId());
  101. processInfo.setApprovalId(approvalInfo.getApprovalId());
  102. processInfo.setProcessDesc(approvalInfo.getApprovalDetails());
  103. processInfo.setProcessState(1);
  104. int returnValue4 = approvalOrderMapper.insertProcessInfo(processInfo);
  105. if(returnValue4 < 1){
  106. throw new RuntimeException("添加生产审批流程信息失败");
  107. }
  108. //添加审批历史记录
  109. ApprovalInfo info = new ApprovalInfo();
  110. info.setApprovalId(approvalInfo.getApprovalId());
  111. if(tasknfo.get("users") == null){
  112. throw new RuntimeException("获取下一个审批人信息失败"+tasknfo);
  113. }
  114. String[] split = (String[])tasknfo.get("users");
  115. for (String name : split){
  116. //通过name查询管理员id
  117. Admin approvalAdmin = sysMapper.getByName(name);
  118. if(approvalAdmin == null){
  119. throw new RuntimeException("获取下一个审批管理员信息失败"+tasknfo);
  120. }
  121. HistoricalRecord recordInfo = new HistoricalRecord();
  122. recordInfo.setApprovalId(approvalInfo.getApprovalId());
  123. recordInfo.setAdminId(approvalAdmin.getAdminId());
  124. recordInfo.setRecordState(1);
  125. recordInfo.setTaskId(tasknfo.get("taskId").toString());
  126. recordInfo.setApprovalTime(new Date());
  127. if(approvalOrderMapper.insertHistoricalRecord(recordInfo) < 1){
  128. throw new RuntimeException("添加历史审批信息失败"+tasknfo);
  129. }
  130. //修改审核信息表
  131. info.setApprovalStatusDetails("待"+approvalAdmin.getAdminName()+"审批");
  132. if(approvalOrderMapper.updateApprovalInfo(info) < 1){
  133. throw new RuntimeException("修改审批信息失败"+tasknfo);
  134. }
  135. //推送微信模板消息通知
  136. SendMessageUtil sendMessageUtil = new SendMessageUtil();
  137. sendMessageUtil.orderReviewResultsPush("你好,你有个订单需要你的审核",
  138. approvalProduction.getApplicantOrderNo(),
  139. approvalInfo.getApprovalApplicant(),
  140. format.format(new Date()),
  141. approvalInfo.getApprovalName(),
  142. "点击查看详细信息",
  143. approvalAdmin.getAdminOpenId(),
  144. ResultInfo.LISTBEREVIEWED);
  145. }
  146. return true;
  147. }
  148. @Override
  149. public Integer insertItem(List<ApprovalProductionItem> listApprovalProductionItem) {
  150. return approvalOrderMapper.insertItem(listApprovalProductionItem);
  151. }
  152. @Override
  153. public Integer insertProductionContract(ApprovalProductionContract approvalProductionContract) {
  154. return approvalOrderMapper.insertProductionContract(approvalProductionContract);
  155. }
  156. @Override
  157. public Integer insertProcessInfo(ProcessInfo processInfo) {
  158. return approvalOrderMapper.insertProcessInfo(processInfo);
  159. }
  160. @Override
  161. public Integer insertHistoricalRecord(HistoricalRecord historicalRecord) {
  162. return approvalOrderMapper.insertHistoricalRecord(historicalRecord);
  163. }
  164. @Override
  165. public PagedResult<ApprovalInfo> listApprovalInfo(int pageNO, int pageSize, ApprovalInfo approvalInfo, boolean isTotalNum) {
  166. PageHelper.startPage(pageNO, pageSize, isTotalNum);
  167. //查询客诉列表
  168. List<ApprovalInfo> approvalList = approvalOrderMapper.listApprovalInfo(approvalInfo);
  169. return PageUtil.getPage(approvalList);
  170. }
  171. @Override
  172. public Integer updateHistoricalRecord(HistoricalRecord historicalRecord) {
  173. return approvalOrderMapper.updateHistoricalRecord(historicalRecord);
  174. }
  175. @Override
  176. public HistoricalRecord getHistoricalRecord(HistoricalRecord historicalRecord) {
  177. return approvalOrderMapper.getHistoricalRecord(historicalRecord);
  178. }
  179. @Override
  180. public List<ProcessInfo> listProcessInfo(ProcessInfo processInfo) {
  181. return approvalOrderMapper.listProcessInfo(processInfo);
  182. }
  183. @Override
  184. public Integer updateApprovalInfo(ApprovalInfo approvalInfo) {
  185. return approvalOrderMapper.updateApprovalInfo(approvalInfo);
  186. }
  187. @Override
  188. public Integer deleteHistoricalRecord(Integer approvalId) {
  189. return approvalOrderMapper.deleteHistoricalRecord(approvalId);
  190. }
  191. @Override
  192. public List<ApprovalInfo> getApprovalInfo(ApprovalInfo approvalInfo) {
  193. return approvalOrderMapper.listApprovalInfo(approvalInfo);
  194. }
  195. @Override
  196. public ApprovalInfo getApprovalInfoById(Integer approvalId) {
  197. return approvalOrderMapper.getApprovalInfoById(approvalId);
  198. }
  199. @Override
  200. public Integer updateProductionItem(ApprovalProductionItem approvalProductionItem) {
  201. return approvalOrderMapper.updateProductionItem(approvalProductionItem);
  202. }
  203. @Override
  204. @Transactional
  205. public ResponseJson insertInventoryRecords(String inventoryRecordss,Admin admin) {
  206. ResponseJson rj =new ResponseJson(200, "入库成功", 200);
  207. Integer appvalId = 0;
  208. Integer productNum = 0;
  209. String productName = "";
  210. Integer isPutStorage = 2; //·1部分入库 2.全部入库
  211. JSONArray jsonRecordss = JSONArray.fromObject(inventoryRecordss);
  212. for (int i = 0; i < jsonRecordss.size(); i++) {
  213. JSONObject jsonRecords = jsonRecordss.getJSONObject(i);
  214. //封装入库信息
  215. //根据itemid查询产品项
  216. ApprovalProductionItem productionItem = approvalOrderMapper.getProductionItem(jsonRecords.getInt("itemId"));
  217. if((productionItem.getItemLackNumber() > jsonRecords.getInt("actualStorage") ? 1 : 2) == 1){
  218. isPutStorage = 1;
  219. }
  220. ApprovalInventoryRecords records = new ApprovalInventoryRecords();
  221. if(jsonRecords.get("actualStorage") == null){
  222. if(productionItem.getItemLackNumber() < jsonRecords.getInt("actualStorage")){
  223. return new ResponseJson(200, "实际入库数量不得大于缺少数量", 500);
  224. }
  225. }
  226. records.setStorageState(productionItem.getItemLackNumber() > jsonRecords.getInt("actualStorage") ? 1 : 2);
  227. records.setApprovalId(jsonRecords.getInt("approvalId"));
  228. records.setProductName(productionItem.getItemProductName());
  229. records.setColorName(productionItem.getItemColorName());
  230. records.setActualStorage(jsonRecords.getInt("actualStorage"));
  231. records.setShouldStorage(productionItem.getItemLackNumber());
  232. records.setLackNumber(productionItem.getItemLackNumber() - jsonRecords.getInt("actualStorage"));
  233. records.setOperatingAdminId(admin.getAdminId());
  234. records.setItemId(jsonRecords.getInt("itemId"));
  235. records.setBrandName(productionItem.getItemBrandName());
  236. records.setProductModel(productionItem.getItemProductModel());
  237. records.setProductUnit(productionItem.getItemProductUnit());
  238. records.setProductBoxNumber(productionItem.getItemProductBoxNumber());
  239. if(approvalOrderMapper.insertInventoryRecords(records) < 1){
  240. return new ResponseJson(200, "添加入库记录失败", 500);
  241. }
  242. //修改订单项信息
  243. if(jsonRecords.get("itemId") == null || jsonRecords.get("itemId").equals("")){
  244. return new ResponseJson(200, "产品项id不能为空", 500);
  245. }
  246. /*ApprovalProductionItem productionItem = approvalOrderService.getProductionItem(jsonRecords.getInt("itemId"));*/
  247. if(productionItem.getItemLackNumber() < jsonRecords.getInt("actualStorage")){
  248. return new ResponseJson(200, "产品入库数量不得大于缺少数量", 500);
  249. }
  250. /*productionItem.setItemShouldStorage(productionItem.getItemLackNumber());*/
  251. productionItem.setItemLackNumber(productionItem.getItemLackNumber() - jsonRecords.getInt("actualStorage"));
  252. productionItem.setItemActualStorage(productionItem.getItemActualStorage()+jsonRecords.getInt("actualStorage"));
  253. if(approvalOrderMapper.updateProductionItem(productionItem) < 1){
  254. return new ResponseJson(200, "修改审批产品项失败", 500);
  255. }
  256. appvalId = jsonRecords.getInt("approvalId");
  257. productNum = productNum + jsonRecords.getInt("actualStorage");
  258. productName = productName + productionItem.getItemProductName()+",";
  259. }
  260. //修改审批订单状态
  261. ApprovalInfo approvalinfo = new ApprovalInfo();
  262. approvalinfo.setApprovalId(appvalId);
  263. if(isPutStorage == 1){
  264. approvalinfo.setApprovalStatus(6);
  265. approvalinfo.setApprovalStatusDetails("已完成部分入库");
  266. }else{
  267. approvalinfo.setApprovalStatus(7);
  268. approvalinfo.setApprovalStatusDetails("全部入库,待发货");
  269. }
  270. if(approvalOrderMapper.updateApprovalInfo(approvalinfo) < 1){
  271. return new ResponseJson(200, "修改审批信息状态失败", 500);
  272. }
  273. //添加历史入库信息
  274. HistoricalRecord historicalRecord = new HistoricalRecord();
  275. historicalRecord.setApprovalTime(new Date());
  276. historicalRecord.setAdminId(admin.getAdminId());
  277. historicalRecord.setApprovalId(appvalId);
  278. if(isPutStorage == 1){
  279. historicalRecord.setRecordState(4);
  280. }else{
  281. historicalRecord.setRecordState(5);
  282. }
  283. if(approvalOrderMapper.insertHistoricalRecord(historicalRecord) < 1){
  284. return new ResponseJson(200, "添加审批历史信息失败", 500);
  285. }
  286. //添加审批流程信息
  287. //流程信息封装
  288. ProcessInfo processInfo = new ProcessInfo();
  289. processInfo.setAdminId(admin.getAdminId());
  290. processInfo.setApprovalId(appvalId);
  291. if(isPutStorage == 1){
  292. processInfo.setProcessState(5);
  293. }else{
  294. processInfo.setProcessState(6);
  295. }
  296. processInfo.setRecordId(historicalRecord.getRecordId() == null ? null : historicalRecord.getRecordId());
  297. processInfo.setProcessDesc("本次入库:"+productNum+"台");
  298. if(approvalOrderMapper.insertProcessInfo(processInfo) < 1){
  299. return new ResponseJson(200, "添加审批流程信息失败", 500);
  300. }
  301. //推送入库微信模板消息通知
  302. //查询审批订单信息
  303. ApprovalInfo approvalInfo = approvalOrderMapper.getApprovalInfoById(appvalId);
  304. SendMessageUtil sendMessageUtil = new SendMessageUtil();
  305. productName = productName.substring(0,productName.length() - 1);
  306. Admin adminTwo = new Admin();
  307. adminTwo.setAdminDept(8);//工厂仓库部
  308. List<Admin> listAdmin = sysMapper.listAdmin(adminTwo);
  309. sendMessageUtil.putStoragePush(approvalInfo.getApprovalName()+"已入库,本次入库总数量"+productNum+"台",
  310. productName,
  311. ""+productNum,
  312. admin.getAdminName(),
  313. "优尼雅仓库",
  314. "如有疑问请联系上级领导人",
  315. listAdmin.get(0).getAdminOpenId(),
  316. ResultInfo.LISTWAREHOUSE);
  317. return rj;
  318. }
  319. @Override
  320. public ApprovalProductionItem getProductionItem(Integer itemId) {
  321. return approvalOrderMapper.getProductionItem(itemId);
  322. }
  323. @Override
  324. public ApprovalProduction getApprovalProductionById(Integer approvalId) {
  325. return approvalOrderMapper.getApprovalProductionById(approvalId);
  326. }
  327. @Override
  328. public List<ApprovalProductionItem> getIteminfo(Integer approvalId) {
  329. return approvalOrderMapper.getIteminfo(approvalId);
  330. }
  331. @Override
  332. @Transactional
  333. public ResponseJson auditApprovalinfo(ApprovalInfo approvalInfo, Admin admin,Integer status) {
  334. ResponseJson rj =new ResponseJson(200, "操作成功", 200);
  335. ApprovalInfo ainfo = approvalOrderMapper.getApprovalInfoById(approvalInfo.getApprovalId());
  336. SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
  337. approvalInfo.setApprovalName(ainfo.getApprovalName());
  338. approvalInfo.setApprovalType(ainfo.getApprovalType());
  339. approvalInfo.setActivitiId(ainfo.getActivitiId());
  340. approvalInfo.setApprovalApplicant(ainfo.getApprovalApplicant());
  341. //审批历史记录查询和封装
  342. HistoricalRecord historicalRecord = new HistoricalRecord();
  343. historicalRecord.setApprovalId(approvalInfo.getApprovalId());
  344. historicalRecord.setAdminId(admin.getAdminId());
  345. historicalRecord.setRecordState(1);
  346. historicalRecord = approvalOrderMapper.getHistoricalRecord(historicalRecord);
  347. if(status != 3){
  348. if(historicalRecord == null){
  349. return new ResponseJson(200, "未查询到审批历史记录信息", 500);
  350. }else{
  351. historicalRecord.setApprovalTime(new Date());
  352. }
  353. }
  354. //流程信息封装
  355. ProcessInfo processInfo = new ProcessInfo();
  356. processInfo.setAdminId(admin.getAdminId());
  357. processInfo.setApprovalId(approvalInfo.getApprovalId());
  358. if(status != 3){
  359. processInfo.setRecordId(historicalRecord.getRecordId() == null ? null : historicalRecord.getRecordId());
  360. }
  361. processInfo.setProcessDesc(approvalInfo.getApprovalDetails());//后期在后台添加
  362. //审批信息封装
  363. ApprovalInfo info = new ApprovalInfo();
  364. info.setApprovalId(ainfo.getApprovalId());
  365. info.setApprovalType(ainfo.getApprovalType());
  366. info.setApprovalName(ainfo.getApprovalName());
  367. switch (status){
  368. case 1:
  369. //查询当前审核人当前审核任务信息
  370. HistoricalRecord record = approvalOrderMapper.getHistoricalRecord(historicalRecord);
  371. if(record == null){
  372. rj = ResponseJson.getFAILURE();
  373. rj.setResultMsg("查询当前审核人审核任务信息为空!");
  374. return rj;
  375. }
  376. //修改审核历史记录状态为已通过 同级其它审核人任务状态为其他人已审核
  377. HistoricalRecord recordinfo = new HistoricalRecord();
  378. recordinfo.setApprovalId(approvalInfo.getApprovalId());
  379. recordinfo.setRecordState(6);
  380. recordinfo.setTaskId(record.getTaskId());
  381. recordinfo.setApprovalTime(new Date());
  382. if(approvalOrderMapper.updateHistoricalRecord(recordinfo) < 1){
  383. rj = ResponseJson.getFAILURE();
  384. rj.setResultMsg("修改其它审核人审核历史记录状态失败!");
  385. return rj;
  386. }
  387. recordinfo.setTaskId(null);
  388. recordinfo.setAdminId(admin.getAdminId());
  389. recordinfo.setRecordState(2);
  390. if(approvalOrderMapper.updateHistoricalRecord(recordinfo) < 1){
  391. rj = ResponseJson.getFAILURE();
  392. rj.setResultMsg("修改审核历史记录状态失败!");
  393. return rj;
  394. }
  395. //获取下一个审核人,并添加审核历史信息
  396. Map<String, Object> taskMap = approvalTaskService.completeTask(approvalInfo.getActivitiId(),record.getTaskId());
  397. if(taskMap == null){
  398. rj = ResponseJson.getFAILURE();
  399. rj.setResultMsg("获取下一个审核人,并添加审核历史信息失败!");
  400. return rj;
  401. }
  402. if((Integer) taskMap.get("status") == 1){//没有下一个审批人,修改审批任务状态为已审批通过
  403. info.setApprovalStatus(2);
  404. info.setApprovalStatusDetails("已审核,待入库");
  405. if(approvalOrderMapper.updateApprovalInfo(info) < 1){
  406. rj = ResponseJson.getFAILURE();
  407. rj.setResultMsg("修改审批信息失败!");
  408. return rj;
  409. }
  410. //判断是生产审批或提货审批
  411. if(info.getApprovalType() == 1){
  412. //推送微信模板消息通知
  413. ApprovalProduction production = approvalOrderMapper.getApprovalProductionById(approvalInfo.getApprovalId());
  414. Admin admininfo = new Admin();
  415. admininfo.setAdminId(production.getApplicantId());
  416. admininfo = sysMapper.getAdminInfo(admininfo);
  417. if(admininfo.getAdminOpenId() == null ){
  418. rj = ResponseJson.getFAILURE();
  419. rj.setResultMsg("获取管理信息失败!");
  420. return rj;
  421. }
  422. //通知申请人该审批已通过
  423. SendMessageUtil sendMessageUtil = new SendMessageUtil();
  424. sendMessageUtil.reviewResultsPush("亲,您提交的申请 "+admin.getAdminName()+" 已处理。",
  425. production.getApplicantName(),
  426. "通过",
  427. format.format(new Date()),
  428. "审核通过后可通过公众号进入系统",
  429. admininfo.getAdminOpenId(),
  430. ResultInfo.LISTISTARTED);
  431. //通知仓库订单已确认
  432. //获取仓库人员openid
  433. Admin adminTwo = new Admin();
  434. adminTwo.setAdminDept(8);//工厂仓库部
  435. List<Admin> listAdmin = sysMapper.listAdmin(adminTwo);
  436. List<ApprovalProductionItem> items = approvalOrderMapper.getIteminfo(approvalInfo.getApprovalId());
  437. String products = "";
  438. Integer num = 0;
  439. for(ApprovalProductionItem item : items){
  440. products = products + item.getItemProductName()+",";
  441. num = item.getItemProductNum()+num;
  442. }
  443. products = products.substring(0,products.length() - 1);
  444. sendMessageUtil.putStoragePush(admininfo.getAdminName()+"的生产订单已确认,请在生产入库后确认",
  445. products,
  446. ""+num,
  447. admin.getAdminName(),
  448. "优尼雅仓库",
  449. "如有疑问请联系上级领导人",
  450. listAdmin.get(0).getAdminOpenId(),
  451. ResultInfo.LISTWAREHOUSE);
  452. }else{
  453. //通知申请人该提货审批已通过
  454. ApprovalApplyPick approvalApplyPick = new ApprovalApplyPick();
  455. approvalApplyPick.setApprovalId(approvalInfo.getApprovalId());
  456. List<ApprovalApplyPick> pickList = applyPickMapper.listOrderBatchPage(approvalApplyPick);
  457. String products = "";
  458. for(ApprovalApplyPickItem PickItem : pickList.get(0).getListApplyPickItem()){
  459. products = products+PickItem.getItemProductName()+",";
  460. }
  461. products = products.substring(0,products.length()-1);
  462. Admin admininfo = new Admin();
  463. admininfo.setAdminId(pickList.get(0).getAdminId());
  464. admininfo = sysMapper.getAdminInfo(admininfo);
  465. SendMessageUtil sendMessageUtil = new SendMessageUtil();
  466. sendMessageUtil.applicationFormPush("您的申领单被 "+admin.getAdminName()+" 通过。",
  467. format.format(new Date()),
  468. "0000000"+approvalInfo.getApprovalId(),
  469. products,
  470. "点击查看详情",
  471. admininfo.getAdminOpenId(),
  472. ResultInfo.LISTISTARTED);
  473. }
  474. }else if((Integer) taskMap.get("status") == 0){//还有下一个审批人,需要增加审批历史任务
  475. //修改状态为已完成部分审批
  476. info.setApprovalStatus(4);
  477. if(approvalOrderMapper.updateApprovalInfo(info) < 1){
  478. rj = ResponseJson.getFAILURE();
  479. rj.setResultMsg("修改审批信息状态失败!");
  480. return rj;
  481. }
  482. if(taskMap.get("users") == null){
  483. rj = ResponseJson.getFAILURE();
  484. rj.setResultMsg("获取下一个审批人失败!");
  485. return rj;
  486. }
  487. String[] split = (String[])taskMap.get("users");
  488. for (String name : split){
  489. //通过name查询管理员id
  490. Admin approvalAdmin = sysMapper.getByName(name);
  491. if(approvalAdmin == null){
  492. rj = ResponseJson.getFAILURE();
  493. rj.setResultMsg("查询管理员失败!");
  494. return rj;
  495. }
  496. HistoricalRecord recordInfo = new HistoricalRecord();
  497. recordInfo.setApprovalId(approvalInfo.getApprovalId());
  498. recordInfo.setAdminId(approvalAdmin.getAdminId());
  499. recordInfo.setRecordState(1);
  500. recordInfo.setTaskId(taskMap.get("taskId").toString());
  501. if(approvalOrderMapper.insertHistoricalRecord(recordInfo) < 1){
  502. rj = ResponseJson.getFAILURE();
  503. rj.setResultMsg("添加历史审批人失败!");
  504. return rj;
  505. }
  506. //修改审核信息表
  507. info.setApprovalStatusDetails("待"+approvalAdmin.getAdminName()+"审批");
  508. if(approvalOrderMapper.updateApprovalInfo(info) < 1){
  509. rj = ResponseJson.getFAILURE();
  510. rj.setResultMsg("修改审核信息失败!");
  511. return rj;
  512. }
  513. //推送微信模板消息通知
  514. //查询审批订单信息
  515. ApprovalProduction production = approvalOrderMapper.getApprovalProductionById(approvalInfo.getApprovalId());
  516. SendMessageUtil sendMessageUtil = new SendMessageUtil();
  517. sendMessageUtil.orderReviewResultsPush("你好,你有个订单需要你的审核",
  518. production.getApplicantOrderNo(),
  519. approvalInfo.getApprovalApplicant(),
  520. format.format(new Date()),
  521. approvalInfo.getApprovalName(),
  522. "点击查看详细信息",
  523. approvalAdmin.getAdminOpenId(),
  524. ResultInfo.LISTBEREVIEWED);
  525. }
  526. }
  527. //添加流程信息记录
  528. processInfo.setProcessState(2);
  529. if(approvalOrderMapper.insertProcessInfo(processInfo) < 1){
  530. rj = ResponseJson.getFAILURE();
  531. rj.setResultMsg("添加流程信息记录失败!");
  532. return rj;
  533. }
  534. break;
  535. case 2:
  536. //修改历史记录状态为已驳回
  537. SendMessageUtil sendMessageUtil = new SendMessageUtil();
  538. HistoricalRecord recordinfo2 = new HistoricalRecord();
  539. recordinfo2.setApprovalId(approvalInfo.getApprovalId());
  540. recordinfo2.setRecordState(6);
  541. recordinfo2.setTaskId(historicalRecord.getTaskId());
  542. recordinfo2.setApprovalTime(new Date());
  543. if(approvalOrderMapper.updateHistoricalRecord(recordinfo2) < 1){
  544. rj = ResponseJson.getFAILURE();
  545. rj.setResultMsg("修改其它审核人历史记录状态为其他人已审核!");
  546. return rj;
  547. }
  548. recordinfo2.setTaskId(null);
  549. recordinfo2.setAdminId(admin.getAdminId());
  550. recordinfo2.setRecordState(3);
  551. if(approvalOrderMapper.updateHistoricalRecord(recordinfo2) < 1){
  552. rj = ResponseJson.getFAILURE();
  553. rj.setResultMsg("修改审核历史记录状态失败!");
  554. return rj;
  555. }
  556. info.setApprovalStatus(3);
  557. if(approvalOrderMapper.updateApprovalInfo(info) < 1){
  558. rj = ResponseJson.getFAILURE();
  559. rj.setResultMsg("修改审批信息失败!");
  560. return rj;
  561. }
  562. //添加流程信息记录
  563. processInfo.setProcessState(3);
  564. if(approvalOrderMapper.insertProcessInfo(processInfo) < 1){
  565. rj = ResponseJson.getFAILURE();
  566. rj.setResultMsg("添加流程信息记录失败!");
  567. return rj;
  568. }
  569. //判断是生产审批或提货审批 并向申请发起人和历史审批人发送模板消息
  570. if(info.getApprovalType() == 1){
  571. //查询审批发起人信息并发送模板消息
  572. ApprovalProduction production = approvalOrderMapper.getApprovalProductionById(approvalInfo.getApprovalId());
  573. Admin admininfo = new Admin();
  574. admininfo.setAdminId(production.getApplicantId());
  575. admininfo = sysMapper.getAdminInfo(admininfo);
  576. if(admininfo.getAdminOpenId() == null ){
  577. rj = ResponseJson.getFAILURE();
  578. rj.setResultMsg("获取管理信息失败!");
  579. return rj;
  580. }
  581. //通知申请人该审批已驳回
  582. sendMessageUtil.reviewResultsPush("亲,您提交的申请 "+admin.getAdminName()+" 已处理。",
  583. production.getApplicantName(),
  584. "驳回",
  585. format.format(new Date()),
  586. "可通过公众号进入系统",
  587. admininfo.getAdminOpenId(),
  588. ResultInfo.LISTISTARTED);
  589. //查询历史审批人信息并发送模板消息
  590. List<HistoricalRecord> listHl = approvalOrderMapper.hasHistoricalRecordList(approvalInfo.getApprovalId());
  591. if(listHl.size() > 0){
  592. for(HistoricalRecord hr : listHl){
  593. //通知申请人该审批已驳回
  594. sendMessageUtil.reviewResultsPush("亲,您审核过的申请 "+admin.getAdminName()+" 已处理。",
  595. hr.getAdminName(),
  596. "驳回",
  597. format.format(new Date()),
  598. "可通过公众号进入系统",
  599. hr.getAdminOpenId(),
  600. ResultInfo.LISTISTARTED);
  601. }
  602. }
  603. }else{
  604. //通知申请人该提货审批已驳回
  605. ApprovalApplyPick approvalApplyPick = new ApprovalApplyPick();
  606. approvalApplyPick.setApprovalId(approvalInfo.getApprovalId());
  607. List<ApprovalApplyPick> pickList = applyPickMapper.listOrderBatchPage(approvalApplyPick);
  608. Admin admininfo = new Admin();
  609. admininfo.setAdminId(pickList.get(0).getAdminId());
  610. admininfo = sysMapper.getAdminInfo(admininfo);
  611. //通知申请人该审批已驳回
  612. sendMessageUtil.reviewResultsPush("亲,您提交的申请 "+admin.getAdminName()+" 已处理。",
  613. pickList.get(0).getApplyPickName(),
  614. "驳回",
  615. format.format(new Date()),
  616. "可通过公众号进入系统",
  617. admininfo.getAdminOpenId(),
  618. ResultInfo.LISTISTARTED);
  619. }
  620. //查询历史审批人信息并发送模板消息
  621. List<HistoricalRecord> listHl = approvalOrderMapper.hasHistoricalRecordList(approvalInfo.getApprovalId());
  622. if(listHl.size() > 0){
  623. for(HistoricalRecord hr : listHl){
  624. //通知申请人该申请已驳回
  625. sendMessageUtil.reviewResultsPush("亲,您审核过的申请 "+admin.getAdminName()+" 已处理。",
  626. hr.getAdminName(),
  627. "驳回",
  628. format.format(new Date()),
  629. "可通过公众号进入系统",
  630. hr.getAdminOpenId(),
  631. ResultInfo.LISTISTARTED);
  632. }
  633. }
  634. //调用第三方revokeTask接口执行撤销
  635. approvalTaskService.revokeTask(approvalInfo.getActivitiId(),"审批人驳回审核");
  636. break;
  637. case 3:
  638. if(ainfo.getApprovalStatus() > 1){
  639. rj = ResponseJson.getFAILURE();
  640. rj.setResultMsg("已审批的订单不允许撤销!");
  641. return rj;
  642. }
  643. //修改审批信息状态为撤销
  644. info.setApprovalStatus(9);
  645. if(approvalOrderMapper.updateApprovalInfo(info) < 1){
  646. rj = ResponseJson.getFAILURE();
  647. rj.setResultMsg("修改审批信息状态为撤销失败!");
  648. return rj;
  649. }
  650. //删除该审批的历史记录
  651. approvalOrderMapper.deleteHistoricalRecord(approvalInfo.getApprovalId());
  652. //添加流程信息记录
  653. processInfo.setProcessState(4);
  654. if(approvalOrderMapper.insertProcessInfo(processInfo) < 1){
  655. rj = ResponseJson.getFAILURE();
  656. rj.setResultMsg("添加流程信息记录失败!");
  657. return rj;
  658. }
  659. //调用第三方revokeTask接口执行撤销
  660. approvalTaskService.revokeTask(approvalInfo.getActivitiId(),"业务员撤销审核");
  661. break;
  662. case 4:
  663. //添加评论内容到流程信息表,不用修改任何状态
  664. processInfo.setProcessState(0);
  665. if(approvalOrderMapper.insertProcessInfo(processInfo) < 1){
  666. rj = ResponseJson.getFAILURE();
  667. rj.setResultMsg("添加评论内容到流程信息失败!");
  668. return rj;
  669. }
  670. break;
  671. }
  672. return rj;
  673. }
  674. @Override
  675. public List<ApprovalInventoryRecords> listInventoryRecords(Integer approvalId) {
  676. return approvalOrderMapper.listInventoryRecords(approvalId);
  677. }
  678. }