AuditPathsServiceImpl.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523
  1. package com.ruoyi.approvalFlow.service.impl;
  2. import java.util.*;
  3. import cn.hutool.core.util.StrUtil;
  4. import com.alibaba.fastjson.JSONArray;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.baomidou.mybatisplus.mapper.EntityWrapper;
  7. import com.ruoyi.approvalFlow.domain.*;
  8. import com.ruoyi.approvalFlow.mapper.*;
  9. import com.ruoyi.approvalFlow.service.IAuditPathsService;
  10. import com.ruoyi.common.core.domain.AjaxResult;
  11. import com.ruoyi.common.core.domain.entity.SysUser;
  12. import com.ruoyi.common.core.domain.model.LoginUser;
  13. import com.ruoyi.common.utils.StringUtils;
  14. import com.ruoyi.finance.domain.TFee;
  15. import com.ruoyi.finance.mapper.TFeeMapper;
  16. import com.ruoyi.finance.service.impl.TFeeServiceImpl;
  17. import com.ruoyi.system.mapper.SysUserMapper;
  18. import com.ruoyi.warehouseBusiness.domain.TWarehouseAgreement;
  19. import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
  20. import com.ruoyi.warehouseBusiness.mapper.TWarehouseAgreementMapper;
  21. import com.ruoyi.warehouseBusiness.mapper.TWarehouseBillsMapper;
  22. import com.ruoyi.warehouseBusiness.service.impl.TWarehouseAgreementServiceImpl;
  23. import com.ruoyi.warehouseBusiness.service.impl.TWarehouseBillsServiceImpl;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26. import org.springframework.transaction.annotation.Transactional;
  27. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  28. /**
  29. * 审批流配置主Service业务层处理
  30. *
  31. * @author ruoyi
  32. * @date 2021-01-21
  33. */
  34. @Service
  35. public class AuditPathsServiceImpl implements IAuditPathsService {
  36. @Autowired
  37. private SysUserMapper sysUserMapper;
  38. @Autowired
  39. private AuditPathsMapper auditPathsMapper;
  40. @Autowired
  41. private AuditItemsMapper auditItemsMapper;
  42. @Autowired
  43. private AuditItemsUsersMapper auditItemsUsersMapper;
  44. @Autowired
  45. private AuditPathsActsMapper auditPathsActsMapper;
  46. @Autowired
  47. private AuditPathsLevelsMapper auditPathsLevelsMapper;
  48. @Autowired
  49. private TWarehouseBillsMapper tWarehouseBillsMapper;
  50. @Autowired
  51. private TWarehouseBillsServiceImpl tWarehouseBillsService;
  52. @Autowired
  53. private TFeeServiceImpl tFeeServiceImpl;
  54. @Autowired
  55. private TWarehouseAgreementServiceImpl tWarehouseAgreementService;
  56. @Autowired
  57. private TFeeMapper tFeeMapper;
  58. @Autowired
  59. private TWarehouseAgreementMapper tWarehouseAgreementMapper;
  60. /**
  61. * 查询审批流配置主
  62. *
  63. * @param id 审批流配置主ID
  64. * @return 审批流配置主
  65. */
  66. @Override
  67. public AjaxResult selectAuditPathsById(Long id) {
  68. Map<String, Object> map = new HashMap<>();
  69. AuditPaths auditPaths = auditPathsMapper.selectAuditPathsById(id);
  70. if (StringUtils.isNull(auditPaths)) {
  71. return AjaxResult.error("该审批流不存在,请确认");
  72. }
  73. map.put("auditPaths", auditPaths);
  74. AuditPathsLevels auditPathsLevels = new AuditPathsLevels();
  75. auditPathsLevels.setPathId(id);
  76. List<AuditPathsLevels> pathsLevelsList = auditPathsLevelsMapper.selectAuditPathsLevelsList(auditPathsLevels);
  77. if (StringUtils.isNotNull(pathsLevelsList)) {
  78. List<List<Long>> longs = new ArrayList<>();
  79. for (AuditPathsLevels ap : pathsLevelsList) {
  80. List<Long> longList = new ArrayList<>();
  81. if (ap.getAuditUserId() != null) {
  82. JSONArray jsonArray = JSONArray.parseArray(ap.getAuditUserId());
  83. longList = JSONObject.parseArray(jsonArray.toJSONString(), Long.class);
  84. }
  85. longs.add(longList);
  86. }
  87. map.put("auditUserIds", longs);
  88. map.put("auditPathsLevels", pathsLevelsList);
  89. }
  90. return AjaxResult.success(map);
  91. }
  92. /**
  93. * 查询审批流配置主列表
  94. *
  95. * @param auditPaths 审批流配置主
  96. * @return 审批流配置主
  97. */
  98. @Override
  99. public List<AuditPaths> selectAuditPathsList(AuditPaths auditPaths) {
  100. return auditPathsMapper.selectAuditPathsList(auditPaths);
  101. }
  102. /**
  103. * 新增审批流配置主
  104. *
  105. * @param auditPaths 审批流配置主
  106. * @return 结果
  107. */
  108. @Override
  109. @Transactional
  110. public AjaxResult insertAuditPaths(String auditPaths, String auditPathsLevels, LoginUser loginUser) {
  111. AuditPaths apath = JSONArray.parseObject(auditPaths, AuditPaths.class);
  112. if ("A".equals(apath.getStatus()) && (StringUtils.isNull(auditPathsLevels) || "[]".equals(auditPathsLevels))) {
  113. return AjaxResult.error("未找到级次信息无法提交,请确认");
  114. }
  115. long fPid = 0L;
  116. if (StringUtils.isNotNull(apath.getId())) {
  117. if ("S".equals(apath.getStatus())) {
  118. AuditPathsActs auditPathsActs = new AuditPathsActs();
  119. auditPathsActs.setPathId(apath.getId());
  120. int sum = auditPathsActsMapper.selectCountAuditPathsActs(auditPathsActs);
  121. if (sum > 0) {
  122. return AjaxResult.error("该审批配置已被使用,请取消使用后提交");
  123. }
  124. }
  125. auditPathsLevelsMapper.deleteAuditPathsLevelsBypathId(apath.getId());
  126. auditPathsMapper.updateAuditPaths(apath);
  127. fPid = apath.getId();
  128. } else {
  129. AuditPaths paths = new AuditPaths();
  130. paths.setPathName(apath.getPathName());
  131. List<AuditPaths> audiList = auditPathsMapper.selectAuditPathsList(paths);
  132. if (audiList.size() > 0) {
  133. return AjaxResult.error("审核路径名已存在,请确认");
  134. }
  135. apath.setOpUserId(loginUser.getUser().getUserId());
  136. apath.setOpDate(new Date());
  137. apath.setOpUserName(loginUser.getUsername());
  138. auditPathsMapper.insertAuditPaths(apath);
  139. fPid = apath.getId();
  140. }
  141. if (StringUtils.isNotNull(auditPathsLevels) && !"[]".equals(auditPathsLevels)) {
  142. JSONArray warehouseJSON = JSONArray.parseArray(auditPathsLevels);
  143. List<AuditPathsLevels> auditPathsLevelsList = JSONObject.parseArray(warehouseJSON.toJSONString(), AuditPathsLevels.class);
  144. if ("F".equals(auditPathsLevelsList.get(auditPathsLevelsList.size() - 1).getIffinalItem())) {
  145. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  146. return AjaxResult.error("操作失败:最后一级状态有误,请确认");
  147. }
  148. Long level = 0L;
  149. boolean last = false;
  150. for (AuditPathsLevels lev : auditPathsLevelsList) {
  151. if (StringUtils.isNull(lev.getAuditUserId())) {
  152. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  153. return AjaxResult.error("操作失败:请维护审核人");
  154. }
  155. if ("T".equals(lev.getIffinalItem()) && !last) {
  156. last = true;
  157. } else if ("T".equals(lev.getIffinalItem()) && last) {
  158. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  159. return AjaxResult.error("操作失败:最后一级只能存在一个");
  160. }
  161. level++;
  162. lev.setPathId(fPid);
  163. lev.setLevelId(level);
  164. auditPathsLevelsMapper.insertAuditPathsLevels(lev);
  165. }
  166. }
  167. return AjaxResult.success();
  168. }
  169. /**
  170. * 修改审批流配置主
  171. *
  172. * @param auditPaths 审批流配置主
  173. * @return 结果
  174. */
  175. @Override
  176. public int updateAuditPaths(AuditPaths auditPaths) {
  177. return auditPathsMapper.updateAuditPaths(auditPaths);
  178. }
  179. /**
  180. * 批量删除审批流配置主
  181. *
  182. * @param ids 需要删除的审批流配置主ID
  183. * @return 结果
  184. */
  185. @Override
  186. @Transactional
  187. public AjaxResult deleteAuditPathsByIds(Long[] ids) {
  188. int line = 0;
  189. for (Long lo : ids) {
  190. line ++;
  191. AuditPathsActs auditPathsActs = new AuditPathsActs();
  192. auditPathsActs.setPathId(lo);
  193. int sum = auditPathsActsMapper.selectCountAuditPathsActs(auditPathsActs);
  194. if (sum > 0) {
  195. return AjaxResult.error("第" + line + "行,审批已被使用无法删除");
  196. }
  197. }
  198. auditPathsMapper.deleteAuditPathsByIds(ids);
  199. return AjaxResult.success();
  200. }
  201. /**
  202. * 删除审批流配置主信息
  203. *
  204. * @param id 审批流配置主ID
  205. * @return 结果
  206. */
  207. @Override
  208. public int deleteAuditPathsById(Long id) {
  209. return auditPathsMapper.deleteAuditPathsById(id);
  210. }
  211. /**
  212. * 单据点击查看审批流
  213. * @param auditItems 条件
  214. * @return 结果
  215. */
  216. @Override
  217. public AjaxResult projectEndQueryPendingVal(AuditItems auditItems) {
  218. if (auditItems.getActId() >= 110 && auditItems.getActId() <= 140) {
  219. List<Map<String, Object>> mapList = auditItemsMapper.selectWarehouseApprover(auditItems);
  220. return AjaxResult.success(mapList);
  221. } else if (auditItems.getActId() >= 210 && auditItems.getActId() <= 230) {
  222. // 财务审批
  223. List<Map<String, Object>> mapList = auditItemsMapper.selectWarehouseApprover(auditItems);
  224. return AjaxResult.success(mapList);
  225. } else if (auditItems.getActId() >= 310 && auditItems.getActId() <= 320) {
  226. // 协议审批
  227. List<Map<String, Object>> mapList = auditItemsMapper.selectWarehouseApprover(auditItems);
  228. return AjaxResult.success(mapList);
  229. }
  230. return AjaxResult.success();
  231. }
  232. /**
  233. * 首页点击查看审批流 获取对应数据
  234. * @param auditItems 查询条件
  235. * @return 结果
  236. */
  237. @Override
  238. public AjaxResult selectAllAuditItems(AuditItems auditItems) {
  239. return AjaxResult.success(auditItemsMapper.selectAuditItems(auditItems));
  240. }
  241. /**
  242. * 审批通过
  243. * @param auditItems 审核人、单据信息
  244. * @return 结果
  245. */
  246. @Override
  247. @Transactional
  248. public AjaxResult approved(AuditItems auditItems) {
  249. long fettle = 0L;
  250. int number = 0;
  251. AuditItems item = new AuditItems();
  252. item.setBillId(auditItems.getId());
  253. item.setActId(auditItems.getActId());
  254. List<AuditItems> auditItemsList = auditItemsMapper.selectAuditItemsList(item);
  255. if (auditItemsList.size() <= 0) {
  256. return AjaxResult.error("未找到审批信息,请确认");
  257. }
  258. for (AuditItems at : auditItemsList) {
  259. if (!"S".equals(at.getAuditStatus())) {
  260. continue;
  261. }
  262. AuditItemsUsers itemsUsers = new AuditItemsUsers();
  263. itemsUsers.setPid(at.getId());
  264. List<AuditItemsUsers> auditItemsUsers = auditItemsUsersMapper.selectAuditItemsUsersList(itemsUsers);
  265. for (AuditItemsUsers au : auditItemsUsers) {
  266. if (au.getUserId().equals(auditItems.getSendUserId()) && "S".equals(au.getAuditStatus())) {
  267. number++;
  268. if (StringUtils.isEmpty(auditItems.getAuditMsg())) {
  269. at.setAuditMsg("同意");
  270. } else {
  271. at.setAuditMsg(auditItems.getAuditMsg());
  272. }
  273. at.setAuditStatus("A");
  274. at.setAuditItem(new Date());
  275. at.setAuditUserId(au.getUserId());
  276. int updateAuditItems = auditItemsMapper.updateAuditItems(at);
  277. if (updateAuditItems <= 0) {
  278. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  279. return AjaxResult.error("审批通过失败: 更新审批状态失败");
  280. }
  281. au.setAuditStatus("A");
  282. int updateAuditItemsUsers = auditItemsUsersMapper.updateAuditItemsUsers(au);
  283. if (updateAuditItemsUsers <= 0) {
  284. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  285. return AjaxResult.error("审批通过失败: 更新审批状态失败");
  286. }
  287. if (auditItems.getActId() >= 110 && auditItems.getActId() <= 140) {
  288. if ("T".equals(at.getIffinalItem())) {
  289. fettle = 6L;
  290. } else if ("F".equals(at.getIffinalItem())) {
  291. fettle = 5L;
  292. }
  293. // 仓库模块
  294. AjaxResult ajaxResult = tWarehouseBillsService.warehouseFollow(auditItems.getBillId(), fettle);
  295. String code = ajaxResult.get("code").toString();
  296. if ("500".equals(code)) {
  297. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  298. return ajaxResult;
  299. }
  300. } else if (auditItems.getActId() >= 210 && auditItems.getActId() <= 230) {
  301. // 财务模块
  302. if ("T".equals(at.getIffinalItem())) {
  303. fettle = 6L;
  304. // 更新费用明细
  305. AjaxResult ajaxResult = tFeeServiceImpl.billsfeesFollow(auditItems.getBillId());
  306. String code = ajaxResult.get("code").toString();
  307. if ("500".equals(code)) {
  308. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  309. return ajaxResult;
  310. }
  311. } else if ("F".equals(at.getIffinalItem())) {
  312. fettle = 5L;
  313. }
  314. // 变更财务状态
  315. AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
  316. String code = ajaxResult.get("code").toString();
  317. if ("500".equals(code)) {
  318. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  319. return ajaxResult;
  320. }
  321. } else if (auditItems.getActId() >= 310 && auditItems.getActId() <= 320) {
  322. // 协议模块
  323. if ("T".equals(at.getIffinalItem())) {
  324. fettle = 6L;
  325. } else if ("F".equals(at.getIffinalItem())) {
  326. fettle = 5L;
  327. }
  328. // 变更财务状态
  329. AjaxResult ajaxResult = tWarehouseAgreementService.agreementFollow(auditItems.getBillId(), fettle);
  330. String code = ajaxResult.get("code").toString();
  331. if ("500".equals(code)) {
  332. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  333. return ajaxResult;
  334. }
  335. }
  336. break;
  337. }
  338. }
  339. }
  340. if (number <= 0) {
  341. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  342. return AjaxResult.error("该审批已被操作");
  343. }
  344. return AjaxResult.success();
  345. }
  346. /**
  347. * 审批驳回
  348. * @param auditItems 审核人、单据信息
  349. * @return 结果
  350. */
  351. @Override
  352. @Transactional
  353. public AjaxResult approvalRejected(AuditItems auditItems) {
  354. long fettle = 0L;
  355. if (auditItems.getActId() >= 110 && auditItems.getActId() <= 140) {
  356. fettle = 3L;
  357. // 仓库模块
  358. AjaxResult ajaxResult = tWarehouseBillsService.warehouseFollow(auditItems.getBillId(), fettle);
  359. String code = ajaxResult.get("code").toString();
  360. if ("500".equals(code)) {
  361. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  362. }
  363. return ajaxResult;
  364. } else if (auditItems.getActId() >= 210 && auditItems.getActId() <= 230) {
  365. fettle = 3L;
  366. // 财务模块
  367. AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
  368. String code = ajaxResult.get("code").toString();
  369. if ("500".equals(code)) {
  370. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  371. }
  372. return ajaxResult;
  373. } else if (auditItems.getActId() >= 310 && auditItems.getActId() <= 320) {
  374. fettle = 3L;
  375. // 协议模块
  376. AjaxResult ajaxResult = tWarehouseAgreementService.agreementFollow(auditItems.getBillId(), fettle);
  377. String code = ajaxResult.get("code").toString();
  378. if ("500".equals(code)) {
  379. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  380. }
  381. return ajaxResult;
  382. }
  383. AuditItems item = new AuditItems();
  384. item.setBillId(auditItems.getId());
  385. item.setActId(auditItems.getActId());
  386. List<AuditItems> auditItem = auditItemsMapper.selectAuditItemsList(item);
  387. int number = 0;
  388. for (AuditItems at : auditItem) {
  389. if (!"S".equals(at.getAuditStatus())) {
  390. continue;
  391. }
  392. AuditItemsUsers itemsUsers = new AuditItemsUsers();
  393. itemsUsers.setPid(at.getId());
  394. List<AuditItemsUsers> auditItemsUsersList = auditItemsUsersMapper.selectAuditItemsUsersList(itemsUsers);
  395. for (AuditItemsUsers au : auditItemsUsersList) {
  396. if (Objects.equals(au.getUserId(), auditItems.getSendUserId())) {
  397. number++;
  398. at.setAuditStatus("B");
  399. if (auditItems.getAuditMsg() == null || "".equals(auditItems.getAuditMsg())) {
  400. at.setAuditMsg("不同意");
  401. } else {
  402. at.setAuditMsg(auditItems.getAuditMsg());
  403. }
  404. at.setAuditItem(new Date());
  405. at.setAuditUserId(au.getUserId());
  406. int updateAuditItems = auditItemsMapper.updateAuditItems(at);
  407. if (updateAuditItems <= 0) {
  408. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  409. return AjaxResult.error("审批驳回失败: 更新审批状态失败");
  410. }
  411. au.setAuditStatus("B");
  412. int updateAuditItemUser = auditItemsUsersMapper.updateAuditItemsUsers(au);
  413. if (updateAuditItemUser <= 0) {
  414. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  415. return AjaxResult.error("审批驳回失败: 更新审批状态失败");
  416. }
  417. if ("F".equals(at.getIffinalItem())) {
  418. int deleteNum = auditItemsMapper.deleteUpLevelId(at);
  419. if (deleteNum <= 0) {
  420. return AjaxResult.error("未找到后续除审批信息");
  421. }
  422. }
  423. }
  424. }
  425. }
  426. if (number <= 0) {
  427. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  428. return AjaxResult.error("该审批已被操作");
  429. }
  430. return AjaxResult.success();
  431. }
  432. /**
  433. * 审批撤销
  434. * @param auditItems 审核人、单据信息
  435. * @return
  436. */
  437. @Override
  438. @Transactional
  439. public AjaxResult revoke(AuditItems auditItems) {
  440. long fettle = 0L;
  441. if (auditItems.getActId() >= 110 && auditItems.getActId() <= 140) {
  442. fettle = 2L;
  443. // 查询仓库状态
  444. TWarehouseBills tWarehouseBills= tWarehouseBillsMapper.selectTWarehousebillsById(auditItems.getBillId());
  445. if(tWarehouseBills.getfBillstatus().equals("5") || tWarehouseBills.getfBillstatus().equals("6")){
  446. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  447. return AjaxResult.error("审批撤销失败: 已经过审批");
  448. }
  449. // 仓库模块
  450. AjaxResult ajaxResult = tWarehouseBillsService.warehouseFollow(auditItems.getBillId(), fettle);
  451. String code = ajaxResult.get("code").toString();
  452. if ("500".equals(code)) {
  453. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  454. return AjaxResult.error("审批撤销失败: 更新审批状态失败");
  455. }
  456. } else if (auditItems.getActId() >= 210 && auditItems.getActId() <= 230) {
  457. fettle = 2L;
  458. // 查询财务状态
  459. TFee tFee= tFeeMapper.selectTFeeById(auditItems.getBillId());
  460. if(tFee.getfBillstatus().equals("5") || tFee.getfBillstatus().equals("6")){
  461. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  462. return AjaxResult.error("审批撤销失败: 已经过审批");
  463. }
  464. // 财务模块
  465. AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
  466. String code = ajaxResult.get("code").toString();
  467. if ("500".equals(code)) {
  468. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  469. return AjaxResult.error("审批撤销失败: 更新审批状态失败");
  470. }
  471. } else if (auditItems.getActId() >= 310 && auditItems.getActId() <= 320) {
  472. fettle = 2L;
  473. // 查询协议状态
  474. TWarehouseAgreement tWarehouseAgreement=tWarehouseAgreementMapper.selectTWarehouseAgreementById(auditItems.getBillId());
  475. if(tWarehouseAgreement.getfBillstatus().equals("5") || tWarehouseAgreement.getfBillstatus().equals("6")){
  476. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  477. return AjaxResult.error("审批撤销失败: 已经过审批");
  478. }
  479. // 协议模块
  480. AjaxResult ajaxResult = tWarehouseAgreementService.agreementFollow(auditItems.getBillId(), fettle);
  481. String code = ajaxResult.get("code").toString();
  482. if ("500".equals(code)) {
  483. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  484. return AjaxResult.error("审批撤销失败: 更新审批状态失败");
  485. }
  486. }
  487. AuditItems item = new AuditItems();
  488. item.setBillId(auditItems.getId());
  489. item.setActId(auditItems.getActId());
  490. int deleteNum = auditItemsMapper.deletePurchaseApproval(item);
  491. if (deleteNum == 0) {
  492. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  493. return AjaxResult.error("审批撤销失败: 更新审批状态失败");
  494. }
  495. return AjaxResult.success();
  496. }
  497. }