AuditPathsServiceImpl.java 60 KB

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