AuditPathsServiceImpl.java 63 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252
  1. package com.ruoyi.approvalFlow.service.impl;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
  5. import com.ruoyi.approvalFlow.domain.*;
  6. import com.ruoyi.approvalFlow.domain.dto.AppAuditItemDTO;
  7. import com.ruoyi.approvalFlow.domain.enums.AuditStateEnum;
  8. import com.ruoyi.approvalFlow.domain.vo.AppAuditItemVO;
  9. import com.ruoyi.approvalFlow.mapper.*;
  10. import com.ruoyi.approvalFlow.service.IAuditPathsService;
  11. import com.ruoyi.basicData.domain.TFees;
  12. import com.ruoyi.basicData.mapper.TFeesMapper;
  13. import com.ruoyi.common.core.domain.AjaxResult;
  14. import com.ruoyi.common.core.domain.model.LoginUser;
  15. import com.ruoyi.common.exception.WarehouseException;
  16. import com.ruoyi.common.utils.DateUtils;
  17. import com.ruoyi.common.utils.DictUtils;
  18. import com.ruoyi.common.utils.StringUtils;
  19. import com.ruoyi.finance.domain.TFee;
  20. import com.ruoyi.finance.mapper.TFeeMapper;
  21. import com.ruoyi.finance.service.impl.TFeeServiceImpl;
  22. import com.ruoyi.reportManagement.domain.TWhgenleg;
  23. import com.ruoyi.reportManagement.mapper.TWhgenlegMapper;
  24. import com.ruoyi.warehouseBusiness.component.CalculationWarehouseService;
  25. import com.ruoyi.warehouseBusiness.domain.TWarehouseAgreement;
  26. import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
  27. import com.ruoyi.warehouseBusiness.domain.TWarehousebillsfees;
  28. import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
  29. import com.ruoyi.warehouseBusiness.domain.enums.WarehouseActIdEnum;
  30. import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
  31. import com.ruoyi.warehouseBusiness.mapper.TWarehouseAgreementMapper;
  32. import com.ruoyi.warehouseBusiness.mapper.TWarehouseBillsMapper;
  33. import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsfeesMapper;
  34. import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsitemsMapper;
  35. import com.ruoyi.warehouseBusiness.service.impl.TWarehouseAgreementServiceImpl;
  36. import com.ruoyi.warehouseBusiness.service.impl.TWarehouseBillsServiceImpl;
  37. import com.ruoyi.warehouseBusiness.service.impl.TWarehousebillsModifyServiceImpl;
  38. import org.apache.commons.compress.utils.Lists;
  39. import org.springframework.beans.factory.annotation.Autowired;
  40. import org.springframework.stereotype.Service;
  41. import org.springframework.transaction.annotation.Transactional;
  42. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  43. import java.util.*;
  44. import static java.util.stream.Collectors.toList;
  45. /**
  46. * 审批流配置主Service业务层处理
  47. *
  48. * @author ruoyi
  49. * @date 2021-01-21
  50. */
  51. @Service
  52. public class AuditPathsServiceImpl implements IAuditPathsService {
  53. @Autowired
  54. private AuditPathsMapper auditPathsMapper;
  55. @Autowired
  56. private AuditItemsMapper auditItemsMapper;
  57. @Autowired
  58. private TWhgenlegMapper tWhgenlegMapper;
  59. @Autowired
  60. private AuditItemsUsersMapper auditItemsUsersMapper;
  61. @Autowired
  62. private AuditPathsActsMapper auditPathsActsMapper;
  63. @Autowired
  64. private AuditPathsLevelsMapper auditPathsLevelsMapper;
  65. @Autowired
  66. private TWarehouseBillsMapper tWarehouseBillsMapper;
  67. @Autowired
  68. private TWarehouseBillsServiceImpl tWarehouseBillsService;
  69. @Autowired
  70. private TWarehousebillsfeesMapper tWarehousebillsfeesMapper;
  71. @Autowired
  72. private TWarehousebillsitemsMapper tWarehousebillsitemsMapper;
  73. @Autowired
  74. private TFeeServiceImpl tFeeServiceImpl;
  75. @Autowired
  76. private TWarehouseAgreementServiceImpl tWarehouseAgreementService;
  77. @Autowired
  78. private TWarehousebillsModifyServiceImpl warehousebillsModifyService;
  79. @Autowired
  80. private TFeeMapper tFeeMapper;
  81. @Autowired
  82. private TFeesMapper feesMapper;
  83. @Autowired
  84. private TWarehouseAgreementMapper tWarehouseAgreementMapper;
  85. @Autowired
  86. private AuditItemsDoMapper auditItemsDoMapper;
  87. @Autowired
  88. private CalculationWarehouseService calculationWarehouseService;
  89. /**
  90. * 查询审批流配置主
  91. *
  92. * @param id 审批流配置主ID
  93. * @return 审批流配置主
  94. */
  95. @Override
  96. public AjaxResult selectAuditPathsById(Long id) {
  97. Map<String, Object> map = new HashMap<>();
  98. AuditPaths auditPaths = auditPathsMapper.selectAuditPathsById(id);
  99. if (StringUtils.isNull(auditPaths)) {
  100. return AjaxResult.error("该审批流不存在,请确认");
  101. }
  102. map.put("auditPaths", auditPaths);
  103. AuditPathsLevels auditPathsLevels = new AuditPathsLevels();
  104. auditPathsLevels.setPathId(id);
  105. List<AuditPathsLevels> pathsLevelsList = auditPathsLevelsMapper.selectAuditPathsLevelsList(auditPathsLevels);
  106. if (StringUtils.isNotNull(pathsLevelsList)) {
  107. List<List<Long>> longs = new ArrayList<>();
  108. for (AuditPathsLevels ap : pathsLevelsList) {
  109. List<Long> longList = new ArrayList<>();
  110. if (ap.getAuditUserId() != null) {
  111. JSONArray jsonArray = JSONArray.parseArray(ap.getAuditUserId());
  112. longList = JSONObject.parseArray(jsonArray.toJSONString(), Long.class);
  113. }
  114. longs.add(longList);
  115. }
  116. map.put("auditUserIds", longs);
  117. map.put("auditPathsLevels", pathsLevelsList);
  118. }
  119. return AjaxResult.success(map);
  120. }
  121. /**
  122. * 查询审批流配置主列表
  123. *
  124. * @param auditPaths 审批流配置主
  125. * @return 审批流配置主
  126. */
  127. @Override
  128. public List<AuditPaths> selectAuditPathsList(AuditPaths auditPaths) {
  129. return auditPathsMapper.selectAuditPathsList(auditPaths);
  130. }
  131. /**
  132. * 新增审批流配置主
  133. *
  134. * @param auditPaths 审批流配置主
  135. * @return 结果
  136. */
  137. @Override
  138. @Transactional
  139. public AjaxResult insertAuditPaths(String auditPaths, String auditPathsLevels, LoginUser loginUser) {
  140. AuditPaths apath = JSONArray.parseObject(auditPaths, AuditPaths.class);
  141. if ("A".equals(apath.getStatus()) && (StringUtils.isNull(auditPathsLevels) || "[]".equals(auditPathsLevels))) {
  142. return AjaxResult.error("未找到级次信息无法提交,请确认");
  143. }
  144. long fPid = 0L;
  145. if (StringUtils.isNotNull(apath.getId())) {
  146. if ("S".equals(apath.getStatus())) {
  147. AuditPathsActs auditPathsActs = new AuditPathsActs();
  148. auditPathsActs.setPathId(apath.getId());
  149. int sum = auditPathsActsMapper.selectCountAuditPathsActs(auditPathsActs);
  150. if (sum > 0) {
  151. return AjaxResult.error("该审批配置已被使用,请取消使用后提交");
  152. }
  153. }
  154. auditPathsLevelsMapper.deleteAuditPathsLevelsBypathId(apath.getId());
  155. auditPathsMapper.updateAuditPaths(apath);
  156. fPid = apath.getId();
  157. } else {
  158. AuditPaths paths = new AuditPaths();
  159. paths.setPathName(apath.getPathName());
  160. List<AuditPaths> audiList = auditPathsMapper.selectAuditPathsList(paths);
  161. if (audiList.size() > 0) {
  162. return AjaxResult.error("审核路径名已存在,请确认");
  163. }
  164. apath.setOpUserId(loginUser.getUser().getUserId());
  165. apath.setOpDate(new Date());
  166. apath.setOpUserName(loginUser.getUsername());
  167. auditPathsMapper.insertAuditPaths(apath);
  168. fPid = apath.getId();
  169. }
  170. if (StringUtils.isNotNull(auditPathsLevels) && !"[]".equals(auditPathsLevels)) {
  171. JSONArray warehouseJSON = JSONArray.parseArray(auditPathsLevels);
  172. List<AuditPathsLevels> auditPathsLevelsList = JSONObject.parseArray(warehouseJSON.toJSONString(), AuditPathsLevels.class);
  173. if ("F".equals(auditPathsLevelsList.get(auditPathsLevelsList.size() - 1).getIffinalItem())) {
  174. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  175. return AjaxResult.error("操作失败:最后一级状态有误,请确认");
  176. }
  177. Long level = 0L;
  178. boolean last = false;
  179. for (AuditPathsLevels lev : auditPathsLevelsList) {
  180. if (StringUtils.isNull(lev.getAuditUserId())) {
  181. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  182. return AjaxResult.error("操作失败:请维护审核人");
  183. }
  184. if ("T".equals(lev.getIffinalItem()) && !last) {
  185. last = true;
  186. } else if ("T".equals(lev.getIffinalItem()) && last) {
  187. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  188. return AjaxResult.error("操作失败:最后一级只能存在一个");
  189. }
  190. level++;
  191. lev.setPathId(fPid);
  192. lev.setLevelId(level);
  193. auditPathsLevelsMapper.insertAuditPathsLevels(lev);
  194. }
  195. }
  196. return AjaxResult.success();
  197. }
  198. /**
  199. * 修改审批流配置主
  200. *
  201. * @param auditPaths 审批流配置主
  202. * @return 结果
  203. */
  204. @Override
  205. public int updateAuditPaths(AuditPaths auditPaths) {
  206. return auditPathsMapper.updateAuditPaths(auditPaths);
  207. }
  208. /**
  209. * 批量删除审批流配置主
  210. *
  211. * @param ids 需要删除的审批流配置主ID
  212. * @return 结果
  213. */
  214. @Override
  215. @Transactional
  216. public AjaxResult deleteAuditPathsByIds(Long[] ids) {
  217. int line = 0;
  218. for (Long lo : ids) {
  219. line++;
  220. AuditPathsActs auditPathsActs = new AuditPathsActs();
  221. auditPathsActs.setPathId(lo);
  222. int sum = auditPathsActsMapper.selectCountAuditPathsActs(auditPathsActs);
  223. if (sum > 0) {
  224. return AjaxResult.error("第" + line + "行,审批已被使用无法删除");
  225. }
  226. }
  227. auditPathsMapper.deleteAuditPathsByIds(ids);
  228. return AjaxResult.success();
  229. }
  230. /**
  231. * 删除审批流配置主信息
  232. *
  233. * @param id 审批流配置主ID
  234. * @return 结果
  235. */
  236. @Override
  237. public int deleteAuditPathsById(Long id) {
  238. return auditPathsMapper.deleteAuditPathsById(id);
  239. }
  240. /**
  241. * 单据点击查看审批流
  242. *
  243. * @param auditItems 条件
  244. * @return 结果
  245. */
  246. @Override
  247. public AjaxResult projectEndQueryPendingVal(AuditItems auditItems) {
  248. List<Map<String, Object>> mapList = auditItemsMapper.selectWarehouseApprover(auditItems);
  249. return AjaxResult.success(mapList);
  250. }
  251. /**
  252. * 首页点击查看审批流 获取对应数据
  253. *
  254. * @param auditItems 查询条件
  255. * @return 结果
  256. */
  257. @Override
  258. public List<Map<String, Object>> selectAllAuditItems(AuditItems auditItems) {
  259. List<Map<String,Object>> list = new ArrayList<>();
  260. for (Map<String,Object> map : auditItemsMapper.selectAuditItems(auditItems)) {
  261. // 根据审批明细详情主表 id 获取审批明细从表数据
  262. List<Map<String,Object>> auditItemsDoList = auditItemsDoMapper.selectByFPid(Long.valueOf(map.get("id").toString()));
  263. StringBuilder stringBuilder = new StringBuilder();
  264. for (Map<String,Object> auditItemsDo : auditItemsDoList) {
  265. if (StringUtils.isNotNull(auditItemsDo)) { // 有数据
  266. stringBuilder.append(auditItemsDo.get("fBsno")).append(",");
  267. }
  268. }
  269. map.put("fBsno",StringUtils.removeTheLastComma(stringBuilder));
  270. // 将 map 数据重新放入 list 中
  271. list.add(map);
  272. }
  273. return list;
  274. }
  275. /**
  276. * 查询审批流配置主信息条数
  277. *
  278. * @return 结果
  279. */
  280. @Override
  281. public int selectCountAuditItems() {
  282. return auditItemsMapper.selectCountAuditItems();
  283. }
  284. /**
  285. * 审批通过
  286. *
  287. * @param auditItems 审核人、单据信息
  288. * @return 结果
  289. */
  290. @Override
  291. @Transactional
  292. public AjaxResult approved(AuditItems auditItems) {
  293. // 审核通过时间
  294. Date auditItemtem = auditItems.getAuditItem();
  295. long fettle = 0L;
  296. int number = 0;
  297. AuditItems item = new AuditItems();
  298. item.setBillId(auditItems.getId());
  299. item.setActId(auditItems.getActId());
  300. item.setFidStatus(auditItems.getFidStatus());
  301. List<AuditItems> auditItemsList = auditItemsMapper.selectAuditItemsList(item);
  302. if (CollectionUtils.isEmpty(auditItemsList)) {
  303. return AjaxResult.error("未找到审批信息,请确认");
  304. }
  305. for (AuditItems at : auditItemsList) {
  306. if (!"S".equals(at.getAuditStatus())) {
  307. continue;
  308. }
  309. AuditItemsUsers itemsUsers = new AuditItemsUsers();
  310. itemsUsers.setPid(at.getId());
  311. List<AuditItemsUsers> auditItemsUsers = auditItemsUsersMapper.selectAuditItemsUsersList(itemsUsers);
  312. for (AuditItemsUsers au : auditItemsUsers) {
  313. if (au.getUserId().equals(auditItems.getSendUserId()) && "S".equals(au.getAuditStatus())) {
  314. number++;
  315. if (StringUtils.isEmpty(auditItems.getAuditMsg())) {
  316. at.setAuditMsg("同意");
  317. } else {
  318. at.setAuditMsg(auditItems.getAuditMsg());
  319. }
  320. at.setAuditStatus("A");
  321. //at.setAuditItem(new Date());
  322. at.setAuditOpTime(new Date());
  323. at.setAuditUserId(au.getUserId());
  324. at.setAuditItem(auditItemtem);
  325. int updateAuditItems = auditItemsMapper.updateAuditItems(at);
  326. if (updateAuditItems <= 0) {
  327. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  328. return AjaxResult.error("审批通过失败: 更新审批状态失败");
  329. }
  330. au.setAuditStatus("A");
  331. int updateAuditItemsUsers = auditItemsUsersMapper.updateAuditItemsUsers(au);
  332. if (updateAuditItemsUsers <= 0) {
  333. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  334. return AjaxResult.error("审批通过失败: 更新审批状态失败");
  335. }
  336. if (auditItems.getActId() >= 110 && auditItems.getActId() <= 160) {
  337. if ("T".equals(at.getIffinalItem())) {
  338. fettle = 6L;
  339. } else if ("F".equals(at.getIffinalItem())) {
  340. fettle = 5L;
  341. }
  342. // 仓库模块
  343. if ("warehouse_status".equals(auditItems.getFidStatus())) {
  344. tWarehouseBillsMapper.warehouseApprovalUpdate(auditItems, fettle);
  345. } else {
  346. tWarehouseBillsMapper.warehouseFollowUpdate(auditItems.getBillId(), fettle, at.getAuditItem());
  347. }
  348. tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, at.getAuditItem());
  349. if (Objects.equals(fettle, 6L)) {
  350. if (Objects.equals(auditItems.getActId(), 120L)) {
  351. List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
  352. // 过滤出明细信息查询是否存在已计算仓储费
  353. List<Long> ids = feesList.stream().filter(li -> !li.getfBilltype().equals(WarehouseTypeEnum.KCZZ.getType()))
  354. .map(TWarehousebillsfees::getSrcId).distinct().collect(toList());
  355. if (CollectionUtils.isNotEmpty(ids) && tWarehousebillsitemsMapper.selectIsCalculateStorageFeesByIds(ids) > 0) {
  356. throw new WarehouseException("计算费用中存在已计算仓储费信息");
  357. }
  358. // 获取仓储费,并判断费用中是否存在仓储费
  359. TFees ccf = feesMapper.seletFeesByCCF();
  360. if (Objects.isNull(ccf)) {
  361. throw new WarehouseException("未找到仓储费费用信息");
  362. }
  363. // 过滤出费用类型等于仓储费并且有商机id,并取出来进行更新仓储费计费日期
  364. long count = feesList.stream().filter(li -> Objects.equals(li.getfFeeid(), ccf.getfId()) && Objects.nonNull(li.getSrcId()))
  365. .count();
  366. if (count > 0) {
  367. TWarehousebillsfees warehousebillsfees = feesList.stream().findFirst().orElseThrow(() -> new WarehouseException("未找到费用明细"));
  368. // 更新子表仓储费截止日期
  369. tWarehousebillsitemsMapper.updateItemStorageFeeDeadlineByPId(warehousebillsfees.getfPid(), warehousebillsfees.getfBillingDeadline());
  370. }
  371. } else if (Objects.equals(auditItems.getActId(), 150L)) {
  372. tWarehouseBillsService.approvedStorageFee(auditItems.getBillId(), fettle, at.getAuditItem());
  373. }
  374. }
  375. } else if (auditItems.getActId() >= 210 && auditItems.getActId() <= 230) {
  376. // 财务模块
  377. if ("T".equals(at.getIffinalItem())) {
  378. fettle = 6L;
  379. // 更新费用明细
  380. /*AjaxResult ajaxResult = tFeeServiceImpl.billsfeesFollow(auditItems.getBillId());
  381. String code = ajaxResult.get("code").toString();
  382. if ("500".equals(code)) {
  383. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  384. return ajaxResult;
  385. }*/
  386. } else if ("F".equals(at.getIffinalItem())) {
  387. fettle = 5L;
  388. }
  389. // 变更财务状态
  390. AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
  391. String code = ajaxResult.get("code").toString();
  392. if ("500".equals(code)) {
  393. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  394. return ajaxResult;
  395. }
  396. } else if (auditItems.getActId() >= 310 && auditItems.getActId() <= 320) {
  397. // 协议模块
  398. if ("T".equals(at.getIffinalItem())) {
  399. fettle = 6L;
  400. } else if ("F".equals(at.getIffinalItem())) {
  401. fettle = 5L;
  402. }
  403. // 变更财务状态
  404. AjaxResult ajaxResult = tWarehouseAgreementService.agreementFollow(auditItems.getBillId(), fettle);
  405. String code = ajaxResult.get("code").toString();
  406. if ("500".equals(code)) {
  407. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  408. return ajaxResult;
  409. }
  410. } else if (auditItems.getActId() == 410) {
  411. if (StringUtils.isEmpty(auditItems.getRefno3())) {
  412. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  413. return AjaxResult.error("提单号不能为空");
  414. }
  415. if ("T".equals(at.getIffinalItem())) {
  416. fettle = 6L;
  417. } else if ("F".equals(at.getIffinalItem())) {
  418. fettle = 5L;
  419. }
  420. //变更凯和订单状态
  421. AjaxResult ajaxResult = tWarehouseBillsService.updateKaHeOrder(auditItems.getBillId(), fettle, at.getAuditItem());
  422. String code = ajaxResult.get("code").toString();
  423. if ("500".equals(code)) {
  424. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  425. return ajaxResult;
  426. }
  427. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  428. tWarehouseBills.setfId(auditItems.getBillId());
  429. tWarehouseBills.setfMblno(auditItems.getRefno3());
  430. AjaxResult orderMessage = tWarehouseBillsService.updateOrderMessage(tWarehouseBills);
  431. String orderMessageCode = orderMessage.get("code").toString();
  432. if ("500".equals(orderMessageCode)) {
  433. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  434. return orderMessage;
  435. }
  436. } else if (auditItems.getActId() == 420) {
  437. if ("T".equals(at.getIffinalItem())) {
  438. fettle = 11L;
  439. } else if ("F".equals(at.getIffinalItem())) {
  440. fettle = 10L;
  441. }
  442. //变更凯和订单状态
  443. AjaxResult ajaxResult = tWarehouseBillsService.updateKaHeOrder(auditItems.getBillId(), fettle, at.getAuditItem());
  444. String code = ajaxResult.get("code").toString();
  445. if ("500".equals(code)) {
  446. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  447. return ajaxResult;
  448. }
  449. } else if (auditItems.getActId() >= 430 && auditItems.getActId() <= 450) {
  450. // 财务模块
  451. if ("T".equals(at.getIffinalItem())) {
  452. fettle = 6L;
  453. // 更新费用明细
  454. /*AjaxResult ajaxResult = tFeeServiceImpl.billsfeesFollow(auditItems.getBillId());
  455. String code = ajaxResult.get("code").toString();
  456. if ("500".equals(code)) {
  457. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  458. return ajaxResult;
  459. }*/
  460. } else if ("F".equals(at.getIffinalItem())) {
  461. fettle = 5L;
  462. }
  463. //修改主订单费用信息
  464. if (auditItems.getActId() >= 440 && auditItems.getActId() <= 450) {
  465. tWarehouseBillsService.updateMessage(auditItems.getBillId());
  466. }
  467. // 变更财务状态
  468. AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
  469. String code = ajaxResult.get("code").toString();
  470. if ("500".equals(code)) {
  471. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  472. return ajaxResult;
  473. }
  474. } else if (auditItems.getActId() == 470) {
  475. // 财务模块
  476. if ("T".equals(at.getIffinalItem())) {
  477. fettle = 6L;
  478. // 更新费用明细
  479. AjaxResult ajaxResult = tFeeServiceImpl.billsfeesFollow(auditItems.getBillId());
  480. String code = ajaxResult.get("code").toString();
  481. if ("500".equals(code)) {
  482. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  483. return ajaxResult;
  484. }
  485. } else if ("F".equals(at.getIffinalItem())) {
  486. fettle = 5L;
  487. }
  488. // 变更财务状态
  489. AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
  490. String code = ajaxResult.get("code").toString();
  491. if ("500".equals(code)) {
  492. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  493. return ajaxResult;
  494. }
  495. //生成销项发票
  496. AjaxResult invoiceFp = tFeeServiceImpl.copyInvoiceFp(auditItems.getBillId(), "INV");
  497. String string = invoiceFp.get("code").toString();
  498. if ("500".equals(string)) {
  499. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  500. return invoiceFp;
  501. }
  502. } else if (auditItems.getActId() == 460) {
  503. if ("T".equals(at.getIffinalItem())) {
  504. fettle = 6L;
  505. } else if ("F".equals(at.getIffinalItem())) {
  506. fettle = 5L;
  507. }
  508. //变更凯和订单状态
  509. Integer i = tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, at.getAuditItem());
  510. if (i != null && i > 0) {
  511. } else {
  512. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  513. return AjaxResult.error("审核失败,更新费用状态失败");
  514. }
  515. } else if (auditItems.getActId() == 170) {
  516. //入库明细审核
  517. if ("T".equals(at.getIffinalItem())) {
  518. fettle = 6L;
  519. } else if ("F".equals(at.getIffinalItem())) {
  520. fettle = 5L;
  521. }
  522. //变更仓库入库明细审核状态
  523. Integer i = null;
  524. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  525. tWarehouseBills.setfId(auditItems.getBillId());
  526. tWarehouseBills.setfItemstatus(fettle);
  527. i = tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  528. i = tWarehousebillsitemsMapper.warehouseItemfItemstatus(auditItems.getBillId(), fettle);
  529. if (i != null && i > 0) {
  530. } else {
  531. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  532. return AjaxResult.error("审核失败,更新费用状态失败");
  533. }
  534. } else if (auditItems.getActId() == 180) {
  535. //入库明细审核
  536. if ("T".equals(at.getIffinalItem())) {
  537. fettle = 6L;
  538. } else if ("F".equals(at.getIffinalItem())) {
  539. fettle = 5L;
  540. }
  541. //变更仓库入库明细审核状态
  542. Integer i = null;
  543. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  544. tWarehouseBills.setfId(auditItems.getBillId());
  545. tWarehouseBills.setfItemstatus(fettle);
  546. i = tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  547. i = tWarehousebillsitemsMapper.warehouseItemfItemstatus(auditItems.getBillId(), fettle);
  548. if (i != null && i > 0) {
  549. } else {
  550. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  551. return AjaxResult.error("审核失败,更新费用状态失败");
  552. }
  553. } else if (auditItems.getActId() == 471) {
  554. if ("T".equals(at.getIffinalItem())) {
  555. fettle = 6L;
  556. AjaxResult orderMessage = tWarehouseBillsService.copyKhOrderMessage(auditItems.getBillId());
  557. String string = orderMessage.get("code").toString();
  558. if ("500".equals(string)) {
  559. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  560. return orderMessage;
  561. }
  562. } else if ("F".equals(at.getIffinalItem())) {
  563. fettle = 5L;
  564. }
  565. // 变更凯和申请修改订单状态
  566. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  567. tWarehouseBills.setfId(auditItems.getBillId());
  568. tWarehouseBills.setfUpdeteStatus(fettle);
  569. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  570. } else if (auditItems.getActId() == 472) {
  571. if ("T".equals(at.getIffinalItem())) {
  572. fettle = 6L;
  573. } else if ("F".equals(at.getIffinalItem())) {
  574. fettle = 5L;
  575. }
  576. // 变更凯和申请修改订单状态
  577. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  578. tWarehouseBills.setfId(auditItems.getBillId());
  579. tWarehouseBills.setfSubmitUpdate(fettle);
  580. if (fettle == 6L) {
  581. tWarehouseBills.setfUpdeteStatus(2L);
  582. tWarehouseBills.setfSubmitUpdate(2L);
  583. }
  584. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  585. } else if (auditItems.getActId() == 473) {
  586. if ("T".equals(at.getIffinalItem())) {
  587. fettle = 6L;
  588. // 删除申请审核通过修改订单的状态
  589. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  590. tWarehouseBills.setfId(auditItems.getBillId());
  591. tWarehouseBills.setDelFlag("1");
  592. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  593. } else if ("F".equals(at.getIffinalItem())) {
  594. fettle = 5L;
  595. }
  596. // 变更凯和申请修改订单状态
  597. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  598. tWarehouseBills.setfId(auditItems.getBillId());
  599. tWarehouseBills.setfDeleteStatus(fettle);
  600. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  601. } else if (auditItems.getActId() == 474) {
  602. if ("F".equals(at.getIffinalItem())) {
  603. fettle = 5L;
  604. } else if ("T".equals(at.getIffinalItem())) {
  605. fettle = 6L;
  606. //修改原订单信息
  607. AjaxResult ajaxResult = tWarehouseBillsService.approveDismount(auditItems.getBillId());
  608. String string = ajaxResult.get("code").toString();
  609. if ("500".equals(string)) {
  610. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  611. return ajaxResult;
  612. }
  613. }
  614. //变更凯和订单状态
  615. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  616. tWarehouseBills.setfId(auditItems.getBillId());
  617. tWarehouseBills.setfDismountStatus(fettle);
  618. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  619. } else if (auditItems.getActId() == 181) {
  620. if ("T".equals(at.getIffinalItem())) {
  621. fettle = 6L;
  622. } else if ("F".equals(at.getIffinalItem())) {
  623. fettle = 5L;
  624. }
  625. //业务处理
  626. } else if (auditItems.getActId() == 190) {
  627. if ("T".equals(at.getIffinalItem())) {
  628. fettle = 6L;
  629. } else if ("F".equals(at.getIffinalItem())) {
  630. fettle = 5L;
  631. }
  632. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  633. tWarehouseBills.setfId(auditItems.getBillId());
  634. tWarehouseBills.setfBillstatus(fettle);
  635. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  636. tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
  637. } else if (Objects.equals(auditItems.getActId(), WarehouseActIdEnum.FEE_CHANGES.getActId().longValue())) {
  638. // 费用变更审核通过处理
  639. if ("T".equals(at.getIffinalItem())) {
  640. fettle = 6L;
  641. warehousebillsModifyService.additionalFeeInformation(auditItems.getBillId(), WarehouseTypeEnum.APPROVE);
  642. } else if ("F".equals(at.getIffinalItem())) {
  643. fettle = 5L;
  644. warehousebillsModifyService.additionalFeeInformation(auditItems.getBillId(), WarehouseTypeEnum.UNDER_REVIEW);
  645. }
  646. }
  647. if ("F".equals(at.getIffinalItem())) {
  648. at.setLevelId(at.getLevelId() + 1);
  649. int updateNum = auditItemsMapper.updateAuditStatus(at);
  650. if (updateNum <= 0) {
  651. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  652. return AjaxResult.error("审批通过失败: 更新审批状态失败");
  653. }
  654. }
  655. break;
  656. }
  657. }
  658. }
  659. TWarehouseBills warehouseBills = new TWarehouseBills();
  660. warehouseBills.setfId(auditItems.getBillId());
  661. calculationWarehouseService.calculationFeeStatus(warehouseBills);
  662. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  663. if (number <= 0) {
  664. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  665. return AjaxResult.error("该审批已被操作");
  666. }
  667. return AjaxResult.success();
  668. }
  669. /**
  670. * 审批驳回
  671. *
  672. * @param auditItems 审核人、单据信息
  673. * @return 结果
  674. */
  675. @Override
  676. @Transactional
  677. public AjaxResult approvalRejected(AuditItems auditItems) {
  678. long fettle = 0L;
  679. if (auditItems.getActId() >= 110 && auditItems.getActId() <= 160) {
  680. fettle = 3L;
  681. if ("f_billstatus".equals(auditItems.getFidStatus())) {
  682. tWarehouseBillsMapper.warehouseFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
  683. } else {
  684. tWarehouseBillsMapper.warehouseApprovalUpdate(auditItems, fettle);
  685. }
  686. tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
  687. if (Objects.equals(auditItems.getActId(), 150L)) {
  688. List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
  689. for (TWarehousebillsfees wareItem : feesList) {
  690. if (StringUtils.isNull(wareItem.getSrcId())) {
  691. continue;
  692. }
  693. if ("KCZZ".equals(wareItem.getfBilltype())) {
  694. TWhgenleg whgenleg = new TWhgenleg();
  695. whgenleg.setfId(wareItem.getSrcId());
  696. whgenleg.setfChargedate(wareItem.getfChargedate());
  697. tWhgenlegMapper.updateTWhgenleg(whgenleg);
  698. } else {
  699. TWarehousebillsitems billsItem = new TWarehousebillsitems();
  700. billsItem.setfId(wareItem.getSrcId());
  701. billsItem.setfBilltype(wareItem.getfBilltype());
  702. if (!"SJCK".equals(wareItem.getfBilltype())) {
  703. billsItem.setfChargedate(wareItem.getfBillingDeadline());
  704. tWarehousebillsitemsMapper.updateTWarehousebillsitems(billsItem);
  705. } else {
  706. billsItem.setIsCalculateStorageFees(WarehouseTypeEnum.NOT_CALCULATE.getType());
  707. billsItem.setfChargedate(wareItem.getfChargedate());
  708. }
  709. tWarehousebillsitemsMapper.agreementApprovalRejected(billsItem);
  710. }
  711. }
  712. }
  713. } else if (auditItems.getActId() >= 210 && auditItems.getActId() <= 230) {
  714. fettle = 3L;
  715. String fBillType = null;
  716. if (auditItems.getActId() == 210) { // 对账
  717. fBillType = "DZRevoke";
  718. } else if (auditItems.getActId() == 220 || auditItems.getActId() == 230) {
  719. fBillType = "DCRevoke";
  720. }
  721. // 财务模块
  722. AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
  723. String code = ajaxResult.get("code").toString();
  724. if ("500".equals(code)) {
  725. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  726. return ajaxResult;
  727. }
  728. // 更新费用明细
  729. AjaxResult result = tFeeServiceImpl.updateDSFMoney(auditItems.getBillId(),fBillType);
  730. String message = result.get("code").toString();
  731. if ("500".equals(message)) {
  732. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  733. return result;
  734. }
  735. } else if (auditItems.getActId() >= 310 && auditItems.getActId() <= 320) {
  736. fettle = 3L;
  737. // 协议模块
  738. AjaxResult ajaxResult = tWarehouseAgreementService.agreementFollow(auditItems.getBillId(), fettle);
  739. String code = ajaxResult.get("code").toString();
  740. if ("500".equals(code)) {
  741. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  742. return ajaxResult;
  743. }
  744. } else if (auditItems.getActId() == 410) {
  745. fettle = 3L;
  746. AjaxResult ajaxResult = tWarehouseBillsService.updateKaHeOrder(auditItems.getBillId(), fettle, auditItems.getAuditItem());
  747. String code = ajaxResult.get("code").toString();
  748. if ("500".equals(code)) {
  749. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  750. return ajaxResult;
  751. }
  752. } else if (auditItems.getActId() == 420) {
  753. fettle = 8L;
  754. AjaxResult ajaxResult = tWarehouseBillsService.updateKaHeOrder(auditItems.getBillId(), fettle, auditItems.getAuditItem());
  755. String code = ajaxResult.get("code").toString();
  756. if ("500".equals(code)) {
  757. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  758. return ajaxResult;
  759. }
  760. } else if (auditItems.getActId() >= 430 && auditItems.getActId() <= 450) {
  761. fettle = 3L;
  762. String fBillType = null;
  763. if (auditItems.getActId() == 450 || auditItems.getActId() == 440){
  764. fBillType = "DCRevoke";
  765. }else if (auditItems.getActId() == 430){
  766. fBillType = "KHDZRevoke";
  767. }
  768. // 财务模块
  769. AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
  770. String code = ajaxResult.get("code").toString();
  771. if ("500".equals(code)) {
  772. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  773. return ajaxResult;
  774. }
  775. // 更新费用明细
  776. AjaxResult result = tFeeServiceImpl.updateMoney(auditItems.getBillId(),fBillType);
  777. String message = result.get("code").toString();
  778. if ("500".equals(message)) {
  779. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  780. return result;
  781. }
  782. } else if (auditItems.getActId() == 460) {
  783. fettle = 3L;
  784. Integer i = tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
  785. if (i != null && i > 0) {
  786. } else {
  787. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  788. return AjaxResult.error("审批驳回失败,更新费用状态失败");
  789. }
  790. } else if (auditItems.getActId() == 470) {
  791. fettle = 3L;
  792. // 财务模块
  793. AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
  794. String code = ajaxResult.get("code").toString();
  795. if ("500".equals(code)) {
  796. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  797. return ajaxResult;
  798. }
  799. } else if (auditItems.getActId() == 170) {
  800. //入库明细审核
  801. fettle = 3L;
  802. //变更仓库入库明细审核状态
  803. Integer i = null;
  804. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  805. tWarehouseBills.setfId(auditItems.getBillId());
  806. tWarehouseBills.setfItemstatus(fettle);
  807. i = tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  808. i = tWarehousebillsitemsMapper.warehouseItemfItemstatus(auditItems.getBillId(), fettle);
  809. if (i != null && i > 0) {
  810. } else {
  811. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  812. return AjaxResult.error("审核失败,更新费用状态失败");
  813. }
  814. } else if (auditItems.getActId() == 180) {
  815. //入库明细审核
  816. fettle = 3L;
  817. //变更仓库入库明细审核状态
  818. Integer i = null;
  819. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  820. tWarehouseBills.setfId(auditItems.getBillId());
  821. tWarehouseBills.setfItemstatus(fettle);
  822. i = tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  823. i = tWarehousebillsitemsMapper.warehouseItemfItemstatus(auditItems.getBillId(), fettle);
  824. if (i != null && i > 0) {
  825. } else {
  826. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  827. return AjaxResult.error("审核失败,更新费用状态失败");
  828. }
  829. } else if (auditItems.getActId() == 471) {
  830. fettle = 3L;
  831. // 变更凯和申请修改订单状态
  832. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  833. tWarehouseBills.setfId(auditItems.getBillId());
  834. tWarehouseBills.setfUpdeteStatus(fettle);
  835. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  836. } else if (auditItems.getActId() == 472) {
  837. fettle = 3L;
  838. // 变更凯和申请修改订单状态
  839. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  840. tWarehouseBills.setfId(auditItems.getBillId());
  841. tWarehouseBills.setfSubmitUpdate(fettle);
  842. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  843. } else if (auditItems.getActId() == 473) {
  844. fettle = 3L;
  845. // 变更凯和申请修改订单状态
  846. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  847. tWarehouseBills.setfId(auditItems.getBillId());
  848. tWarehouseBills.setfDeleteStatus(fettle);
  849. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  850. } else if (auditItems.getActId() == 474) {
  851. fettle = 3L;
  852. //变更凯和拆单单状态
  853. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  854. tWarehouseBills.setfId(auditItems.getBillId());
  855. tWarehouseBills.setfDismountStatus(fettle);
  856. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  857. } else if (auditItems.getActId() == 181) {
  858. fettle = 3L;
  859. //业务处理
  860. } else if (auditItems.getActId() == 190) {
  861. fettle = 3L;
  862. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  863. tWarehouseBills.setfId(auditItems.getBillId());
  864. tWarehouseBills.setfBillstatus(fettle);
  865. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  866. tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
  867. } else if (Objects.equals(auditItems.getActId(), WarehouseActIdEnum.FEE_CHANGES.getActId().longValue())) {
  868. warehousebillsModifyService.additionalFeeInformation(auditItems.getBillId(), WarehouseTypeEnum.DISMISS);
  869. }
  870. AuditItems item = new AuditItems();
  871. item.setBillId(auditItems.getId());
  872. item.setActId(auditItems.getActId());
  873. item.setFidStatus(auditItems.getFidStatus());
  874. List<AuditItems> auditItem = auditItemsMapper.selectAuditItemsList(item);
  875. int number = 0;
  876. for (AuditItems at : auditItem) {
  877. if (!"S".equals(at.getAuditStatus())) {
  878. continue;
  879. }
  880. AuditItemsUsers itemsUsers = new AuditItemsUsers();
  881. itemsUsers.setPid(at.getId());
  882. List<AuditItemsUsers> auditItemsUsersList = auditItemsUsersMapper.selectAuditItemsUsersList(itemsUsers);
  883. for (AuditItemsUsers au : auditItemsUsersList) {
  884. if (Objects.equals(au.getUserId(), auditItems.getSendUserId())) {
  885. number++;
  886. at.setAuditStatus("B");
  887. if (auditItems.getAuditMsg() == null || "".equals(auditItems.getAuditMsg())) {
  888. at.setAuditMsg("不同意");
  889. } else {
  890. at.setAuditMsg(auditItems.getAuditMsg());
  891. }
  892. //at.setAuditItem(new Date());
  893. at.setAuditOpTime(new Date());
  894. at.setAuditUserId(au.getUserId());
  895. int updateAuditItems = auditItemsMapper.updateAuditItems(at);
  896. if (updateAuditItems <= 0) {
  897. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  898. return AjaxResult.error("审批驳回失败: 更新审批状态失败");
  899. }
  900. au.setAuditStatus("B");
  901. int updateAuditItemUser = auditItemsUsersMapper.updateAuditItemsUsers(au);
  902. if (updateAuditItemUser <= 0) {
  903. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  904. return AjaxResult.error("审批驳回失败: 更新审批状态失败");
  905. }
  906. if ("F".equals(at.getIffinalItem())) {
  907. int deleteNum = auditItemsMapper.deleteUpLevelId(at);
  908. if (deleteNum <= 0) {
  909. return AjaxResult.error("未找到后续除审批信息");
  910. }
  911. }
  912. }
  913. }
  914. }
  915. TWarehouseBills warehouseBills = new TWarehouseBills();
  916. warehouseBills.setfId(auditItems.getBillId());
  917. calculationWarehouseService.calculationFeeStatus(warehouseBills);
  918. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  919. if (number <= 0) {
  920. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  921. return AjaxResult.error("该审批已被操作");
  922. }
  923. return AjaxResult.success();
  924. }
  925. /**
  926. * 审批撤销(我提交的 没人审核)
  927. *
  928. * @param auditItems 审核人、单据信息
  929. * @return
  930. */
  931. @Override
  932. @Transactional
  933. public AjaxResult revoke(AuditItems auditItems) {
  934. long fettle = 0L;
  935. if (auditItems.getActId() >= 110 && auditItems.getActId() <= 160) {
  936. fettle = 2L;
  937. // 查询仓库状态
  938. TWarehouseBills tWarehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(auditItems.getBillId());
  939. if ("f_billstatus".equals(auditItems.getFidStatus())) {
  940. if (!tWarehouseBills.getfBillstatus().equals(4L)) {
  941. return AjaxResult.error("审批撤销失败: 已经过审批");
  942. }
  943. } else {
  944. if (!tWarehouseBills.getWarehouseStatus().equals(4L)) {
  945. return AjaxResult.error("审批撤销失败: 已经过审批");
  946. }
  947. }
  948. tWarehouseBillsMapper.warehouseApprovalUpdate(auditItems, fettle);
  949. // 下方注掉的接口,在大撤销请核时,会更改费用明细对应的数据状态,暂时废弃
  950. // tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
  951. // 撤销审批时删除审批流任务明细从表对应数据
  952. revokeDeleteAID(auditItems.getActId(),auditItems.getBillId());
  953. } else if (auditItems.getActId() >= 210 && auditItems.getActId() <= 230) {
  954. fettle = 2L;
  955. // 查询财务状态
  956. TFee tFee = tFeeMapper.selectTFeeById(auditItems.getBillId());
  957. if (!"4".equals(tFee.getfBillstatus())) {
  958. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  959. return AjaxResult.error("审批撤销失败: 已经过审批");
  960. }
  961. // 财务模块
  962. AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
  963. String code = ajaxResult.get("code").toString();
  964. if ("500".equals(code)) {
  965. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  966. return AjaxResult.error("审批撤销失败: 更新审批状态失败");
  967. }
  968. // 撤销审批时删除审批流任务明细从表对应数据
  969. revokeDeleteAID(auditItems.getActId(),auditItems.getBillId());
  970. } else if (auditItems.getActId() >= 310 && auditItems.getActId() <= 320) {
  971. fettle = 2L;
  972. // 查询协议状态
  973. TWarehouseAgreement tWarehouseAgreement = tWarehouseAgreementMapper.selectTWarehouseAgreementById(auditItems.getBillId());
  974. if (!"4".equals(tWarehouseAgreement.getfBillstatus())) {
  975. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  976. return AjaxResult.error("审批撤销失败: 已经过审批");
  977. }
  978. // 协议模块
  979. AjaxResult ajaxResult = tWarehouseAgreementService.agreementFollow(auditItems.getBillId(), fettle);
  980. String code = ajaxResult.get("code").toString();
  981. if ("500".equals(code)) {
  982. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  983. return AjaxResult.error("审批撤销失败: 更新审批状态失败");
  984. }
  985. } else if (auditItems.getActId() == 410) {
  986. fettle = 2L;
  987. TWarehouseBills tWarehouseBills = tWarehouseBillsService.selectKaHeById(auditItems.getBillId());
  988. if (tWarehouseBills.getfBillstatus() != 4L) {
  989. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  990. return AjaxResult.error("审批撤销失败: 已经过审批");
  991. }
  992. AjaxResult ajaxResult = tWarehouseBillsService.updateKaHeOrder(auditItems.getBillId(), fettle, auditItems.getAuditItem());
  993. String code = ajaxResult.get("code").toString();
  994. if ("500".equals(code)) {
  995. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  996. return ajaxResult;
  997. }
  998. } else if (auditItems.getActId() == 420) {
  999. fettle = 7L;
  1000. TWarehouseBills tWarehouseBills = tWarehouseBillsService.selectKaHeById(auditItems.getBillId());
  1001. if (tWarehouseBills.getfBillstatus() != 9L) {
  1002. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1003. return AjaxResult.error("审批撤销失败: 已经过审批");
  1004. }
  1005. AjaxResult ajaxResult = tWarehouseBillsService.updateKaHeOrder(auditItems.getBillId(), fettle, auditItems.getAuditItem());
  1006. String code = ajaxResult.get("code").toString();
  1007. if ("500".equals(code)) {
  1008. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1009. return ajaxResult;
  1010. }
  1011. } else if (auditItems.getActId() >= 430 && auditItems.getActId() <= 450) {
  1012. fettle = 2L;
  1013. String fBillType = null;
  1014. if (auditItems.getActId() == 450 || auditItems.getActId() == 440){
  1015. fBillType = "DCRevoke";
  1016. }else if (auditItems.getActId() == 430){
  1017. fBillType = "KHDZRevoke";
  1018. }
  1019. // 查询财务状态
  1020. TFee tFee = tFeeMapper.selectTFeeById(auditItems.getBillId());
  1021. if (!"4".equals(tFee.getfBillstatus())) {
  1022. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1023. return AjaxResult.error("审批撤销失败: 已经过审批");
  1024. }
  1025. // 财务模块
  1026. AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
  1027. String code = ajaxResult.get("code").toString();
  1028. if ("500".equals(code)) {
  1029. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1030. return AjaxResult.error("审批撤销失败: 更新审批状态失败");
  1031. }
  1032. // 更新费用明细
  1033. AjaxResult result = tFeeServiceImpl.updateMoney(auditItems.getBillId(),fBillType);
  1034. String message = result.get("code").toString();
  1035. if ("500".equals(message)) {
  1036. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1037. return result;
  1038. }
  1039. /*//修改主订单费用信息
  1040. if (auditItems.getActId() >= 440 && auditItems.getActId() <= 450) {
  1041. tWarehouseBillsService.updateMessage(auditItems.getBillId());
  1042. }*/
  1043. } else if (auditItems.getActId() == 460) {
  1044. fettle = 2L;
  1045. TWarehousebillsfees warehousebillsfees = new TWarehousebillsfees();
  1046. warehousebillsfees.setfPid(auditItems.getBillId());
  1047. List<TWarehousebillsfees> tWarehousebillsfees = tWarehousebillsfeesMapper.selectTWarehousebillsfeesList(warehousebillsfees);
  1048. if (CollectionUtils.isNotEmpty(tWarehousebillsfees) && tWarehousebillsfees.get(0).getfBillstatus() != 4L) {
  1049. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1050. return AjaxResult.error("审批撤销失败: 已经过审批");
  1051. }
  1052. Integer i = tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
  1053. if (i != null && i > 0) {
  1054. } else {
  1055. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1056. return AjaxResult.error("审核失败,更新费用状态失败");
  1057. }
  1058. } else if (auditItems.getActId() == 470) {
  1059. fettle = 2L;
  1060. // 查询财务状态
  1061. TFee tFee = tFeeMapper.selectTFeeById(auditItems.getBillId());
  1062. if (!"4".equals(tFee.getfBillstatus())) {
  1063. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1064. return AjaxResult.error("审批撤销失败: 已经过审批");
  1065. }
  1066. // 财务模块
  1067. AjaxResult ajaxResult = tFeeServiceImpl.tfeeFollow(auditItems.getBillId(), fettle);
  1068. String code = ajaxResult.get("code").toString();
  1069. if ("500".equals(code)) {
  1070. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1071. return AjaxResult.error("审批撤销失败: 更新审批状态失败");
  1072. }
  1073. } else if (auditItems.getActId() == 170) {
  1074. //入库明细审核
  1075. fettle = 2L;
  1076. //变更仓库入库明细审核状态
  1077. Integer i = null;
  1078. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  1079. tWarehouseBills.setfId(auditItems.getBillId());
  1080. tWarehouseBills.setfItemstatus(fettle);
  1081. i = tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  1082. i = tWarehousebillsitemsMapper.warehouseItemfItemstatus(auditItems.getBillId(), fettle);
  1083. if (i != null && i > 0) {
  1084. } else {
  1085. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1086. return AjaxResult.error("审核失败,更新费用状态失败");
  1087. }
  1088. } else if (auditItems.getActId() == 180) {
  1089. //入库明细审核
  1090. fettle = 2L;
  1091. //变更仓库入库明细审核状态
  1092. Integer i = null;
  1093. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  1094. tWarehouseBills.setfId(auditItems.getBillId());
  1095. tWarehouseBills.setfItemstatus(fettle);
  1096. i = tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
  1097. i = tWarehousebillsitemsMapper.warehouseItemfItemstatus(auditItems.getBillId(), fettle);
  1098. if (i != null && i > 0) {
  1099. } else {
  1100. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  1101. return AjaxResult.error("审核失败,更新费用状态失败");
  1102. }
  1103. } else if (auditItems.getActId() == 471) {
  1104. fettle = 2L;
  1105. // 变更凯和申请修改订单状态
  1106. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  1107. tWarehouseBills.setfId(auditItems.getBillId());
  1108. tWarehouseBills.setfUpdeteStatus(fettle);
  1109. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  1110. } else if (auditItems.getActId() == 472) {
  1111. fettle = 2L;
  1112. // 变更凯和申请修改订单状态
  1113. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  1114. tWarehouseBills.setfId(auditItems.getBillId());
  1115. tWarehouseBills.setfSubmitUpdate(fettle);
  1116. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  1117. } else if (auditItems.getActId() == 473) {
  1118. fettle = 2L;
  1119. // 变更凯和申请修改订单状态
  1120. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  1121. tWarehouseBills.setfId(auditItems.getBillId());
  1122. tWarehouseBills.setfDeleteStatus(fettle);
  1123. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  1124. } else if (auditItems.getActId() == 474) {
  1125. fettle = 2L;
  1126. //变更凯和拆单单状态
  1127. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  1128. tWarehouseBills.setfId(auditItems.getBillId());
  1129. tWarehouseBills.setfDismountStatus(fettle);
  1130. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  1131. } else if (auditItems.getActId() == 181) {
  1132. fettle = 2L;
  1133. //业务处理
  1134. } else if (auditItems.getActId() == 190) {
  1135. fettle = 2L;
  1136. TWarehouseBills tWarehouseBills = new TWarehouseBills();
  1137. tWarehouseBills.setfId(auditItems.getBillId());
  1138. tWarehouseBills.setfBillstatus(fettle);
  1139. tWarehouseBillsMapper.updateKaHeOrder(tWarehouseBills);
  1140. tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
  1141. } else if (Objects.equals(auditItems.getActId(), WarehouseActIdEnum.FEE_CHANGES.getActId().longValue())) {
  1142. warehousebillsModifyService.withdrawalApprovalById(auditItems.getBillId());
  1143. }
  1144. auditItemsMapper.deletePurchaseApproval(auditItems);
  1145. TWarehouseBills warehouseBills = new TWarehouseBills();
  1146. warehouseBills.setfId(auditItems.getBillId());
  1147. calculationWarehouseService.calculationFeeStatus(warehouseBills);
  1148. tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
  1149. return AjaxResult.success();
  1150. }
  1151. /**
  1152. * 撤销审批时连带删除审批流任务明细从表对应数据
  1153. * @param actId 活动号
  1154. * @param billId 业务id
  1155. */
  1156. public void revokeDeleteAID(Long actId,Long billId) {
  1157. // 根据审批流任务明细活动号 + 业务id 获取审批流任务明细从表数据
  1158. List<Map<String,Object>> itemsDos = auditItemsDoMapper.selectByActIdAndBillId(actId,billId);
  1159. for (Map<String,Object> map : itemsDos) {
  1160. // 删除审批流任务明细从表
  1161. auditItemsDoMapper.deleteById(Long.valueOf(map.get("fId").toString()));
  1162. }
  1163. }
  1164. /**
  1165. * 仓库APP查看订单审批流
  1166. *
  1167. * @param auditItems 条件
  1168. * @return 结果
  1169. */
  1170. @Override
  1171. public List<AppAuditItemVO> selectOrderAuditItems(AppAuditItemDTO auditItems) {
  1172. // 如果没有指定类型信息,则默认 赋值仓库类型
  1173. if (StringUtils.isEmpty(auditItems.getBillType())) {
  1174. auditItems.setBillTypeList(WarehouseTypeEnum.getWarehousingType());
  1175. } else {
  1176. List<String> strings = new ArrayList<>();
  1177. strings.add(auditItems.getBillType());
  1178. auditItems.setBillTypeList(strings);
  1179. }
  1180. if (StringUtils.isNotEmpty(auditItems.getSendTimeInterval())) {
  1181. String[] split = auditItems.getSendTimeInterval().split(",");
  1182. List<String> list = Lists.newArrayList();
  1183. list.add(split[0] + " 00:00:00");
  1184. list.add(split[1] + " 23:59:59");
  1185. auditItems.setSendList(list);
  1186. }
  1187. auditItems.setActIdList(WarehouseActIdEnum.isWarehousingActList());
  1188. // 查询
  1189. List<AppAuditItemVO> appAuditItemVOList = auditItemsMapper.selectOrderAuditItems(auditItems);
  1190. // 贸易方式
  1191. String type = "data_trademodes";
  1192. if (CollectionUtils.isNotEmpty(appAuditItemVOList)) {
  1193. appAuditItemVOList.forEach(vo -> {
  1194. if (StringUtils.isNotNull(vo.getFTrademodeid())) {
  1195. // 转换贸易方式
  1196. String dictLabel = DictUtils.getDictLabel(type, vo.getFTrademodeid().toString());
  1197. if (StringUtils.isNotEmpty(dictLabel)) {
  1198. vo.setFTrademodeName(dictLabel);
  1199. }
  1200. }
  1201. // 转换状态
  1202. vo.setAudit(AuditStateEnum.fromType(vo.getAuditState()).getName());
  1203. // 转换活动号
  1204. vo.setActName(WarehouseActIdEnum.fromActId(vo.getActId().intValue()).getName());
  1205. });
  1206. }
  1207. return appAuditItemVOList;
  1208. }
  1209. }