TWarehousebillsModifyServiceImpl.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498
  1. package com.ruoyi.warehouseBusiness.service.impl;
  2. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  3. import com.ruoyi.approvalFlow.domain.AuditItems;
  4. import com.ruoyi.approvalFlow.service.impl.AuditItemsServiceImpl;
  5. import com.ruoyi.basicData.domain.TCorps;
  6. import com.ruoyi.basicData.domain.TFees;
  7. import com.ruoyi.basicData.mapper.TCorpsMapper;
  8. import com.ruoyi.basicData.mapper.TFeesMapper;
  9. import com.ruoyi.basicData.mapper.TGoodsMapper;
  10. import com.ruoyi.basicData.mapper.TWarehouseMapper;
  11. import com.ruoyi.common.core.domain.AjaxResult;
  12. import com.ruoyi.common.core.domain.entity.TWarehouse;
  13. import com.ruoyi.common.core.domain.model.LoginUser;
  14. import com.ruoyi.common.exception.WarehouseException;
  15. import com.ruoyi.common.utils.SecurityUtils;
  16. import com.ruoyi.system.domain.SysConfig;
  17. import com.ruoyi.system.mapper.SysConfigMapper;
  18. import com.ruoyi.warehouseBusiness.domain.*;
  19. import com.ruoyi.warehouseBusiness.domain.dto.WarehousebillsModifyDTO;
  20. import com.ruoyi.warehouseBusiness.domain.enums.FeesTypeEnum;
  21. import com.ruoyi.warehouseBusiness.domain.enums.WarehouseActIdEnum;
  22. import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
  23. import com.ruoyi.warehouseBusiness.domain.vo.WarehousebillsModifyVO;
  24. import com.ruoyi.warehouseBusiness.mapper.*;
  25. import com.ruoyi.warehouseBusiness.service.ITWarehousebillsModifyService;
  26. import org.springframework.beans.BeanUtils;
  27. import org.springframework.beans.factory.annotation.Autowired;
  28. import org.springframework.stereotype.Service;
  29. import org.springframework.transaction.annotation.Transactional;
  30. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  31. import java.math.BigDecimal;
  32. import java.util.*;
  33. import java.util.stream.Collectors;
  34. import static com.ruoyi.common.core.text.Convert.toLongArray;
  35. /**
  36. * 仓库费用变更主表Service业务层处理
  37. *
  38. * @author ruoyi
  39. * @date 2021-10-27
  40. */
  41. @Service
  42. public class TWarehousebillsModifyServiceImpl implements ITWarehousebillsModifyService {
  43. @Autowired
  44. private TFeesMapper feesMapper;
  45. @Autowired
  46. private TGoodsMapper goodsMapper;
  47. @Autowired
  48. private TCorpsMapper corpsMapper;
  49. @Autowired
  50. private SysConfigMapper sysConfigMapper;
  51. @Autowired
  52. private BillnoDelMapper billnoDelMapper;
  53. @Autowired
  54. private TWarehouseMapper warehouseMapper;
  55. @Autowired
  56. private AuditItemsServiceImpl auditItemsService;
  57. @Autowired
  58. private TWarehouseBillsMapper warehousebillsmapper;
  59. @Autowired
  60. private BillnoSerialServiceImpl billnoSerialService;
  61. @Autowired
  62. private TWarehousebillsfeesMapper warehousebillsfeesMapper;
  63. @Autowired
  64. private TWarehousebillsModifyMapper tWarehousebillsModifyMapper;
  65. @Autowired
  66. private TWarehousebillsfeesModifyMapper tWarehousebillsfeesModifyMapper;
  67. /**
  68. * 查询仓库主(出入库)
  69. *
  70. * @param fId 仓库主(出入库)ID
  71. * @return 仓库主(出入库)
  72. */
  73. @Override
  74. public WarehousebillsModifyVO selectTWarehousebillsModifyById(Long fId) {
  75. TWarehousebillsModify warehousebillsModify = tWarehousebillsModifyMapper.selectTWarehousebillsModifyById(fId);
  76. if (Objects.isNull(warehousebillsModify)) {
  77. throw new WarehouseException("找不到信息");
  78. }
  79. WarehousebillsModifyVO warehousebillsModifyVO = new WarehousebillsModifyVO();
  80. // 根据主表id查出明细信息
  81. List<TWarehousebillsfeesModify> feesModifies = tWarehousebillsfeesModifyMapper.selectListByPid(fId);
  82. if (CollectionUtils.isNotEmpty(feesModifies)) {
  83. // 查出所有费用信息
  84. warehousebillsModifyVO.setFeesList(feesMapper.selectTFeesList(new TFees()));
  85. // 查出所有客户信息
  86. warehousebillsModifyVO.setCorpsList(corpsMapper.selectTCorpsList(new TCorps()));
  87. warehousebillsModifyVO.setWarehousebillsfeesModifyList(feesModifies);
  88. }
  89. // 转VO
  90. BeanUtils.copyProperties(warehousebillsModify, warehousebillsModifyVO);
  91. // 转化客户、商品、仓库名称
  92. TCorps tCorps = corpsMapper.selectTCorpsById(warehousebillsModifyVO.getfCorpid());
  93. if (Objects.nonNull(tCorps)) {
  94. warehousebillsModifyVO.setCorpName(tCorps.getfName());
  95. }
  96. TWarehouse tWarehouse = warehouseMapper.selectTWarehouseById(warehousebillsModify.getfWarehouseid());
  97. if (Objects.nonNull(tWarehouse)) {
  98. warehousebillsModifyVO.setWarehouseName(tWarehouse.getfName());
  99. }
  100. // 查询原仓储费用
  101. TWarehousebillsfees tWarehousebillsfees = new TWarehousebillsfees();
  102. tWarehousebillsfees.setfPid(warehousebillsModify.getfPid());
  103. tWarehousebillsfees.setfDc(warehousebillsModify.getfDc());
  104. List<TWarehousebillsfees> warehousebillsfees = warehousebillsfeesMapper.selectTWarehousebillsfeesList(tWarehousebillsfees);
  105. if (CollectionUtils.isNotEmpty(warehousebillsfees)) {
  106. warehousebillsModifyVO.settWarehousebillsfees(warehousebillsfees);
  107. }
  108. return warehousebillsModifyVO;
  109. }
  110. /**
  111. * 查询仓库主(出入库)列表
  112. *
  113. * @param warehousebillsModifyDto 查询条件
  114. * @return 仓库主(出入库)
  115. */
  116. @Override
  117. public List<TWarehousebillsModify> selectTWarehousebillsModifyList(WarehousebillsModifyDTO warehousebillsModifyDto) {
  118. // 查询列表信息
  119. List<TWarehousebillsModify> warehousebillsModifyList = tWarehousebillsModifyMapper.selectTWarehousebillsModifyList(warehousebillsModifyDto);
  120. if (CollectionUtils.isNotEmpty(warehousebillsModifyList)) {
  121. // 取出客户集合信息
  122. List<Long> corpIds = warehousebillsModifyList.stream().filter(li -> Objects.nonNull(li.getfCorpid()))
  123. .map(TWarehousebillsModify::getfCorpid).distinct().collect(Collectors.toList());
  124. List<TCorps> corpsList = Collections.emptyList();
  125. if (CollectionUtils.isNotEmpty(corpIds)) {
  126. corpsList = corpsMapper.selectByIds(corpIds);
  127. }
  128. // 遍历赋值汉字
  129. for (TWarehousebillsModify vo : warehousebillsModifyList) {
  130. // 过滤客户信息
  131. Optional<TCorps> corpFirst = corpsList.stream().filter(li -> Objects.equals(li.getfId(), vo.getfCorpid())).findFirst();
  132. corpFirst.ifPresent(tCorps -> vo.setCorpName(tCorps.getfName()));
  133. }
  134. }
  135. return warehousebillsModifyList;
  136. }
  137. /**
  138. * 暂存
  139. *
  140. * @param tWarehousebillsModify 仓库主(出入库)
  141. * @return 结果
  142. */
  143. @Override
  144. @Transactional(rollbackFor = Exception.class)
  145. public AjaxResult saveTWarehousebillsModify(WarehousebillsModifyDTO tWarehousebillsModify) {
  146. // 获取当前登陆人
  147. String username = SecurityUtils.getUsername();
  148. // 赋值上级id
  149. tWarehousebillsModify.setfPid(tWarehousebillsModify.getWarehouseId());
  150. if (Objects.isNull(tWarehousebillsModify.getfId())) {
  151. // 获取编号
  152. String billNo = billnoSerialService.getBillNo(WarehouseTypeEnum.FYBG_NO.getType(), new Date());
  153. tWarehousebillsModify.setfBillno(billNo);
  154. tWarehousebillsModify.setCreateBy(username);
  155. tWarehousebillsModify.setCreateTime(new Date());
  156. tWarehousebillsModify.setfStatus(FeesTypeEnum.SAVE.getType());
  157. tWarehousebillsModifyMapper.insertTWarehousebillsModify(tWarehousebillsModify);
  158. } else {
  159. tWarehousebillsModify.setUpdateTime(new Date());
  160. tWarehousebillsModify.setUpdateBy(username);
  161. tWarehousebillsModifyMapper.updateTWarehousebillsModify(tWarehousebillsModify);
  162. }
  163. // 追加费用信息
  164. List<TWarehousebillsfeesModify> feesItemList = tWarehousebillsModify.getItems();
  165. feesItemList.forEach(li -> {
  166. li.setfPid(tWarehousebillsModify.getfId());
  167. li.setfMblno(tWarehousebillsModify.getfMblno());
  168. li.setfSrcTypeId(Integer.parseInt(FeesTypeEnum.FEE_CHANGES.getType()));
  169. if (Objects.isNull(li.getfId())) {
  170. li.setCreateTime(new Date());
  171. li.setCreateBy(username);
  172. tWarehousebillsfeesModifyMapper.insertTWarehousebillsfeesModify(li);
  173. } else {
  174. li.setUpdateTime(new Date());
  175. li.setUpdateBy(username);
  176. tWarehousebillsfeesModifyMapper.updateTWarehousebillsfeesModify(li);
  177. }
  178. });
  179. return AjaxResult.success(tWarehousebillsModify);
  180. }
  181. /**
  182. * 请核
  183. *
  184. * @param tWarehousebillsModify 仓库主(出入库)
  185. * @return 结果
  186. */
  187. @Override
  188. @Transactional(rollbackFor = Exception.class)
  189. public AjaxResult submitTWarehousebillsModify(WarehousebillsModifyDTO tWarehousebillsModify) {
  190. // 获取当前登陆人
  191. LoginUser loginUser = SecurityUtils.getLoginUser();
  192. String username = loginUser.getUsername();
  193. // 赋值上级id
  194. tWarehousebillsModify.setfPid(tWarehousebillsModify.getWarehouseId());
  195. SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique("warehouse.costModify.ApprovalFlow");
  196. boolean isAudit = Objects.nonNull(sysConfig) && "0".equals(sysConfig.getConfigValue());
  197. tWarehousebillsModify.setfStatus(FeesTypeEnum.SUBMIT.getType());
  198. if (Objects.isNull(tWarehousebillsModify.getfId())) {
  199. // 获取编号
  200. String billNo = billnoSerialService.getBillNo(WarehouseTypeEnum.FYBG_NO.getType(), new Date());
  201. tWarehousebillsModify.setfBillno(billNo);
  202. tWarehousebillsModify.setCreateTime(new Date());
  203. tWarehousebillsModify.setCreateBy(username);
  204. tWarehousebillsModifyMapper.insertTWarehousebillsModify(tWarehousebillsModify);
  205. } else {
  206. tWarehousebillsModify.setUpdateTime(new Date());
  207. tWarehousebillsModify.setUpdateBy(username);
  208. tWarehousebillsModifyMapper.updateTWarehousebillsModify(tWarehousebillsModify);
  209. }
  210. // 删除需要删除的子订单
  211. if (CollectionUtils.isNotEmpty(tWarehousebillsModify.getItemDels())) {
  212. tWarehousebillsfeesModifyMapper.deleteTWarehousebillsfeesModifyByIds(tWarehousebillsModify.getItemDels());
  213. }
  214. // 追加费用信息
  215. List<TWarehousebillsfeesModify> feesItemList = tWarehousebillsModify.getItems();
  216. feesItemList.forEach(li -> {
  217. li.setfPid(tWarehousebillsModify.getfId());
  218. li.setfMblno(tWarehousebillsModify.getfMblno());
  219. li.setfSrcTypeId(Integer.parseInt(FeesTypeEnum.FEE_CHANGES.getType()));
  220. li.setfStatus(Long.parseLong(tWarehousebillsModify.getfStatus()));
  221. if (Objects.isNull(li.getfId())) {
  222. li.setCreateTime(new Date());
  223. li.setCreateBy(username);
  224. tWarehousebillsfeesModifyMapper.insertTWarehousebillsfeesModify(li);
  225. } else {
  226. li.setUpdateTime(new Date());
  227. li.setUpdateBy(username);
  228. tWarehousebillsfeesModifyMapper.updateTWarehousebillsfeesModify(li);
  229. }
  230. });
  231. // 是否需要启用审批流
  232. if (isAudit) {
  233. initiateApprovalFlow(tWarehousebillsModify, loginUser);
  234. return AjaxResult.success();
  235. }
  236. // 直接算作审核完成
  237. additionalFeeInformation(tWarehousebillsModify.getfId(), WarehouseTypeEnum.APPROVE);
  238. return AjaxResult.success();
  239. }
  240. /**
  241. * 根据id追加对应仓库费用信息
  242. *
  243. * @param id 费用变更主表id
  244. * @param typeEnum 更新状态
  245. */
  246. public void additionalFeeInformation(Long id, WarehouseTypeEnum typeEnum) {
  247. // 查询费用变更主表
  248. TWarehousebillsModify warehousebillsModify = tWarehousebillsModifyMapper.selectTWarehousebillsModifyById(id);
  249. if (Objects.isNull(warehousebillsModify)) {
  250. throw new WarehouseException("找不到费用变更信息");
  251. }
  252. // 更新主表状态
  253. warehousebillsModify.setUpdateTime(new Date());
  254. warehousebillsModify.setUpdateBy(SecurityUtils.getUsername());
  255. warehousebillsModify.setfStatus(typeEnum.getType());
  256. tWarehousebillsModifyMapper.updateTWarehousebillsModify(warehousebillsModify);
  257. // 查询费用变更明细表数据
  258. TWarehousebillsfeesModify tWarehousebillsfeesModify = new TWarehousebillsfeesModify();
  259. tWarehousebillsfeesModify.setfPid(id);
  260. List<TWarehousebillsfeesModify> feesList = tWarehousebillsfeesModifyMapper.selectTWarehousebillsfeesModifyList(tWarehousebillsfeesModify);
  261. feesList.forEach(li -> {
  262. // 更新明细表状态
  263. li.setUpdateTime(new Date());
  264. li.setfReviewDate(new Date());
  265. li.setUpdateBy(SecurityUtils.getUsername());
  266. li.setfStatus(Long.parseLong(typeEnum.getType()));
  267. li.setfBillstatus(Long.parseLong(typeEnum.getType()));
  268. if (typeEnum.getType().equals(WarehouseTypeEnum.APPROVE.getType())) {
  269. // 往仓储费用表追加数据
  270. TWarehousebillsfees warehousebillsfees = new TWarehousebillsfees();
  271. BeanUtils.copyProperties(li, warehousebillsfees);
  272. warehousebillsfees.setfId(null);
  273. warehousebillsfees.setfStatus(typeEnum.getType());
  274. warehousebillsfees.setfPid(warehousebillsModify.getfPid());
  275. warehousebillsfees.setfSrcTypeId(Long.parseLong(FeesTypeEnum.FEE_CHANGES.getType()));
  276. // 制空内容
  277. warehousebillsfees.setfAccamount(BigDecimal.ZERO);
  278. warehousebillsfees.setfAskamount(BigDecimal.ZERO);
  279. warehousebillsfees.setfInvamount(BigDecimal.ZERO);
  280. warehousebillsfees.setfStlamount(BigDecimal.ZERO);
  281. warehousebillsfees.setfAccamountDate(null);
  282. warehousebillsfees.setfStatementNo(null);
  283. warehousebillsfees.setfStlamountNo(null);
  284. warehousebillsfees.setfInvnos(null);
  285. warehousebillsfeesMapper.insertTWarehousebillsfees(warehousebillsfees);
  286. li.setSrcId(warehousebillsfees.getfId());
  287. }
  288. tWarehousebillsfeesModifyMapper.updateTWarehousebillsfeesModify(li);
  289. });
  290. }
  291. /**
  292. * 费用变更发起审批流
  293. *
  294. * @param tWarehousebillsModify 费用变更信息
  295. * @param loginUser 当前登录用户
  296. */
  297. private void initiateApprovalFlow(WarehousebillsModifyDTO tWarehousebillsModify, LoginUser loginUser) {
  298. AuditItems auditItems = new AuditItems();
  299. auditItems.setLevelId(0L);
  300. auditItems.setBillId(tWarehousebillsModify.getfId());
  301. auditItems.setActId(WarehouseActIdEnum.FEE_CHANGES.getActId().longValue());
  302. auditItems.setIffinalItem("F");
  303. auditItems.setBillNo(tWarehousebillsModify.getfBillno());
  304. auditItems.setRefno1(tWarehousebillsModify.getfCorpid().toString());
  305. auditItems.setRefno2(WarehouseTypeEnum.FYBG_NO.getType());
  306. auditItems.setRefno3(tWarehousebillsModify.getfMblno());
  307. auditItems.setSendUserId(loginUser.getUser().getUserId());
  308. auditItems.setSendName(loginUser.getUsername());
  309. auditItems.setSendTime(new Date());
  310. auditItems.setAuditUserId(loginUser.getUser().getUserId());
  311. auditItems.setAuditItem(new Date());
  312. auditItems.setAuditOpTime(new Date());
  313. auditItems.setAuditMsg("提交");
  314. auditItems.setAuditStatus("O");
  315. auditItems.setFidStatus("f_status");
  316. AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
  317. String code = approvalFlow.get("code").toString();
  318. if ("500".equals(code)) {
  319. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  320. }
  321. }
  322. /**
  323. * 批量删除仓库主(出入库)
  324. *
  325. * @param fIds 需要删除的仓库主(出入库)ID
  326. * @return 结果
  327. */
  328. @Override
  329. @Transactional(rollbackFor = Exception.class)
  330. public AjaxResult deleteTWarehousebillsModifyByIds(String fIds) {
  331. List<Long> ids = Arrays.asList(toLongArray(fIds));
  332. if (CollectionUtils.isEmpty(ids)) {
  333. throw new WarehouseException("缺少删除参数");
  334. }
  335. // 判断这些状态是否存在不为暂存的
  336. long count = tWarehousebillsfeesModifyMapper.selectStatusByIds(ids).stream()
  337. .filter(li -> FeesTypeEnum.fromType(String.valueOf(li.getfStatus())).isDelete()).count();
  338. if (count > 0) {
  339. throw new WarehouseException("删除数据状态不对");
  340. }
  341. // 查出需要回收的编号
  342. List<String> billNos = tWarehousebillsModifyMapper.selectBillNoByIds(ids);
  343. billNos.forEach(no -> {
  344. // 2、业务编号、客存编号 放入 billno_del
  345. BillnoDel billnoDel = new BillnoDel();
  346. billnoDel.setBillType(WarehouseTypeEnum.SJRK_NO.getType());
  347. billnoDel.setBillNo(no);
  348. billnoDelMapper.insertBillnoDel(billnoDel);
  349. });
  350. tWarehousebillsModifyMapper.deleteTWarehousebillsModifyByIds(ids);
  351. tWarehousebillsfeesModifyMapper.deleteByPid(ids);
  352. return AjaxResult.success();
  353. }
  354. /**
  355. * 删除仓库主(出入库)信息
  356. *
  357. * @param fId 仓库主(出入库)ID
  358. * @return 结果
  359. */
  360. @Override
  361. public int deleteTWarehousebillsModifyById(Long fId) {
  362. return tWarehousebillsModifyMapper.deleteTWarehousebillsModifyById(fId);
  363. }
  364. /**
  365. * 根据仓库id、费用类型查询费用信息
  366. *
  367. * @param fId 仓库id
  368. * @param type 费用类型
  369. * @return
  370. */
  371. @Override
  372. public AjaxResult selectTWarehousebillsFeesById(Long fId, String type) {
  373. // 查询仓储信息
  374. TWarehouseBills warehouseBills = warehousebillsmapper.selectTWarehousebillsById(fId);
  375. // 如果未查出仓储信息或仓储状态为未审核通过则抛出异常
  376. if (Objects.isNull(warehouseBills) || Objects.equals(warehouseBills.getfBillstatus(), WarehouseTypeEnum.APPROVE.getType())) {
  377. throw new WarehouseException("未找到仓储信息或仓储信息未审核通过");
  378. }
  379. WarehousebillsModifyVO modifyVO = new WarehousebillsModifyVO();
  380. // 查询所有费用信息
  381. TWarehousebillsfees warehousebillsfees = new TWarehousebillsfees();
  382. warehousebillsfees.setfPid(fId);
  383. warehousebillsfees.setfDc(type);
  384. List<TWarehousebillsfees> feesList = warehousebillsfeesMapper.selectTWarehousebillsfeesList(warehousebillsfees);
  385. if (CollectionUtils.isNotEmpty(feesList)) {
  386. modifyVO.settWarehousebillsfees(feesList);
  387. }
  388. // 组装主表字段
  389. modifyVO.setfPid(warehouseBills.getfId());
  390. modifyVO.setfMblno(warehouseBills.getfMblno());
  391. modifyVO.setfMarks(warehouseBills.getfMarks());
  392. modifyVO.setfCorpid(warehouseBills.getfCorpid());
  393. modifyVO.setfBstime(warehouseBills.getfBsdate());
  394. modifyVO.setfGoodsid(warehouseBills.getfProductName());
  395. modifyVO.setfBilltype(warehouseBills.getfBilltype());
  396. modifyVO.setfWarehouseid(warehouseBills.getfWarehouseid());
  397. modifyVO.setfVslid(warehouseBills.getfVslid());
  398. modifyVO.setfVoyid(warehouseBills.getfVoyid());
  399. // 转化客户、商品、仓库名称
  400. TCorps tCorps = corpsMapper.selectTCorpsById(modifyVO.getfCorpid());
  401. if (Objects.nonNull(tCorps)) {
  402. modifyVO.setCorpName(tCorps.getfName());
  403. }
  404. TWarehouse tWarehouse = warehouseMapper.selectTWarehouseById(modifyVO.getfWarehouseid());
  405. if (Objects.nonNull(tWarehouse)) {
  406. modifyVO.setWarehouseName(tWarehouse.getfName());
  407. }
  408. return AjaxResult.success(modifyVO);
  409. }
  410. /**
  411. * 已经审核完成,要撤回
  412. *
  413. * @param id 主表id
  414. * @return
  415. */
  416. @Override
  417. @Transactional(rollbackFor = Exception.class)
  418. public AjaxResult revokeReviewedById(Long id) {
  419. TWarehousebillsModify warehousebillsModify = tWarehousebillsModifyMapper.selectTWarehousebillsModifyById(id);
  420. if (Objects.isNull(warehousebillsModify) || !warehousebillsModify.getfStatus().equals(FeesTypeEnum.APPROVE.getType())) {
  421. throw new WarehouseException("无效id或未审核完成");
  422. }
  423. List<TWarehousebillsfeesModify> warehousebillsfeesModifies = tWarehousebillsfeesModifyMapper.selectListByPid(id);
  424. warehousebillsfeesModifies.forEach(li -> {
  425. warehousebillsfeesMapper.deleteTWarehousebillsfeesById(li.getSrcId());
  426. });
  427. warehousebillsModify.setfStatus(FeesTypeEnum.SAVE.getType());
  428. warehousebillsModify.setUpdateTime(new Date());
  429. warehousebillsModify.setUpdateBy(SecurityUtils.getUsername());
  430. tWarehousebillsModifyMapper.updateTWarehousebillsModify(warehousebillsModify);
  431. return AjaxResult.success();
  432. }
  433. /**
  434. * 撤回已提交的审批
  435. *
  436. * @param id
  437. */
  438. @Transactional(rollbackFor = Exception.class)
  439. public void withdrawalApprovalById(Long id) {
  440. TWarehousebillsModify warehousebillsModify = tWarehousebillsModifyMapper.selectTWarehousebillsModifyById(id);
  441. if (Objects.isNull(warehousebillsModify)) {
  442. throw new WarehouseException("无效id");
  443. }
  444. List<TWarehousebillsfeesModify> warehousebillsfeesModifies = tWarehousebillsfeesModifyMapper.selectListByPid(id);
  445. long count = warehousebillsfeesModifies.stream()
  446. .filter(item -> !Objects.equals(item.getfStatus(), Long.parseLong(FeesTypeEnum.SUBMIT.getType())))
  447. .count();
  448. if (count > 0) {
  449. throw new WarehouseException("该请核已被操作");
  450. }
  451. // 获取当前登陆人
  452. String username = SecurityUtils.getUsername();
  453. // 更新主表
  454. warehousebillsModify.setUpdateBy(username);
  455. warehousebillsModify.setUpdateTime(new Date());
  456. warehousebillsModify.setfStatus(FeesTypeEnum.SAVE.getType());
  457. tWarehousebillsModifyMapper.updateTWarehousebillsModify(warehousebillsModify);
  458. // 更新明细表
  459. warehousebillsfeesModifies.forEach(li -> {
  460. li.setUpdateBy(username);
  461. li.setUpdateTime(new Date());
  462. li.setfStatus(Long.parseLong(FeesTypeEnum.SAVE.getType()));
  463. tWarehousebillsfeesModifyMapper.updateTWarehousebillsfeesModify(li);
  464. });
  465. }
  466. }