ApprovalOrderServiceImpl.java 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736
  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. records.setExternalModel(productionItem.getItemExternalModel());
  240. if(approvalOrderMapper.insertInventoryRecords(records) < 1){
  241. return new ResponseJson(200, "添加入库记录失败", 500);
  242. }
  243. //修改订单项信息
  244. if(jsonRecords.get("itemId") == null || jsonRecords.get("itemId").equals("")){
  245. return new ResponseJson(200, "产品项id不能为空", 500);
  246. }
  247. /*ApprovalProductionItem productionItem = approvalOrderService.getProductionItem(jsonRecords.getInt("itemId"));*/
  248. if(productionItem.getItemLackNumber() < jsonRecords.getInt("actualStorage")){
  249. return new ResponseJson(200, "产品入库数量不得大于缺少数量", 500);
  250. }
  251. /*productionItem.setItemShouldStorage(productionItem.getItemLackNumber());*/
  252. productionItem.setItemLackNumber(productionItem.getItemLackNumber() - jsonRecords.getInt("actualStorage"));
  253. productionItem.setItemActualStorage(productionItem.getItemActualStorage()+jsonRecords.getInt("actualStorage"));
  254. if(approvalOrderMapper.updateProductionItem(productionItem) < 1){
  255. return new ResponseJson(200, "修改审批产品项失败", 500);
  256. }
  257. appvalId = jsonRecords.getInt("approvalId");
  258. productNum = productNum + jsonRecords.getInt("actualStorage");
  259. productName = productName + productionItem.getItemProductName()+",";
  260. }
  261. //修改审批订单状态
  262. ApprovalInfo approvalinfo = new ApprovalInfo();
  263. approvalinfo.setApprovalId(appvalId);
  264. if(isPutStorage == 1){
  265. approvalinfo.setApprovalStatus(6);
  266. approvalinfo.setApprovalStatusDetails("已完成部分入库");
  267. }else{
  268. approvalinfo.setApprovalStatus(7);
  269. approvalinfo.setApprovalStatusDetails("全部入库,待发货");
  270. }
  271. if(approvalOrderMapper.updateApprovalInfo(approvalinfo) < 1){
  272. return new ResponseJson(200, "修改审批信息状态失败", 500);
  273. }
  274. //添加历史入库信息
  275. HistoricalRecord historicalRecord = new HistoricalRecord();
  276. historicalRecord.setApprovalTime(new Date());
  277. historicalRecord.setAdminId(admin.getAdminId());
  278. historicalRecord.setApprovalId(appvalId);
  279. if(isPutStorage == 1){
  280. historicalRecord.setRecordState(4);
  281. }else{
  282. historicalRecord.setRecordState(5);
  283. }
  284. if(approvalOrderMapper.insertHistoricalRecord(historicalRecord) < 1){
  285. return new ResponseJson(200, "添加审批历史信息失败", 500);
  286. }
  287. //添加审批流程信息
  288. //流程信息封装
  289. ProcessInfo processInfo = new ProcessInfo();
  290. processInfo.setAdminId(admin.getAdminId());
  291. processInfo.setApprovalId(appvalId);
  292. if(isPutStorage == 1){
  293. processInfo.setProcessState(5);
  294. }else{
  295. processInfo.setProcessState(6);
  296. }
  297. processInfo.setRecordId(historicalRecord.getRecordId() == null ? null : historicalRecord.getRecordId());
  298. processInfo.setProcessDesc("本次入库:"+productNum+"台");
  299. if(approvalOrderMapper.insertProcessInfo(processInfo) < 1){
  300. return new ResponseJson(200, "添加审批流程信息失败", 500);
  301. }
  302. //推送入库微信模板消息通知
  303. //查询审批订单信息
  304. ApprovalInfo approvalInfo = approvalOrderMapper.getApprovalInfoById(appvalId);
  305. SendMessageUtil sendMessageUtil = new SendMessageUtil();
  306. productName = productName.substring(0,productName.length() - 1);
  307. AdminApprovalAuthority authority = new AdminApprovalAuthority();
  308. authority.setIsWarehouse(1);
  309. List<AdminApprovalAuthority> listAuthority = approvalOrderMapper.listApprovalAuthority(authority);
  310. Admin adminTwo = new Admin();
  311. adminTwo.setAdminId(listAuthority.get(0).getAdminId());
  312. List<Admin> listAdmin = sysMapper.listAdmin(adminTwo);
  313. sendMessageUtil.putStoragePush(approvalInfo.getApprovalName()+"已入库,本次入库总数量"+productNum+"台",
  314. productName,
  315. ""+productNum,
  316. admin.getAdminName(),
  317. "优尼雅仓库",
  318. "如有疑问请联系上级领导人",
  319. listAdmin.get(0).getAdminOpenId(),
  320. ResultInfo.LISTWAREHOUSE);
  321. return rj;
  322. }
  323. @Override
  324. public ApprovalProductionItem getProductionItem(Integer itemId) {
  325. return approvalOrderMapper.getProductionItem(itemId);
  326. }
  327. @Override
  328. public ApprovalProduction getApprovalProductionById(Integer approvalId) {
  329. return approvalOrderMapper.getApprovalProductionById(approvalId);
  330. }
  331. @Override
  332. public List<ApprovalProductionItem> getIteminfo(Integer approvalId) {
  333. return approvalOrderMapper.getIteminfo(approvalId);
  334. }
  335. @Override
  336. @Transactional
  337. public ResponseJson auditApprovalinfo(ApprovalInfo approvalInfo, Admin admin,Integer status) {
  338. ResponseJson rj =new ResponseJson(200, "操作成功", 200);
  339. ApprovalInfo ainfo = approvalOrderMapper.getApprovalInfoById(approvalInfo.getApprovalId());
  340. SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
  341. approvalInfo.setApprovalName(ainfo.getApprovalName());
  342. approvalInfo.setApprovalType(ainfo.getApprovalType());
  343. approvalInfo.setActivitiId(ainfo.getActivitiId());
  344. approvalInfo.setApprovalApplicant(ainfo.getApprovalApplicant());
  345. //审批历史记录查询和封装
  346. HistoricalRecord historicalRecord = new HistoricalRecord();
  347. historicalRecord.setApprovalId(approvalInfo.getApprovalId());
  348. historicalRecord.setAdminId(admin.getAdminId());
  349. historicalRecord.setRecordState(1);
  350. historicalRecord = approvalOrderMapper.getHistoricalRecord(historicalRecord);
  351. if(status != 3){
  352. if(historicalRecord == null){
  353. return new ResponseJson(200, "未查询到审批历史记录信息", 500);
  354. }else{
  355. historicalRecord.setApprovalTime(new Date());
  356. }
  357. }
  358. //流程信息封装
  359. ProcessInfo processInfo = new ProcessInfo();
  360. processInfo.setAdminId(admin.getAdminId());
  361. processInfo.setApprovalId(approvalInfo.getApprovalId());
  362. if(status != 3){
  363. processInfo.setRecordId(historicalRecord.getRecordId() == null ? null : historicalRecord.getRecordId());
  364. }
  365. processInfo.setProcessDesc(approvalInfo.getApprovalDetails());//后期在后台添加
  366. //审批信息封装
  367. ApprovalInfo info = new ApprovalInfo();
  368. info.setApprovalId(ainfo.getApprovalId());
  369. info.setApprovalType(ainfo.getApprovalType());
  370. info.setApprovalName(ainfo.getApprovalName());
  371. switch (status){
  372. case 1:
  373. //查询当前审核人当前审核任务信息
  374. HistoricalRecord record = approvalOrderMapper.getHistoricalRecord(historicalRecord);
  375. if(record == null){
  376. rj = ResponseJson.getFAILURE();
  377. rj.setResultMsg("查询当前审核人审核任务信息为空!");
  378. return rj;
  379. }
  380. //修改审核历史记录状态为已通过 同级其它审核人任务状态为其他人已审核
  381. HistoricalRecord recordinfo = new HistoricalRecord();
  382. recordinfo.setApprovalId(approvalInfo.getApprovalId());
  383. recordinfo.setRecordState(6);
  384. recordinfo.setTaskId(record.getTaskId());
  385. recordinfo.setApprovalTime(new Date());
  386. if(approvalOrderMapper.updateHistoricalRecord(recordinfo) < 1){
  387. rj = ResponseJson.getFAILURE();
  388. rj.setResultMsg("修改其它审核人审核历史记录状态失败!");
  389. return rj;
  390. }
  391. recordinfo.setTaskId(null);
  392. recordinfo.setAdminId(admin.getAdminId());
  393. recordinfo.setRecordState(2);
  394. if(approvalOrderMapper.updateHistoricalRecord(recordinfo) < 1){
  395. rj = ResponseJson.getFAILURE();
  396. rj.setResultMsg("修改审核历史记录状态失败!");
  397. return rj;
  398. }
  399. //获取下一个审核人,并添加审核历史信息
  400. Map<String, Object> taskMap = approvalTaskService.completeTask(approvalInfo.getActivitiId(),record.getTaskId());
  401. if(taskMap == null){
  402. rj = ResponseJson.getFAILURE();
  403. rj.setResultMsg("获取下一个审核人,并添加审核历史信息失败!");
  404. return rj;
  405. }
  406. if((Integer) taskMap.get("status") == 1){//没有下一个审批人,修改审批任务状态为已审批通过
  407. info.setApprovalStatus(2);
  408. info.setApprovalStatusDetails("已审核,待入库");
  409. if(approvalOrderMapper.updateApprovalInfo(info) < 1){
  410. rj = ResponseJson.getFAILURE();
  411. rj.setResultMsg("修改审批信息失败!");
  412. return rj;
  413. }
  414. //判断是生产审批或提货审批
  415. if(info.getApprovalType() == 1){
  416. //推送微信模板消息通知
  417. ApprovalProduction production = approvalOrderMapper.getApprovalProductionById(approvalInfo.getApprovalId());
  418. Admin admininfo = new Admin();
  419. admininfo.setAdminId(production.getApplicantId());
  420. admininfo = sysMapper.getAdminInfo(admininfo);
  421. if(admininfo.getAdminOpenId() == null ){
  422. rj = ResponseJson.getFAILURE();
  423. rj.setResultMsg("获取管理信息失败!");
  424. return rj;
  425. }
  426. //通知申请人该审批已通过
  427. SendMessageUtil sendMessageUtil = new SendMessageUtil();
  428. sendMessageUtil.reviewResultsPush("亲,您提交的申请 "+admin.getAdminName()+" 已处理。",
  429. production.getApplicantName(),
  430. "通过",
  431. format.format(new Date()),
  432. "审核通过后可通过公众号进入系统",
  433. admininfo.getAdminOpenId(),
  434. ResultInfo.LISTISTARTED);
  435. //通知仓库订单已确认
  436. //获取仓库人员openid
  437. AdminApprovalAuthority authority = new AdminApprovalAuthority();
  438. authority.setIsWarehouse(1);
  439. List<AdminApprovalAuthority> listAuthority = approvalOrderMapper.listApprovalAuthority(authority);
  440. Admin adminTwo = new Admin();
  441. adminTwo.setAdminId(listAuthority.get(0).getAdminId());
  442. List<Admin> listAdmin = sysMapper.listAdmin(adminTwo);
  443. List<ApprovalProductionItem> items = approvalOrderMapper.getIteminfo(approvalInfo.getApprovalId());
  444. String products = "";
  445. Integer num = 0;
  446. for(ApprovalProductionItem item : items){
  447. products = products + item.getItemProductName()+",";
  448. num = item.getItemProductNum()+num;
  449. }
  450. products = products.substring(0,products.length() - 1);
  451. sendMessageUtil.putStoragePush(admininfo.getAdminName()+"的生产订单已确认,请在生产入库后确认",
  452. products,
  453. ""+num,
  454. admin.getAdminName(),
  455. "优尼雅仓库",
  456. "如有疑问请联系上级领导人",
  457. listAdmin.get(0).getAdminOpenId(),
  458. ResultInfo.LISTWAREHOUSE);
  459. }else{
  460. //通知申请人该提货审批已通过
  461. ApprovalApplyPick approvalApplyPick = new ApprovalApplyPick();
  462. approvalApplyPick.setApprovalId(approvalInfo.getApprovalId());
  463. List<ApprovalApplyPick> pickList = applyPickMapper.listOrderBatchPage(approvalApplyPick);
  464. String products = "";
  465. for(ApprovalApplyPickItem PickItem : pickList.get(0).getListApplyPickItem()){
  466. products = products+PickItem.getItemProductName()+",";
  467. }
  468. products = products.substring(0,products.length()-1);
  469. Admin admininfo = new Admin();
  470. admininfo.setAdminId(pickList.get(0).getAdminId());
  471. admininfo = sysMapper.getAdminInfo(admininfo);
  472. SendMessageUtil sendMessageUtil = new SendMessageUtil();
  473. sendMessageUtil.applicationFormPush("您的申领单被 "+admin.getAdminName()+" 通过。",
  474. format.format(new Date()),
  475. "0000000"+approvalInfo.getApprovalId(),
  476. products,
  477. "点击查看详情",
  478. admininfo.getAdminOpenId(),
  479. ResultInfo.LISTISTARTED);
  480. }
  481. }else if((Integer) taskMap.get("status") == 0){//还有下一个审批人,需要增加审批历史任务
  482. //修改状态为已完成部分审批
  483. info.setApprovalStatus(4);
  484. if(approvalOrderMapper.updateApprovalInfo(info) < 1){
  485. rj = ResponseJson.getFAILURE();
  486. rj.setResultMsg("修改审批信息状态失败!");
  487. return rj;
  488. }
  489. if(taskMap.get("users") == null){
  490. rj = ResponseJson.getFAILURE();
  491. rj.setResultMsg("获取下一个审批人失败!");
  492. return rj;
  493. }
  494. String[] split = (String[])taskMap.get("users");
  495. for (String name : split){
  496. //通过name查询管理员id
  497. Admin approvalAdmin = sysMapper.getByName(name);
  498. if(approvalAdmin == null){
  499. rj = ResponseJson.getFAILURE();
  500. rj.setResultMsg("查询管理员失败!");
  501. return rj;
  502. }
  503. HistoricalRecord recordInfo = new HistoricalRecord();
  504. recordInfo.setApprovalId(approvalInfo.getApprovalId());
  505. recordInfo.setAdminId(approvalAdmin.getAdminId());
  506. recordInfo.setRecordState(1);
  507. recordInfo.setTaskId(taskMap.get("taskId").toString());
  508. if(approvalOrderMapper.insertHistoricalRecord(recordInfo) < 1){
  509. rj = ResponseJson.getFAILURE();
  510. rj.setResultMsg("添加历史审批人失败!");
  511. return rj;
  512. }
  513. //修改审核信息表
  514. info.setApprovalStatusDetails("待"+approvalAdmin.getAdminName()+"审批");
  515. if(approvalOrderMapper.updateApprovalInfo(info) < 1){
  516. rj = ResponseJson.getFAILURE();
  517. rj.setResultMsg("修改审核信息失败!");
  518. return rj;
  519. }
  520. //推送微信模板消息通知
  521. //查询审批订单信息
  522. ApprovalProduction production = approvalOrderMapper.getApprovalProductionById(approvalInfo.getApprovalId());
  523. SendMessageUtil sendMessageUtil = new SendMessageUtil();
  524. sendMessageUtil.orderReviewResultsPush("你好,你有个订单需要你的审核",
  525. production.getApplicantOrderNo(),
  526. approvalInfo.getApprovalApplicant(),
  527. format.format(new Date()),
  528. approvalInfo.getApprovalName(),
  529. "点击查看详细信息",
  530. approvalAdmin.getAdminOpenId(),
  531. ResultInfo.LISTBEREVIEWED);
  532. }
  533. }
  534. //添加流程信息记录
  535. processInfo.setProcessState(2);
  536. if(approvalOrderMapper.insertProcessInfo(processInfo) < 1){
  537. rj = ResponseJson.getFAILURE();
  538. rj.setResultMsg("添加流程信息记录失败!");
  539. return rj;
  540. }
  541. break;
  542. case 2:
  543. //修改历史记录状态为已驳回
  544. SendMessageUtil sendMessageUtil = new SendMessageUtil();
  545. HistoricalRecord recordinfo2 = new HistoricalRecord();
  546. recordinfo2.setApprovalId(approvalInfo.getApprovalId());
  547. recordinfo2.setRecordState(6);
  548. recordinfo2.setTaskId(historicalRecord.getTaskId());
  549. recordinfo2.setApprovalTime(new Date());
  550. if(approvalOrderMapper.updateHistoricalRecord(recordinfo2) < 1){
  551. rj = ResponseJson.getFAILURE();
  552. rj.setResultMsg("修改其它审核人历史记录状态为其他人已审核!");
  553. return rj;
  554. }
  555. recordinfo2.setTaskId(null);
  556. recordinfo2.setAdminId(admin.getAdminId());
  557. recordinfo2.setRecordState(3);
  558. if(approvalOrderMapper.updateHistoricalRecord(recordinfo2) < 1){
  559. rj = ResponseJson.getFAILURE();
  560. rj.setResultMsg("修改审核历史记录状态失败!");
  561. return rj;
  562. }
  563. info.setApprovalStatus(3);
  564. if(approvalOrderMapper.updateApprovalInfo(info) < 1){
  565. rj = ResponseJson.getFAILURE();
  566. rj.setResultMsg("修改审批信息失败!");
  567. return rj;
  568. }
  569. //添加流程信息记录
  570. processInfo.setProcessState(3);
  571. if(approvalOrderMapper.insertProcessInfo(processInfo) < 1){
  572. rj = ResponseJson.getFAILURE();
  573. rj.setResultMsg("添加流程信息记录失败!");
  574. return rj;
  575. }
  576. //判断是生产审批或提货审批 并向申请发起人和历史审批人发送模板消息
  577. if(info.getApprovalType() == 1){
  578. //查询审批发起人信息并发送模板消息
  579. ApprovalProduction production = approvalOrderMapper.getApprovalProductionById(approvalInfo.getApprovalId());
  580. Admin admininfo = new Admin();
  581. admininfo.setAdminId(production.getApplicantId());
  582. admininfo = sysMapper.getAdminInfo(admininfo);
  583. if(admininfo.getAdminOpenId() == null ){
  584. rj = ResponseJson.getFAILURE();
  585. rj.setResultMsg("获取管理信息失败!");
  586. return rj;
  587. }
  588. //通知申请人该审批已驳回
  589. sendMessageUtil.reviewResultsPush("亲,您提交的申请 "+admin.getAdminName()+" 已处理。",
  590. production.getApplicantName(),
  591. "驳回",
  592. format.format(new Date()),
  593. "可通过公众号进入系统",
  594. admininfo.getAdminOpenId(),
  595. ResultInfo.LISTISTARTED);
  596. //查询历史审批人信息并发送模板消息
  597. List<HistoricalRecord> listHl = approvalOrderMapper.hasHistoricalRecordList(approvalInfo.getApprovalId());
  598. if(listHl.size() > 0){
  599. for(HistoricalRecord hr : listHl){
  600. //通知申请人该审批已驳回
  601. sendMessageUtil.reviewResultsPush("亲,您审核过的申请 "+admin.getAdminName()+" 已处理。",
  602. hr.getAdminName(),
  603. "驳回",
  604. format.format(new Date()),
  605. "可通过公众号进入系统",
  606. hr.getAdminOpenId(),
  607. ResultInfo.LISTISTARTED);
  608. }
  609. }
  610. }else{
  611. //通知申请人该提货审批已驳回
  612. ApprovalApplyPick approvalApplyPick = new ApprovalApplyPick();
  613. approvalApplyPick.setApprovalId(approvalInfo.getApprovalId());
  614. List<ApprovalApplyPick> pickList = applyPickMapper.listOrderBatchPage(approvalApplyPick);
  615. Admin admininfo = new Admin();
  616. admininfo.setAdminId(pickList.get(0).getAdminId());
  617. admininfo = sysMapper.getAdminInfo(admininfo);
  618. //通知申请人该审批已驳回
  619. sendMessageUtil.reviewResultsPush("亲,您提交的申请 "+admin.getAdminName()+" 已处理。",
  620. pickList.get(0).getApplyPickName(),
  621. "驳回",
  622. format.format(new Date()),
  623. "可通过公众号进入系统",
  624. admininfo.getAdminOpenId(),
  625. ResultInfo.LISTISTARTED);
  626. }
  627. //查询历史审批人信息并发送模板消息
  628. List<HistoricalRecord> listHl = approvalOrderMapper.hasHistoricalRecordList(approvalInfo.getApprovalId());
  629. if(listHl.size() > 0){
  630. for(HistoricalRecord hr : listHl){
  631. //通知申请人该申请已驳回
  632. sendMessageUtil.reviewResultsPush("亲,您审核过的申请 "+admin.getAdminName()+" 已处理。",
  633. hr.getAdminName(),
  634. "驳回",
  635. format.format(new Date()),
  636. "可通过公众号进入系统",
  637. hr.getAdminOpenId(),
  638. ResultInfo.LISTISTARTED);
  639. }
  640. }
  641. //调用第三方revokeTask接口执行撤销
  642. approvalTaskService.revokeTask(approvalInfo.getActivitiId(),"审批人驳回审核");
  643. break;
  644. case 3:
  645. if(ainfo.getApprovalStatus() > 1){
  646. rj = ResponseJson.getFAILURE();
  647. rj.setResultMsg("已审批的订单不允许撤销!");
  648. return rj;
  649. }
  650. //修改审批信息状态为撤销
  651. info.setApprovalStatus(9);
  652. if(approvalOrderMapper.updateApprovalInfo(info) < 1){
  653. rj = ResponseJson.getFAILURE();
  654. rj.setResultMsg("修改审批信息状态为撤销失败!");
  655. return rj;
  656. }
  657. //删除该审批的历史记录
  658. approvalOrderMapper.deleteHistoricalRecord(approvalInfo.getApprovalId());
  659. //添加流程信息记录
  660. processInfo.setProcessState(4);
  661. if(approvalOrderMapper.insertProcessInfo(processInfo) < 1){
  662. rj = ResponseJson.getFAILURE();
  663. rj.setResultMsg("添加流程信息记录失败!");
  664. return rj;
  665. }
  666. //调用第三方revokeTask接口执行撤销
  667. approvalTaskService.revokeTask(approvalInfo.getActivitiId(),"业务员撤销审核");
  668. break;
  669. case 4:
  670. //添加评论内容到流程信息表,不用修改任何状态
  671. processInfo.setProcessState(0);
  672. if(approvalOrderMapper.insertProcessInfo(processInfo) < 1){
  673. rj = ResponseJson.getFAILURE();
  674. rj.setResultMsg("添加评论内容到流程信息失败!");
  675. return rj;
  676. }
  677. break;
  678. }
  679. return rj;
  680. }
  681. @Override
  682. public List<ApprovalInventoryRecords> listInventoryRecords(Integer approvalId) {
  683. return approvalOrderMapper.listInventoryRecords(approvalId);
  684. }
  685. @Override
  686. public AdminApprovalAuthority getApprovalAuthority(Integer adminId) {
  687. return approvalOrderMapper.getApprovalAuthority(adminId);
  688. }
  689. @Override
  690. public List<AdminApprovalAuthority> listApprovalAuthority(AdminApprovalAuthority adminApprovalAuthority) {
  691. return approvalOrderMapper.listApprovalAuthority(adminApprovalAuthority);
  692. }
  693. }