|
|
@@ -0,0 +1,344 @@
|
|
|
+package com.ruoyi.anpin.service.impl;
|
|
|
+
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.ruoyi.anpin.domain.TCostManagement;
|
|
|
+import com.ruoyi.anpin.domain.TCostManagementItem;
|
|
|
+import com.ruoyi.anpin.mapper.TCostManagementItemMapper;
|
|
|
+import com.ruoyi.anpin.mapper.TCostManagementMapper;
|
|
|
+import com.ruoyi.anpin.service.ITCostManagementService;
|
|
|
+import com.ruoyi.approvalFlow.domain.AuditItems;
|
|
|
+import com.ruoyi.approvalFlow.service.impl.AuditItemsServiceImpl;
|
|
|
+import com.ruoyi.basicData.domain.TFees;
|
|
|
+import com.ruoyi.basicData.mapper.TFeesMapper;
|
|
|
+import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
+import com.ruoyi.common.core.domain.model.LoginUser;
|
|
|
+import com.ruoyi.common.utils.DateUtils;
|
|
|
+import com.ruoyi.common.utils.SecurityUtils;
|
|
|
+import com.ruoyi.common.utils.StringUtils;
|
|
|
+import com.ruoyi.system.domain.SysConfig;
|
|
|
+import com.ruoyi.system.mapper.SysConfigMapper;
|
|
|
+import com.ruoyi.warehouseBusiness.domain.TEnclosure;
|
|
|
+import com.ruoyi.warehouseBusiness.mapper.TEnclosureMapper;
|
|
|
+import com.ruoyi.warehouseBusiness.service.impl.BillnoSerialServiceImpl;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 费用管理Service业务层处理
|
|
|
+ *
|
|
|
+ * @author ruoyi
|
|
|
+ * @date 2023-03-13
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class TCostManagementServiceImpl implements ITCostManagementService
|
|
|
+{
|
|
|
+ @Autowired
|
|
|
+ private TCostManagementMapper tCostManagementMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private BillnoSerialServiceImpl billnoSerialServiceImpl;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TCostManagementItemMapper tCostManagementItemMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TEnclosureMapper tEnclosureMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private TFeesMapper tFeesMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SysConfigMapper sysConfigMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private AuditItemsServiceImpl auditItemsService;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询费用管理
|
|
|
+ *
|
|
|
+ * @param fId 费用管理ID
|
|
|
+ * @return 费用管理
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> selectTCostManagementById(Long fId)
|
|
|
+ {
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ //查询费用管理主表数据
|
|
|
+ TCostManagement tCostManagement = tCostManagementMapper.selectTCostManagementById(fId);
|
|
|
+ // 费用
|
|
|
+ List<Long> feesId = new ArrayList<>();
|
|
|
+ //查询明细信息
|
|
|
+ TCostManagementItem tCostManagementItem = new TCostManagementItem();
|
|
|
+ tCostManagementItem.setfPid(tCostManagement.getfId());
|
|
|
+ List<TCostManagementItem> itemList = tCostManagementItemMapper.selectTCostManagementItemList(tCostManagementItem);
|
|
|
+ if (StringUtils.isNotEmpty(itemList)) {
|
|
|
+ for (TCostManagementItem fees : itemList) {
|
|
|
+ feesId.add(fees.getExpenseId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //查询费用
|
|
|
+ List<TFees> feesList = new ArrayList<>();
|
|
|
+ List<Long> longList = StringUtils.integerDeduplication(feesId);
|
|
|
+ for (Long fees : longList) {
|
|
|
+ TFees tFees = tFeesMapper.selectTFeesById(fees);
|
|
|
+ if (StringUtils.isNotNull(tFees)) {
|
|
|
+ feesList.add(tFees);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询附件表数据
|
|
|
+ TEnclosure enclosure = new TEnclosure();
|
|
|
+ enclosure.setfPid(fId);
|
|
|
+ List<TEnclosure> enclosures = tEnclosureMapper.selectTEnclosureList(enclosure);
|
|
|
+ if (StringUtils.isNotEmpty(enclosures)) {
|
|
|
+ map.put("enclosures", enclosures);
|
|
|
+ }
|
|
|
+
|
|
|
+ map.put("tCostManagement", tCostManagement);
|
|
|
+ map.put("itemList", itemList);
|
|
|
+ map.put("feesList", feesList);
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询费用管理列表
|
|
|
+ *
|
|
|
+ * @param tCostManagement 费用管理
|
|
|
+ * @return 费用管理
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<TCostManagement> selectTCostManagementList(TCostManagement tCostManagement)
|
|
|
+ {
|
|
|
+ return tCostManagementMapper.selectTCostManagementList(tCostManagement);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增费用管理
|
|
|
+ *
|
|
|
+ * @param tCostManagement 费用管理
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public AjaxResult insertTCostManagement(String tCostManagement, String tCostManagementItem, String tEnclosure, LoginUser loginUser)
|
|
|
+ {
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ TCostManagement detailed = JSONArray.parseObject(tCostManagement, TCostManagement.class);
|
|
|
+
|
|
|
+ //保存主表信息
|
|
|
+ if (StringUtils.isNull(detailed.getfId())) {// 如果是新数据
|
|
|
+ // 业务编码
|
|
|
+ String billNo = billnoSerialServiceImpl.getBillNo("FY", new Date());
|
|
|
+ detailed.setfNo(billNo);
|
|
|
+ detailed.setCreateBy(loginUser.getUser().getUserName());
|
|
|
+ detailed.setCreateTime(new Date());
|
|
|
+ detailed.setCreateDept(String.valueOf(loginUser.getUser().getDeptId()));
|
|
|
+ tCostManagementMapper.insertTCostManagement(detailed);
|
|
|
+ } else {
|
|
|
+ detailed.setUpdateBy(loginUser.getUser().getUserName());
|
|
|
+ detailed.setUpdateTime(new Date());
|
|
|
+ tCostManagementMapper.updateTCostManagement(detailed);
|
|
|
+ }
|
|
|
+ //获得明细信息并保存
|
|
|
+ List<TCostManagementItem> itemList = new ArrayList<>();
|
|
|
+ if (StringUtils.isNotNull(tCostManagementItem) && !"[]".equals(tCostManagementItem)) {
|
|
|
+ JSONArray jsonDrArray = JSONArray.parseArray(tCostManagementItem);
|
|
|
+ itemList = JSONObject.parseArray(jsonDrArray.toJSONString(), TCostManagementItem.class);
|
|
|
+
|
|
|
+ for (TCostManagementItem item : itemList) {
|
|
|
+ if (StringUtils.isNull(item.getfId())) {// 如果是新数据
|
|
|
+ item.setCreateBy(loginUser.getUser().getUserName());
|
|
|
+ item.setCreateTime(new Date());
|
|
|
+ item.setCreateDept(String.valueOf(loginUser.getUser().getDeptId()));
|
|
|
+ tCostManagementItemMapper.insertTCostManagementItem(item);
|
|
|
+ } else {
|
|
|
+ item.setUpdateBy(loginUser.getUser().getUserName());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ tCostManagementItemMapper.updateTCostManagementItem(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //保存附件信息
|
|
|
+ List<TEnclosure> enclosuresList = new ArrayList<>();
|
|
|
+ if (StringUtils.isNotNull(tEnclosure) && !"[]".equals(tEnclosure)) {
|
|
|
+ JSONArray jsonEnclosureArray = JSONArray.parseArray(tEnclosure);
|
|
|
+ enclosuresList = JSONObject.parseArray(jsonEnclosureArray.toJSONString(), TEnclosure.class);
|
|
|
+ long lineNo = 0L;
|
|
|
+ for (TEnclosure enclosure : enclosuresList) {
|
|
|
+ lineNo++;
|
|
|
+ if (enclosure.getfId() == null) {
|
|
|
+ enclosure.setfPid(detailed.getfId());
|
|
|
+ enclosure.setfLineno(lineNo);
|
|
|
+ enclosure.setCreateTime(new Date());
|
|
|
+ enclosure.setCreateBy(loginUser.getUser().getUserName());
|
|
|
+ tEnclosureMapper.insertTEnclosure(enclosure);
|
|
|
+ } else {
|
|
|
+ enclosure.setUpdateBy(loginUser.getUser().getUserName());
|
|
|
+ enclosure.setUpdateTime(new Date());
|
|
|
+ tEnclosureMapper.updateTEnclosure(enclosure);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ map.put("tCostManagement",detailed);
|
|
|
+ map.put("itemList", itemList);
|
|
|
+ map.put("enclosuresList", enclosuresList);
|
|
|
+
|
|
|
+ return AjaxResult.success("成功", map);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改费用管理
|
|
|
+ *
|
|
|
+ * @param tCostManagement 费用管理
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int updateTCostManagement(TCostManagement tCostManagement)
|
|
|
+ {
|
|
|
+ tCostManagement.setUpdateTime(DateUtils.getNowDate());
|
|
|
+ return tCostManagementMapper.updateTCostManagement(tCostManagement);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量删除费用管理
|
|
|
+ *
|
|
|
+ * @param fIds 需要删除的费用管理ID
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int deleteTCostManagementByIds(Long[] fIds)
|
|
|
+ {
|
|
|
+ return tCostManagementMapper.deleteTCostManagementByIds(fIds);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 删除费用管理信息
|
|
|
+ *
|
|
|
+ * @param fId 费用管理ID
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public int deleteTCostManagementById(Long fId)
|
|
|
+ {
|
|
|
+ return tCostManagementMapper.deleteTCostManagementById(fId);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AjaxResult submitCostManagement(String tCostManagement, String tCostManagementItem, String tEnclosure, LoginUser loginUser, String billType) {
|
|
|
+ boolean isApprove = false;//是否开启审批流
|
|
|
+ String key = "";//键
|
|
|
+ long actId = 0L;//活动id
|
|
|
+ Long billStatus = null;
|
|
|
+ Integer i = null;
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ if ("FYGL".equals(billType)) {
|
|
|
+ actId = 560L;
|
|
|
+ key = "anPingJingYuan.costManagement.ApprovalFlow";
|
|
|
+ }
|
|
|
+ SysConfig sysConfig = sysConfigMapper.checkConfigKeyUnique(key);
|
|
|
+ if (StringUtils.isNull(sysConfig)) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ return AjaxResult.error("系统参数异常,未找到开启审批流参数");
|
|
|
+ }
|
|
|
+ if ("0".equals(sysConfig.getConfigValue())) {
|
|
|
+ isApprove = true;
|
|
|
+ }
|
|
|
+ if (isApprove) {
|
|
|
+ billStatus = 1L;
|
|
|
+ } else {
|
|
|
+ billStatus = 3L;
|
|
|
+ }
|
|
|
+ TCostManagement detailed = JSONArray.parseObject(tCostManagement, TCostManagement.class);
|
|
|
+
|
|
|
+ //保存主表信息
|
|
|
+ if (StringUtils.isNull(detailed.getfId())) {// 如果是新数据
|
|
|
+ // 业务编码
|
|
|
+ String billNo = billnoSerialServiceImpl.getBillNo("FY", new Date());
|
|
|
+ detailed.setfNo(billNo);
|
|
|
+ detailed.setCreateBy(loginUser.getUser().getUserName());
|
|
|
+ detailed.setCreateTime(new Date());
|
|
|
+ detailed.setCreateDept(String.valueOf(loginUser.getUser().getDeptId()));
|
|
|
+ tCostManagementMapper.insertTCostManagement(detailed);
|
|
|
+ } else {
|
|
|
+ detailed.setUpdateBy(loginUser.getUser().getUserName());
|
|
|
+ detailed.setUpdateTime(new Date());
|
|
|
+ tCostManagementMapper.updateTCostManagement(detailed);
|
|
|
+ }
|
|
|
+ //获得明细信息并保存
|
|
|
+ List<TCostManagementItem> itemList = new ArrayList<>();
|
|
|
+ if (StringUtils.isNotNull(tCostManagementItem) && !"[]".equals(tCostManagementItem)) {
|
|
|
+ JSONArray jsonDrArray = JSONArray.parseArray(tCostManagementItem);
|
|
|
+ itemList = JSONObject.parseArray(jsonDrArray.toJSONString(), TCostManagementItem.class);
|
|
|
+
|
|
|
+ for (TCostManagementItem item : itemList) {
|
|
|
+ if (StringUtils.isNull(item.getfId())) {// 如果是新数据
|
|
|
+ item.setCreateBy(loginUser.getUser().getUserName());
|
|
|
+ item.setCreateTime(new Date());
|
|
|
+ item.setCreateDept(String.valueOf(loginUser.getUser().getDeptId()));
|
|
|
+ tCostManagementItemMapper.insertTCostManagementItem(item);
|
|
|
+ } else {
|
|
|
+ item.setUpdateBy(loginUser.getUser().getUserName());
|
|
|
+ item.setUpdateTime(new Date());
|
|
|
+ tCostManagementItemMapper.updateTCostManagementItem(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //保存附件信息
|
|
|
+ List<TEnclosure> enclosuresList = new ArrayList<>();
|
|
|
+ if (StringUtils.isNotNull(tEnclosure) && !"[]".equals(tEnclosure)) {
|
|
|
+ JSONArray jsonEnclosureArray = JSONArray.parseArray(tEnclosure);
|
|
|
+ enclosuresList = JSONObject.parseArray(jsonEnclosureArray.toJSONString(), TEnclosure.class);
|
|
|
+ long lineNo = 0L;
|
|
|
+ for (TEnclosure enclosure : enclosuresList) {
|
|
|
+ lineNo++;
|
|
|
+ if (enclosure.getfId() == null) {
|
|
|
+ enclosure.setfPid(detailed.getfId());
|
|
|
+ enclosure.setfLineno(lineNo);
|
|
|
+ enclosure.setCreateTime(new Date());
|
|
|
+ enclosure.setCreateBy(loginUser.getUser().getUserName());
|
|
|
+ tEnclosureMapper.insertTEnclosure(enclosure);
|
|
|
+ } else {
|
|
|
+ enclosure.setUpdateBy(loginUser.getUser().getUserName());
|
|
|
+ enclosure.setUpdateTime(new Date());
|
|
|
+ tEnclosureMapper.updateTEnclosure(enclosure);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (isApprove) {
|
|
|
+ AuditItems auditItems = new AuditItems();
|
|
|
+ auditItems.setLevelId(0L);
|
|
|
+ auditItems.setBillId(detailed.getfId());
|
|
|
+ auditItems.setActId(actId);
|
|
|
+ auditItems.setIffinalItem("F");
|
|
|
+ auditItems.setBillNo(detailed.getfNo());
|
|
|
+ // 存储业务类型(业务类型)
|
|
|
+ auditItems.setRefno2(billType);
|
|
|
+ auditItems.setRefno3(detailed.getfNo());
|
|
|
+ auditItems.setSendUserId(loginUser.getUser().getUserId());
|
|
|
+ auditItems.setSendName(SecurityUtils.getUsername());
|
|
|
+ auditItems.setSendTime(new Date());
|
|
|
+ auditItems.setAuditUserId(loginUser.getUser().getUserId());
|
|
|
+ auditItems.setAuditItem(new Date());
|
|
|
+ auditItems.setAuditOpTime(new Date());
|
|
|
+ auditItems.setAuditMsg("提交");
|
|
|
+ auditItems.setAuditStatus("O");
|
|
|
+ AjaxResult approvalFlow = auditItemsService.createApprovalFlow(auditItems);
|
|
|
+// Long code = Long.valueOf(String.valueOf(approvalFlow.get("code"))).longValue();
|
|
|
+ String code = approvalFlow.get("code").toString();
|
|
|
+// Long code = Long.valueOf(String.valueOf(ajaxResult.get("code"))).longValue();
|
|
|
+ if ("500".equals(code)) {
|
|
|
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
+ }
|
|
|
+ return approvalFlow;
|
|
|
+ }
|
|
|
+ map.put("tCostManagement",detailed);
|
|
|
+ map.put("itemList", itemList);
|
|
|
+ map.put("enclosuresList", enclosuresList);
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+}
|