TCostManagementServiceImpl.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. package com.ruoyi.anpin.service.impl;
  2. import java.util.*;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.ruoyi.anpin.domain.TCostManagement;
  6. import com.ruoyi.anpin.domain.TCostManagementItem;
  7. import com.ruoyi.anpin.mapper.TCostManagementItemMapper;
  8. import com.ruoyi.anpin.mapper.TCostManagementMapper;
  9. import com.ruoyi.anpin.service.ITCostManagementService;
  10. import com.ruoyi.approvalFlow.domain.AuditItems;
  11. import com.ruoyi.approvalFlow.service.impl.AuditItemsServiceImpl;
  12. import com.ruoyi.basicData.domain.TFees;
  13. import com.ruoyi.basicData.mapper.TFeesMapper;
  14. import com.ruoyi.common.core.domain.AjaxResult;
  15. import com.ruoyi.common.core.domain.model.LoginUser;
  16. import com.ruoyi.common.utils.DateUtils;
  17. import com.ruoyi.common.utils.SecurityUtils;
  18. import com.ruoyi.common.utils.StringUtils;
  19. import com.ruoyi.system.domain.SysConfig;
  20. import com.ruoyi.system.mapper.SysConfigMapper;
  21. import com.ruoyi.warehouseBusiness.domain.TEnclosure;
  22. import com.ruoyi.warehouseBusiness.mapper.TEnclosureMapper;
  23. import com.ruoyi.warehouseBusiness.service.impl.BillnoSerialServiceImpl;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Service;
  26. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  27. /**
  28. * 费用管理Service业务层处理
  29. *
  30. * @author ruoyi
  31. * @date 2023-03-13
  32. */
  33. @Service
  34. public class TCostManagementServiceImpl implements ITCostManagementService
  35. {
  36. @Autowired
  37. private TCostManagementMapper tCostManagementMapper;
  38. @Autowired
  39. private BillnoSerialServiceImpl billnoSerialServiceImpl;
  40. @Autowired
  41. private TCostManagementItemMapper tCostManagementItemMapper;
  42. @Autowired
  43. private TEnclosureMapper tEnclosureMapper;
  44. @Autowired
  45. private TFeesMapper tFeesMapper;
  46. @Autowired
  47. private SysConfigMapper sysConfigMapper;
  48. @Autowired
  49. private AuditItemsServiceImpl auditItemsService;
  50. /**
  51. * 查询费用管理
  52. *
  53. * @param fId 费用管理ID
  54. * @return 费用管理
  55. */
  56. @Override
  57. public Map<String, Object> selectTCostManagementById(Long fId)
  58. {
  59. Map<String, Object> map = new HashMap<>();
  60. //查询费用管理主表数据
  61. TCostManagement tCostManagement = tCostManagementMapper.selectTCostManagementById(fId);
  62. // 费用
  63. List<Long> feesId = new ArrayList<>();
  64. //查询明细信息
  65. TCostManagementItem tCostManagementItem = new TCostManagementItem();
  66. tCostManagementItem.setfPid(tCostManagement.getfId());
  67. List<TCostManagementItem> itemList = tCostManagementItemMapper.selectTCostManagementItemList(tCostManagementItem);
  68. if (StringUtils.isNotEmpty(itemList)) {
  69. for (TCostManagementItem fees : itemList) {
  70. feesId.add(fees.getExpenseId());
  71. }
  72. }
  73. //查询费用
  74. List<TFees> feesList = new ArrayList<>();
  75. List<Long> longList = StringUtils.integerDeduplication(feesId);
  76. for (Long fees : longList) {
  77. TFees tFees = tFeesMapper.selectTFeesById(fees);
  78. if (StringUtils.isNotNull(tFees)) {
  79. feesList.add(tFees);
  80. }
  81. }
  82. // 查询附件表数据
  83. TEnclosure enclosure = new TEnclosure();
  84. enclosure.setfPid(fId);
  85. List<TEnclosure> enclosures = tEnclosureMapper.selectTEnclosureList(enclosure);
  86. if (StringUtils.isNotEmpty(enclosures)) {
  87. map.put("enclosures", enclosures);
  88. }
  89. map.put("tCostManagement", tCostManagement);
  90. map.put("itemList", itemList);
  91. map.put("feesList", feesList);
  92. return map;
  93. }
  94. /**
  95. * 查询费用管理列表
  96. *
  97. * @param tCostManagement 费用管理
  98. * @return 费用管理
  99. */
  100. @Override
  101. public List<TCostManagement> selectTCostManagementList(TCostManagement tCostManagement)
  102. {
  103. return tCostManagementMapper.selectTCostManagementList(tCostManagement);
  104. }
  105. /**
  106. * 新增费用管理
  107. *
  108. * @param tCostManagement 费用管理
  109. * @return 结果
  110. */
  111. @Override
  112. public AjaxResult insertTCostManagement(String tCostManagement, String tCostManagementItem, String tEnclosure, LoginUser loginUser)
  113. {
  114. Map<String, Object> map = new HashMap<>();
  115. TCostManagement detailed = JSONArray.parseObject(tCostManagement, TCostManagement.class);
  116. //保存主表信息
  117. if (StringUtils.isNull(detailed.getfId())) {// 如果是新数据
  118. // 业务编码
  119. String billNo = billnoSerialServiceImpl.getBillNo("FY", new Date());
  120. detailed.setfNo(billNo);
  121. detailed.setCreateBy(loginUser.getUser().getUserName());
  122. detailed.setCreateTime(new Date());
  123. detailed.setCreateDept(String.valueOf(loginUser.getUser().getDeptId()));
  124. tCostManagementMapper.insertTCostManagement(detailed);
  125. } else {
  126. detailed.setUpdateBy(loginUser.getUser().getUserName());
  127. detailed.setUpdateTime(new Date());
  128. tCostManagementMapper.updateTCostManagement(detailed);
  129. }
  130. //获得明细信息并保存
  131. List<TCostManagementItem> itemList = new ArrayList<>();
  132. if (StringUtils.isNotNull(tCostManagementItem) && !"[]".equals(tCostManagementItem)) {
  133. JSONArray jsonDrArray = JSONArray.parseArray(tCostManagementItem);
  134. itemList = JSONObject.parseArray(jsonDrArray.toJSONString(), TCostManagementItem.class);
  135. for (TCostManagementItem item : itemList) {
  136. if (StringUtils.isNull(item.getfId())) {// 如果是新数据
  137. item.setCreateBy(loginUser.getUser().getUserName());
  138. item.setCreateTime(new Date());
  139. item.setCreateDept(String.valueOf(loginUser.getUser().getDeptId()));
  140. tCostManagementItemMapper.insertTCostManagementItem(item);
  141. } else {
  142. item.setUpdateBy(loginUser.getUser().getUserName());
  143. item.setUpdateTime(new Date());
  144. tCostManagementItemMapper.updateTCostManagementItem(item);
  145. }
  146. }
  147. }
  148. //保存附件信息
  149. List<TEnclosure> enclosuresList = new ArrayList<>();
  150. if (StringUtils.isNotNull(tEnclosure) && !"[]".equals(tEnclosure)) {
  151. JSONArray jsonEnclosureArray = JSONArray.parseArray(tEnclosure);
  152. enclosuresList = JSONObject.parseArray(jsonEnclosureArray.toJSONString(), TEnclosure.class);
  153. long lineNo = 0L;
  154. for (TEnclosure enclosure : enclosuresList) {
  155. lineNo++;
  156. if (enclosure.getfId() == null) {
  157. enclosure.setfPid(detailed.getfId());
  158. enclosure.setfLineno(lineNo);
  159. enclosure.setCreateTime(new Date());
  160. enclosure.setCreateBy(loginUser.getUser().getUserName());
  161. tEnclosureMapper.insertTEnclosure(enclosure);
  162. } else {
  163. enclosure.setUpdateBy(loginUser.getUser().getUserName());
  164. enclosure.setUpdateTime(new Date());
  165. tEnclosureMapper.updateTEnclosure(enclosure);
  166. }
  167. }
  168. }
  169. map.put("tCostManagement",detailed);
  170. map.put("itemList", itemList);
  171. map.put("enclosuresList", enclosuresList);
  172. return AjaxResult.success("成功", map);
  173. }
  174. /**
  175. * 修改费用管理
  176. *
  177. * @param tCostManagement 费用管理
  178. * @return 结果
  179. */
  180. @Override
  181. public int updateTCostManagement(TCostManagement tCostManagement)
  182. {
  183. tCostManagement.setUpdateTime(DateUtils.getNowDate());
  184. return tCostManagementMapper.updateTCostManagement(tCostManagement);
  185. }
  186. /**
  187. * 批量删除费用管理
  188. *
  189. * @param fIds 需要删除的费用管理ID
  190. * @return 结果
  191. */
  192. @Override
  193. public int deleteTCostManagementByIds(Long[] fIds)
  194. {
  195. return tCostManagementMapper.deleteTCostManagementByIds(fIds);
  196. }
  197. /**
  198. * 删除费用管理信息
  199. *
  200. * @param fId 费用管理ID
  201. * @return 结果
  202. */
  203. @Override
  204. public int deleteTCostManagementById(Long fId)
  205. {
  206. return tCostManagementMapper.deleteTCostManagementById(fId);
  207. }
  208. @Override
  209. public AjaxResult submitCostManagement(String tCostManagement, String tCostManagementItem, String tEnclosure, LoginUser loginUser, String billType) {
  210. boolean isApprove = false;//是否开启审批流
  211. String key = "";//键
  212. long actId = 0L;//活动id
  213. Long billStatus = null;
  214. Integer i = null;
  215. Map<String, Object> map = new HashMap<>();
  216. if ("FYGL".equals(billType)) {
  217. actId = 560L;
  218. key = "anPingJingYuan.costManagement.ApprovalFlow";
  219. }
  220. SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique(key);
  221. if (StringUtils.isNull(sysConfig)) {
  222. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  223. return AjaxResult.error("系统参数异常,未找到开启审批流参数");
  224. }
  225. if ("0".equals(sysConfig.getConfigValue())) {
  226. isApprove = true;
  227. }
  228. if (isApprove) {
  229. billStatus = 1L;
  230. } else {
  231. billStatus = 3L;
  232. }
  233. TCostManagement detailed = JSONArray.parseObject(tCostManagement, TCostManagement.class);
  234. //保存主表信息
  235. if (StringUtils.isNull(detailed.getfId())) {// 如果是新数据
  236. // 业务编码
  237. String billNo = billnoSerialServiceImpl.getBillNo("FY", new Date());
  238. detailed.setfNo(billNo);
  239. detailed.setCreateBy(loginUser.getUser().getUserName());
  240. detailed.setCreateTime(new Date());
  241. detailed.setCreateDept(String.valueOf(loginUser.getUser().getDeptId()));
  242. tCostManagementMapper.insertTCostManagement(detailed);
  243. } else {
  244. detailed.setUpdateBy(loginUser.getUser().getUserName());
  245. detailed.setUpdateTime(new Date());
  246. tCostManagementMapper.updateTCostManagement(detailed);
  247. }
  248. //获得明细信息并保存
  249. List<TCostManagementItem> itemList = new ArrayList<>();
  250. if (StringUtils.isNotNull(tCostManagementItem) && !"[]".equals(tCostManagementItem)) {
  251. JSONArray jsonDrArray = JSONArray.parseArray(tCostManagementItem);
  252. itemList = JSONObject.parseArray(jsonDrArray.toJSONString(), TCostManagementItem.class);
  253. for (TCostManagementItem item : itemList) {
  254. if (StringUtils.isNull(item.getfId())) {// 如果是新数据
  255. item.setCreateBy(loginUser.getUser().getUserName());
  256. item.setCreateTime(new Date());
  257. item.setCreateDept(String.valueOf(loginUser.getUser().getDeptId()));
  258. tCostManagementItemMapper.insertTCostManagementItem(item);
  259. } else {
  260. item.setUpdateBy(loginUser.getUser().getUserName());
  261. item.setUpdateTime(new Date());
  262. tCostManagementItemMapper.updateTCostManagementItem(item);
  263. }
  264. }
  265. }
  266. //保存附件信息
  267. List<TEnclosure> enclosuresList = new ArrayList<>();
  268. if (StringUtils.isNotNull(tEnclosure) && !"[]".equals(tEnclosure)) {
  269. JSONArray jsonEnclosureArray = JSONArray.parseArray(tEnclosure);
  270. enclosuresList = JSONObject.parseArray(jsonEnclosureArray.toJSONString(), TEnclosure.class);
  271. long lineNo = 0L;
  272. for (TEnclosure enclosure : enclosuresList) {
  273. lineNo++;
  274. if (enclosure.getfId() == null) {
  275. enclosure.setfPid(detailed.getfId());
  276. enclosure.setfLineno(lineNo);
  277. enclosure.setCreateTime(new Date());
  278. enclosure.setCreateBy(loginUser.getUser().getUserName());
  279. tEnclosureMapper.insertTEnclosure(enclosure);
  280. } else {
  281. enclosure.setUpdateBy(loginUser.getUser().getUserName());
  282. enclosure.setUpdateTime(new Date());
  283. tEnclosureMapper.updateTEnclosure(enclosure);
  284. }
  285. }
  286. }
  287. if (isApprove) {
  288. AuditItems auditItems = new AuditItems();
  289. auditItems.setLevelId(0L);
  290. auditItems.setBillId(detailed.getfId());
  291. auditItems.setActId(actId);
  292. auditItems.setIffinalItem("F");
  293. auditItems.setBillNo(detailed.getfNo());
  294. // 存储业务类型(业务类型)
  295. auditItems.setRefno2(billType);
  296. auditItems.setRefno3(detailed.getfNo());
  297. auditItems.setSendUserId(loginUser.getUser().getUserId());
  298. auditItems.setSendName(SecurityUtils.getUsername());
  299. auditItems.setSendTime(new Date());
  300. auditItems.setAuditUserId(loginUser.getUser().getUserId());
  301. auditItems.setAuditItem(new Date());
  302. auditItems.setAuditOpTime(new Date());
  303. auditItems.setAuditMsg("提交");
  304. auditItems.setAuditStatus("O");
  305. AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
  306. // Long code = Long.valueOf(String.valueOf(approvalFlow.get("code"))).longValue();
  307. String code = approvalFlow.get("code").toString();
  308. // Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
  309. if ("500".equals(code)) {
  310. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  311. }
  312. return approvalFlow;
  313. }
  314. map.put("tCostManagement",detailed);
  315. map.put("itemList", itemList);
  316. map.put("enclosuresList", enclosuresList);
  317. return null;
  318. }
  319. }