TCostManagementServiceImpl.java 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622
  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.baomidou.mybatisplus.core.toolkit.ObjectUtils;
  6. import com.ruoyi.anpin.domain.TCostManagement;
  7. import com.ruoyi.anpin.domain.TCostManagementItem;
  8. import com.ruoyi.anpin.mapper.TCostManagementItemMapper;
  9. import com.ruoyi.anpin.mapper.TCostManagementMapper;
  10. import com.ruoyi.anpin.service.ITCostManagementService;
  11. import com.ruoyi.approvalFlow.domain.AuditItems;
  12. import com.ruoyi.approvalFlow.mapper.AuditItemsMapper;
  13. import com.ruoyi.approvalFlow.service.impl.AuditItemsServiceImpl;
  14. import com.ruoyi.basicData.mapper.TCorpsMapper;
  15. import com.ruoyi.basicData.mapper.TFeesMapper;
  16. import com.ruoyi.common.core.domain.AjaxResult;
  17. import com.ruoyi.common.core.domain.model.LoginUser;
  18. import com.ruoyi.common.utils.DateUtils;
  19. import com.ruoyi.common.utils.SecurityUtils;
  20. import com.ruoyi.common.utils.StringUtils;
  21. import com.ruoyi.system.domain.SysConfig;
  22. import com.ruoyi.system.mapper.SysConfigMapper;
  23. import com.ruoyi.system.mapper.SysDeptMapper;
  24. import com.ruoyi.system.mapper.SysUserMapper;
  25. import com.ruoyi.warehouseBusiness.domain.TEnclosure;
  26. import com.ruoyi.warehouseBusiness.mapper.TEnclosureMapper;
  27. import com.ruoyi.warehouseBusiness.service.impl.BillnoSerialServiceImpl;
  28. import org.springframework.beans.factory.annotation.Autowired;
  29. import org.springframework.stereotype.Service;
  30. import org.springframework.transaction.interceptor.TransactionAspectSupport;
  31. /**
  32. * 费用管理Service业务层处理
  33. *
  34. * @author ruoyi
  35. * @date 2023-03-13
  36. */
  37. @Service
  38. public class TCostManagementServiceImpl implements ITCostManagementService
  39. {
  40. @Autowired
  41. private TCostManagementMapper tCostManagementMapper;
  42. @Autowired
  43. private BillnoSerialServiceImpl billnoSerialServiceImpl;
  44. @Autowired
  45. private TCostManagementItemMapper tCostManagementItemMapper;
  46. @Autowired
  47. private TEnclosureMapper tEnclosureMapper;
  48. @Autowired
  49. private TFeesMapper tFeesMapper;
  50. @Autowired
  51. private SysConfigMapper sysConfigMapper;
  52. @Autowired
  53. private AuditItemsServiceImpl auditItemsService;
  54. @Autowired
  55. private SysDeptMapper sysDeptMapper;
  56. @Autowired
  57. private TCorpsMapper tCorpsMapper;
  58. @Autowired
  59. private SysUserMapper userMapper;
  60. @Autowired
  61. private AuditItemsMapper auditItemsMapper;
  62. /**
  63. * 查询费用管理
  64. *
  65. * @param fId 费用管理ID
  66. * @return 费用管理
  67. */
  68. @Override
  69. public Map<String, Object> selectTCostManagementById(Long fId)
  70. {
  71. Map<String, Object> map = new HashMap<>();
  72. //查询费用管理主表数据
  73. TCostManagement tCostManagement = tCostManagementMapper.selectTCostManagementById(fId);
  74. //获得审批流程审核人
  75. AuditItems item = new AuditItems();
  76. item.setBillId(tCostManagement.getfId());
  77. item.setActId(560L);
  78. List<AuditItems> auditItemsList = auditItemsMapper.selectAuditItemsUser(item);
  79. if (ObjectUtils.isNotNull(auditItemsList)){
  80. //提交人
  81. tCostManagement.setPresenterName(userMapper.selectUserById(auditItemsList.get(0).getAuditUserId()).getNickName());
  82. if (auditItemsList.size() >= 2){//一级审核人
  83. tCostManagement.setFirstLevelReviewerName(userMapper.selectUserById(auditItemsList.get(1).getAuditUserId()).getNickName());
  84. }
  85. if (auditItemsList.size() >= 3){//二级审核人
  86. tCostManagement.setSecondaryReviewerName(userMapper.selectUserById(auditItemsList.get(2).getAuditUserId()).getNickName());
  87. }
  88. }
  89. //查询明细信息
  90. TCostManagementItem tCostManagementItem = new TCostManagementItem();
  91. tCostManagementItem.setfPid(tCostManagement.getfId());
  92. List<TCostManagementItem> itemList = tCostManagementItemMapper.selectTCostManagementItemList(tCostManagementItem);
  93. // 查询附件表数据
  94. TEnclosure enclosure = new TEnclosure();
  95. enclosure.setfPid(fId);
  96. enclosure.setfMainType("CostManagement");
  97. List<TEnclosure> enclosures = tEnclosureMapper.selectTEnclosureList(enclosure);
  98. map.put("tEnclosure", enclosures);
  99. map.put("tCostManagement", tCostManagement);
  100. map.put("tCostManagementItem", itemList);
  101. return map;
  102. }
  103. /**
  104. * 查询费用管理列表
  105. *
  106. * @param tCostManagement 费用管理
  107. * @return 费用管理
  108. */
  109. @Override
  110. public List<TCostManagement> selectTCostManagementList(TCostManagement tCostManagement)
  111. {
  112. return tCostManagementMapper.selectManagementList(tCostManagement);
  113. }
  114. /**
  115. * 新增费用管理
  116. *
  117. * @param tCostManagement 费用管理
  118. * @return 结果
  119. */
  120. @Override
  121. public AjaxResult insertTCostManagement(String tCostManagement, String tCostManagementItem, String tEnclosure, LoginUser loginUser)
  122. {
  123. Map<String, Object> map = new HashMap<>();
  124. TCostManagement detailed = JSONArray.parseObject(tCostManagement, TCostManagement.class);
  125. if (StringUtils.isNotNull(detailed.getfId())){
  126. TCostManagement management = tCostManagementMapper.selectTCostManagementById(detailed.getfId());
  127. if (management.getfBillstatus() > 0){
  128. return AjaxResult.error("该订单已提交,请刷新页面");
  129. }
  130. }
  131. if (ObjectUtils.isEmpty(detailed.getDeptId())){
  132. return AjaxResult.error("部门不能为空");
  133. }
  134. detailed.setDeptName(sysDeptMapper.selectDeptById(detailed.getDeptId()).getDeptName());//部门名称
  135. //保存主表信息
  136. if (StringUtils.isNull(detailed.getfId())) {// 如果是新数据
  137. // 业务编码
  138. String billNo = billnoSerialServiceImpl.getBillNo("FY", new Date());
  139. detailed.setfNo(billNo);
  140. detailed.setCreateById(loginUser.getUser().getUserId());
  141. detailed.setCreateBy(loginUser.getUser().getUserName());
  142. detailed.setCreateTime(new Date());
  143. detailed.setCreateDept(String.valueOf(loginUser.getUser().getDeptId()));
  144. detailed.setCreateDeptName(sysDeptMapper.selectDeptById(loginUser.getUser().getDeptId()).getDeptName());
  145. tCostManagementMapper.insertTCostManagement(detailed);
  146. } else {
  147. detailed.setUpdateBy(loginUser.getUser().getUserName());
  148. detailed.setUpdateTime(new Date());
  149. tCostManagementMapper.updateTCostManagement(detailed);
  150. }
  151. //获得明细信息并保存
  152. List<TCostManagementItem> itemList = new ArrayList<>();
  153. if (StringUtils.isNotNull(tCostManagementItem) && !"[]".equals(tCostManagementItem)) {
  154. JSONArray jsonDrArray = JSONArray.parseArray(tCostManagementItem);
  155. itemList = JSONObject.parseArray(jsonDrArray.toJSONString(), TCostManagementItem.class);
  156. for (TCostManagementItem item : itemList) {
  157. if (ObjectUtils.isEmpty(item.getPersonnelId())){
  158. return AjaxResult.error("所属人员不能为空");
  159. }else {
  160. item.setPersonnelName(userMapper.selectUserById(item.getPersonnelId()).getNickName());
  161. }
  162. if (ObjectUtils.isEmpty(item.getDepartmentId())){
  163. return AjaxResult.error("所属部门不能为空");
  164. }
  165. item.setDepartmentName(sysDeptMapper.selectDeptById(item.getDepartmentId()).getDeptName());//所属部门名称
  166. if (ObjectUtils.isNotEmpty(item.getExpenseId())){//费用名称
  167. item.setExpenseName(tFeesMapper.selectTFeesById(item.getExpenseId()).getfName());
  168. }
  169. if (ObjectUtils.isNotEmpty(item.getBelongsProjectId())){//项目名称
  170. item.setBelongsProjectName(tCorpsMapper.selectTCorpsById(item.getBelongsProjectId()).getfName());
  171. }
  172. if (StringUtils.isNull(item.getfId())) {// 如果是新数据
  173. item.setfPid(detailed.getfId());
  174. item.setCreateBy(loginUser.getUser().getUserName());
  175. item.setCreateTime(new Date());
  176. item.setCreateDept(String.valueOf(loginUser.getUser().getDeptId()));
  177. tCostManagementItemMapper.insertTCostManagementItem(item);
  178. } else {
  179. item.setUpdateBy(loginUser.getUser().getUserName());
  180. item.setUpdateTime(new Date());
  181. tCostManagementItemMapper.updateTCostManagementItem(item);
  182. }
  183. }
  184. }
  185. //保存附件信息
  186. List<TEnclosure> enclosuresList = new ArrayList<>();
  187. if (StringUtils.isNotNull(tEnclosure) && !"[]".equals(tEnclosure)) {
  188. JSONArray jsonEnclosureArray = JSONArray.parseArray(tEnclosure);
  189. enclosuresList = JSONObject.parseArray(jsonEnclosureArray.toJSONString(), TEnclosure.class);
  190. long lineNo = 0L;
  191. for (TEnclosure enclosure : enclosuresList) {
  192. lineNo++;
  193. if (enclosure.getfId() == null) {
  194. enclosure.setfPid(detailed.getfId());
  195. enclosure.setfLineno(lineNo);
  196. enclosure.setCreateTime(new Date());
  197. enclosure.setCreateBy(loginUser.getUser().getUserName());
  198. enclosure.setfMainType("CostManagement");
  199. tEnclosureMapper.insertTEnclosure(enclosure);
  200. } else {
  201. enclosure.setUpdateBy(loginUser.getUser().getUserName());
  202. enclosure.setUpdateTime(new Date());
  203. enclosure.setfMainType("CostManagement");
  204. tEnclosureMapper.updateTEnclosure(enclosure);
  205. }
  206. }
  207. }
  208. map.put("tCostManagement",detailed);
  209. map.put("tCostManagementItem", itemList);
  210. map.put("tEnclosure", enclosuresList);
  211. return AjaxResult.success("成功", map);
  212. }
  213. /**
  214. * 修改费用管理
  215. *
  216. * @param tCostManagement 费用管理
  217. * @return 结果
  218. */
  219. @Override
  220. public int updateTCostManagement(TCostManagement tCostManagement)
  221. {
  222. tCostManagement.setUpdateTime(DateUtils.getNowDate());
  223. return tCostManagementMapper.updateTCostManagement(tCostManagement);
  224. }
  225. /**
  226. * 批量删除费用管理
  227. *
  228. * @param fIds 需要删除的费用管理ID
  229. * @return 结果
  230. */
  231. @Override
  232. public int deleteTCostManagementByIds(Long[] fIds)
  233. {
  234. return tCostManagementMapper.deleteTCostManagementByIds(fIds);
  235. }
  236. /**
  237. * 删除费用管理信息
  238. *
  239. * @param fId 费用管理ID
  240. * @return 结果
  241. */
  242. @Override
  243. public int deleteTCostManagementById(Long fId)
  244. {
  245. return tCostManagementMapper.deleteTCostManagementById(fId);
  246. }
  247. @Override
  248. public AjaxResult submitCostManagement(String tCostManagement, String tCostManagementItem, String tEnclosure, LoginUser loginUser, String billType) {
  249. boolean isApprove = false;//是否开启审批流
  250. String key = "";//键
  251. long actId = 0L;//活动id
  252. String billStatus = null;
  253. Integer i = null;
  254. Map<String, Object> map = new HashMap<>();
  255. if ("FYGL".equals(billType)) {
  256. actId = 560L;
  257. key = "anPingJingYuan.costManagement.ApprovalFlow";
  258. }
  259. SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique(key);
  260. if (StringUtils.isNull(sysConfig)) {
  261. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  262. return AjaxResult.error("系统参数异常,未找到开启审批流参数");
  263. }
  264. if ("0".equals(sysConfig.getConfigValue())) {
  265. isApprove = true;
  266. }
  267. if (isApprove) {
  268. billStatus = "1";
  269. } else {
  270. billStatus = "4";
  271. }
  272. TCostManagement detailed = JSONArray.parseObject(tCostManagement, TCostManagement.class);
  273. if (ObjectUtils.isEmpty(detailed.getDeptId())){
  274. return AjaxResult.error("部门不能为空");
  275. }
  276. detailed.setDeptName(sysDeptMapper.selectDeptById(detailed.getDeptId()).getDeptName());//部门名称
  277. detailed.setfStatus(billStatus);
  278. detailed.setfBillstatus(5);
  279. detailed.setApplicantId(loginUser.getUser().getUserId());
  280. detailed.setApplicantName(loginUser.getUser().getUserName());
  281. detailed.setfReviewDate(new Date());
  282. //保存主表信息
  283. if (StringUtils.isNull(detailed.getfId())) {// 如果是新数据
  284. // 业务编码
  285. String billNo = billnoSerialServiceImpl.getBillNo("FY", new Date());
  286. detailed.setfNo(billNo);
  287. detailed.setCreateById(loginUser.getUser().getUserId());
  288. detailed.setCreateBy(loginUser.getUser().getUserName());
  289. detailed.setCreateTime(new Date());
  290. detailed.setCreateDept(String.valueOf(loginUser.getUser().getDeptId()));
  291. detailed.setCreateDeptName(sysDeptMapper.selectDeptById(loginUser.getUser().getDeptId()).getDeptName());
  292. i = tCostManagementMapper.insertTCostManagement(detailed);
  293. } else {
  294. detailed.setUpdateBy(loginUser.getUser().getUserName());
  295. detailed.setUpdateTime(new Date());
  296. i = tCostManagementMapper.updateTCostManagement(detailed);
  297. }
  298. //获得明细信息并保存
  299. List<TCostManagementItem> itemList = new ArrayList<>();
  300. if (StringUtils.isNotNull(tCostManagementItem) && !"[]".equals(tCostManagementItem)) {
  301. JSONArray jsonDrArray = JSONArray.parseArray(tCostManagementItem);
  302. itemList = JSONObject.parseArray(jsonDrArray.toJSONString(), TCostManagementItem.class);
  303. for (TCostManagementItem item : itemList) {
  304. if (ObjectUtils.isEmpty(item.getPersonnelId())){
  305. return AjaxResult.error("所属人员不能为空");
  306. }else {
  307. item.setPersonnelName(userMapper.selectUserById(item.getPersonnelId()).getNickName());
  308. }
  309. if (ObjectUtils.isEmpty(item.getDepartmentId())){
  310. return AjaxResult.error("所属部门不能为空");
  311. }
  312. item.setDepartmentName(sysDeptMapper.selectDeptById(item.getDepartmentId()).getDeptName());//所属部门名称
  313. if (ObjectUtils.isNotEmpty(item.getExpenseId())){//费用名称
  314. item.setExpenseName(tFeesMapper.selectTFeesById(item.getExpenseId()).getfName());
  315. }
  316. if (ObjectUtils.isNotEmpty(item.getBelongsProjectId())){//项目名称
  317. item.setBelongsProjectName(tCorpsMapper.selectTCorpsById(item.getBelongsProjectId()).getfName());
  318. }
  319. if (StringUtils.isNull(item.getfId())) {// 如果是新数据
  320. item.setfPid(detailed.getfId());
  321. item.setCreateBy(loginUser.getUser().getUserName());
  322. item.setCreateTime(new Date());
  323. item.setCreateDept(String.valueOf(loginUser.getUser().getDeptId()));
  324. i = tCostManagementItemMapper.insertTCostManagementItem(item);
  325. } else {
  326. item.setUpdateBy(loginUser.getUser().getUserName());
  327. item.setUpdateTime(new Date());
  328. i = tCostManagementItemMapper.updateTCostManagementItem(item);
  329. }
  330. }
  331. }
  332. //保存附件信息
  333. List<TEnclosure> enclosuresList = new ArrayList<>();
  334. if (StringUtils.isNotNull(tEnclosure) && !"[]".equals(tEnclosure)) {
  335. JSONArray jsonEnclosureArray = JSONArray.parseArray(tEnclosure);
  336. enclosuresList = JSONObject.parseArray(jsonEnclosureArray.toJSONString(), TEnclosure.class);
  337. long lineNo = 0L;
  338. for (TEnclosure enclosure : enclosuresList) {
  339. lineNo++;
  340. if (enclosure.getfId() == null) {
  341. enclosure.setfPid(detailed.getfId());
  342. enclosure.setfLineno(lineNo);
  343. enclosure.setCreateTime(new Date());
  344. enclosure.setCreateBy(loginUser.getUser().getUserName());
  345. enclosure.setfMainType("CostManagement");
  346. i = tEnclosureMapper.insertTEnclosure(enclosure);
  347. } else {
  348. enclosure.setUpdateBy(loginUser.getUser().getUserName());
  349. enclosure.setUpdateTime(new Date());
  350. enclosure.setfMainType("CostManagement");
  351. i = tEnclosureMapper.updateTEnclosure(enclosure);
  352. }
  353. }
  354. }
  355. if (isApprove) {
  356. AuditItems auditItems = new AuditItems();
  357. auditItems.setLevelId(0L);
  358. auditItems.setBillId(detailed.getfId());
  359. auditItems.setActId(actId);
  360. auditItems.setIffinalItem("F");
  361. auditItems.setBillNo(detailed.getfNo());
  362. // 存储业务类型(业务类型)
  363. auditItems.setRefno1(String.valueOf(itemList.get(0).getBelongsProjectId()));
  364. auditItems.setRefno2(billType);
  365. auditItems.setRefno3(detailed.getfNo());
  366. auditItems.setSendUserId(loginUser.getUser().getUserId());
  367. auditItems.setSendName(SecurityUtils.getUsername());
  368. auditItems.setSendTime(new Date());
  369. auditItems.setAuditUserId(loginUser.getUser().getUserId());
  370. auditItems.setAuditItem(new Date());
  371. auditItems.setAuditOpTime(new Date());
  372. auditItems.setAuditMsg("提交");
  373. auditItems.setAuditStatus("O");
  374. AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
  375. String code = approvalFlow.get("code").toString();
  376. if ("500".equals(code)) {
  377. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  378. }
  379. return approvalFlow;
  380. }
  381. map.put("tCostManagement",detailed);
  382. map.put("tCostManagementItem", itemList);
  383. map.put("tEnclosure", enclosuresList);
  384. if (i != null && i > 0) {
  385. return AjaxResult.success("success", map);
  386. } else {
  387. TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  388. String error = null;
  389. if (detailed.getfId() == null) {
  390. error = "费用管理请核失败,请联系管理员";
  391. }
  392. return AjaxResult.error(error);
  393. }
  394. }
  395. /**
  396. * 获取费用管理环比分析数据
  397. * @param expenseIds 费用名称
  398. * @param year 年份
  399. */
  400. public AjaxResult costLinkAnalysis(String expenseIds, String year){
  401. Map<String, Object> map = new HashMap<>();
  402. //获得列表数据
  403. List<Map<String, Object>> list = tCostManagementMapper.costLinkAnalysis(expenseIds, year);
  404. //组装环比数据
  405. List<Object> expenseNameList = new ArrayList<>();
  406. List<Object> januaryList = new ArrayList<>();
  407. List<Object> februaryList = new ArrayList<>();
  408. List<Object> marchList = new ArrayList<>();
  409. List<Object> aprilList = new ArrayList<>();
  410. List<Object> mayList = new ArrayList<>();
  411. List<Object> juneList = new ArrayList<>();
  412. List<Object> julyList = new ArrayList<>();
  413. List<Object> augustList = new ArrayList<>();
  414. List<Object> septemberList = new ArrayList<>();
  415. List<Object> octoberList = new ArrayList<>();
  416. List<Object> novemberList = new ArrayList<>();
  417. List<Object> decemberList = new ArrayList<>();
  418. expenseNameList.add("费用名称");
  419. januaryList.add("一月");
  420. februaryList.add("二月");
  421. marchList.add("三月");
  422. aprilList.add("四月");
  423. mayList.add("五月");
  424. juneList.add("六月");
  425. julyList.add("七月");
  426. augustList.add("八月");
  427. septemberList.add("九月");
  428. octoberList.add("十月");
  429. novemberList.add("十一月");
  430. decemberList.add("十二月");
  431. list.forEach(e -> {
  432. expenseNameList.add(e.get("expenseName"));
  433. januaryList.add(e.get("amount1"));
  434. februaryList.add(e.get("amount2"));
  435. marchList.add(e.get("amount3"));
  436. aprilList.add(e.get("amount4"));
  437. mayList.add(e.get("amount5"));
  438. juneList.add(e.get("amount6"));
  439. julyList.add(e.get("amount7"));
  440. augustList.add(e.get("amount8"));
  441. septemberList.add(e.get("amount9"));
  442. octoberList.add(e.get("amount10"));
  443. novemberList.add(e.get("amount11"));
  444. decemberList.add(e.get("amount12"));
  445. });
  446. List<List<Object>> objectMap = new ArrayList<>();
  447. objectMap.add(expenseNameList);
  448. objectMap.add(januaryList);
  449. objectMap.add(februaryList);
  450. objectMap.add(marchList);
  451. objectMap.add(aprilList);
  452. objectMap.add(mayList);
  453. objectMap.add(juneList);
  454. objectMap.add(julyList);
  455. objectMap.add(augustList);
  456. objectMap.add(septemberList);
  457. objectMap.add(octoberList);
  458. objectMap.add(novemberList);
  459. objectMap.add(decemberList);
  460. map.put("list", list);
  461. map.put("LinkAnalysisList", objectMap);
  462. return AjaxResult.success("成功", map);
  463. }
  464. /**
  465. * 获取费用管理同比分析数据
  466. * @param expenseIds 费用名称
  467. * @param currentDate 当前日期
  468. * @param comparisonDate 对比日期
  469. */
  470. public AjaxResult costYOYAnalysis(String expenseIds, String currentDate, String comparisonDate){
  471. Map<String, Object> map = new HashMap<>();
  472. //获得列表数据
  473. List<Map<String, Object>> list = tCostManagementMapper.costYOYAnalysis(expenseIds, currentDate, comparisonDate);
  474. //组装环比数据
  475. List<Object> expenseNameList = new ArrayList<>();
  476. List<Object> currentList = new ArrayList<>();
  477. List<Object> comparisonList = new ArrayList<>();
  478. if (currentDate.equals(comparisonDate)){
  479. return AjaxResult.error("当前日期与对比日期不能相同请重新选择");
  480. }
  481. expenseNameList.add("费用名称");
  482. currentList.add(currentDate);
  483. comparisonList.add(comparisonDate);
  484. list.forEach(e -> {
  485. expenseNameList.add(e.get("expenseName"));
  486. currentList.add(e.get("currentAmount"));
  487. comparisonList.add(e.get("comparisonAmount"));
  488. });
  489. List<List<Object>> objectMap = new ArrayList<>();
  490. objectMap.add(expenseNameList);
  491. objectMap.add(currentList);
  492. objectMap.add(comparisonList);
  493. map.put("list", list);
  494. map.put("costYOYAnalysisList", objectMap);
  495. return AjaxResult.success("成功", map);
  496. }
  497. /**
  498. * 获取利润分析环比数据
  499. * @param corpId 项目名称
  500. * @param year 年
  501. */
  502. public AjaxResult profitAnalysis(String corpId, String year){
  503. Map<String, Object> map = new HashMap<>();
  504. //获得列表数据
  505. List<Map<String, Object>> list = tCostManagementMapper.profitAnalysis(corpId, year);
  506. //组装环比数据
  507. List<Object> expenseNameList = new ArrayList<>();
  508. List<Object> januaryList = new ArrayList<>();
  509. List<Object> februaryList = new ArrayList<>();
  510. List<Object> marchList = new ArrayList<>();
  511. List<Object> aprilList = new ArrayList<>();
  512. List<Object> mayList = new ArrayList<>();
  513. List<Object> juneList = new ArrayList<>();
  514. List<Object> julyList = new ArrayList<>();
  515. List<Object> augustList = new ArrayList<>();
  516. List<Object> septemberList = new ArrayList<>();
  517. List<Object> octoberList = new ArrayList<>();
  518. List<Object> novemberList = new ArrayList<>();
  519. List<Object> decemberList = new ArrayList<>();
  520. expenseNameList.add("项目名称");
  521. januaryList.add("一月");
  522. februaryList.add("二月");
  523. marchList.add("三月");
  524. aprilList.add("四月");
  525. mayList.add("五月");
  526. juneList.add("六月");
  527. julyList.add("七月");
  528. augustList.add("八月");
  529. septemberList.add("九月");
  530. octoberList.add("十月");
  531. novemberList.add("十一月");
  532. decemberList.add("十二月");
  533. list.forEach(e -> {
  534. expenseNameList.add(e.get("fname"));
  535. januaryList.add(e.get("profit1"));
  536. februaryList.add(e.get("profit2"));
  537. marchList.add(e.get("profit3"));
  538. aprilList.add(e.get("profit4"));
  539. mayList.add(e.get("profit5"));
  540. juneList.add(e.get("profit6"));
  541. julyList.add(e.get("profit7"));
  542. augustList.add(e.get("profit8"));
  543. septemberList.add(e.get("profit9"));
  544. octoberList.add(e.get("profit10"));
  545. novemberList.add(e.get("profit11"));
  546. decemberList.add(e.get("profit12"));
  547. });
  548. List<List<Object>> objectMap = new ArrayList<>();
  549. objectMap.add(expenseNameList);
  550. objectMap.add(januaryList);
  551. objectMap.add(februaryList);
  552. objectMap.add(marchList);
  553. objectMap.add(aprilList);
  554. objectMap.add(mayList);
  555. objectMap.add(juneList);
  556. objectMap.add(julyList);
  557. objectMap.add(augustList);
  558. objectMap.add(septemberList);
  559. objectMap.add(octoberList);
  560. objectMap.add(novemberList);
  561. objectMap.add(decemberList);
  562. map.put("list", list);
  563. map.put("profitAnalysisList", objectMap);
  564. return AjaxResult.success("成功", map);
  565. }
  566. }