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 selectTCostManagementById(Long fId) { Map map = new HashMap<>(); //查询费用管理主表数据 TCostManagement tCostManagement = tCostManagementMapper.selectTCostManagementById(fId); // 费用 List feesId = new ArrayList<>(); //查询明细信息 TCostManagementItem tCostManagementItem = new TCostManagementItem(); tCostManagementItem.setfPid(tCostManagement.getfId()); List itemList = tCostManagementItemMapper.selectTCostManagementItemList(tCostManagementItem); if (StringUtils.isNotEmpty(itemList)) { for (TCostManagementItem fees : itemList) { feesId.add(fees.getExpenseId()); } } //查询费用 List feesList = new ArrayList<>(); List 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 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 selectTCostManagementList(TCostManagement tCostManagement) { return tCostManagementMapper.selectTCostManagementList(tCostManagement); } /** * 新增费用管理 * * @param tCostManagement 费用管理 * @return 结果 */ @Override public AjaxResult insertTCostManagement(String tCostManagement, String tCostManagementItem, String tEnclosure, LoginUser loginUser) { Map 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 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 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 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 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 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; } }