|
@@ -3,8 +3,10 @@ package com.fjhx.account.service.cost.impl;
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson2.JSONObject;
|
|
|
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.fjhx.account.entity.cost.dto.CostControlDetailDto;
|
|
|
import com.fjhx.account.entity.cost.dto.CostControlDto;
|
|
|
import com.fjhx.account.entity.cost.dto.CostControlSelectDto;
|
|
|
import com.fjhx.account.entity.cost.po.CostControl;
|
|
@@ -15,17 +17,23 @@ import com.fjhx.account.mapper.cost.CostControlMapper;
|
|
|
import com.fjhx.account.service.cost.CostControlDetailService;
|
|
|
import com.fjhx.account.service.cost.CostControlService;
|
|
|
import com.fjhx.common.controller.Label;
|
|
|
+import com.fjhx.common.enums.FlowStatusEnum1;
|
|
|
import com.fjhx.common.service.logistics.LogisticsCompanyInfoService;
|
|
|
+import com.fjhx.file.utils.ObsFileUtil;
|
|
|
+import com.fjhx.flow.entity.flow.po.FlowExample;
|
|
|
+import com.fjhx.flow.enums.FlowStatusEnum;
|
|
|
+import com.fjhx.flow.service.flow.FlowExampleService;
|
|
|
+import com.ruoyi.common.core.domain.BaseIdPo;
|
|
|
+import com.ruoyi.common.core.domain.BasePo;
|
|
|
+import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
|
import com.ruoyi.system.utils.UserUtil;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.lang.reflect.Field;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Collections;
|
|
|
-import java.util.List;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -42,6 +50,8 @@ public class CostControlServiceImpl extends ServiceImpl<CostControlMapper, CostC
|
|
|
private LogisticsCompanyInfoService logisticsCompanyInfoService;
|
|
|
@Autowired
|
|
|
private CostControlDetailService costControlDetailService;
|
|
|
+ @Autowired
|
|
|
+ private FlowExampleService flowExampleService;
|
|
|
|
|
|
@Override
|
|
|
public Page<CostControlVo> getPage(CostControlSelectDto dto) {
|
|
@@ -80,8 +90,27 @@ public class CostControlServiceImpl extends ServiceImpl<CostControlMapper, CostC
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void add(CostControlDto costControlDto) {
|
|
|
- this.save(costControlDto);
|
|
|
+ @DSTransactional
|
|
|
+ public void addOrEdit(CostControlDto costControlDto) {
|
|
|
+ this.saveOrUpdate(costControlDto);
|
|
|
+
|
|
|
+ //保存明细信息
|
|
|
+ List<CostControlDetailDto> costControlDetailList = costControlDto.getCostControlDetailList();
|
|
|
+ if (ObjectUtil.isEmpty(costControlDetailList)) {
|
|
|
+ costControlDetailList = new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ //删除无效数据
|
|
|
+ List<Long> idList = costControlDetailList.stream().map(BaseIdPo::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
+ costControlDetailService.remove(q -> q.eq(CostControlDetail::getCostControlId, costControlDto.getId()).notIn(ObjectUtil.isNotEmpty(idList), BaseIdPo::getId, idList));
|
|
|
+ for (CostControlDetailDto costControlDetailDto : costControlDetailList) {
|
|
|
+ costControlDetailDto.setCostControlId(costControlDto.getId());
|
|
|
+ costControlDetailService.saveOrUpdate(costControlDetailDto);
|
|
|
+ //保存非发票附件
|
|
|
+ ObsFileUtil.editFile(costControlDetailDto.getFileList(), costControlDetailDto.getId(), 0);
|
|
|
+ //保存发票附件
|
|
|
+ ObsFileUtil.editFile(costControlDetailDto.getFileList(), costControlDetailDto.getId(), 10);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -96,8 +125,6 @@ public class CostControlServiceImpl extends ServiceImpl<CostControlMapper, CostC
|
|
|
|
|
|
@Override
|
|
|
public JSONObject getFieldInfo() {
|
|
|
-
|
|
|
-
|
|
|
List<JSONObject> infoField = getField(CostControlVo.class);
|
|
|
List<JSONObject> detailField = getField(CostControlDetailVo.class);
|
|
|
|
|
@@ -109,6 +136,26 @@ public class CostControlServiceImpl extends ServiceImpl<CostControlMapper, CostC
|
|
|
return json;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void cancellation(Long id) {
|
|
|
+ this.update(q -> q
|
|
|
+ .eq(CostControl::getId, id)
|
|
|
+ .set(CostControl::getStatus, FlowStatusEnum1.CANCELLATION.getKey())
|
|
|
+ .set(BasePo::getUpdateTime, new Date())
|
|
|
+ .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
|
|
|
+ );
|
|
|
+
|
|
|
+ //销毁审批中的流程
|
|
|
+ CostControl byId = getById(id);
|
|
|
+ flowExampleService.update(q -> q
|
|
|
+ .eq(FlowExample::getId, byId.getFlowId())
|
|
|
+ .in(FlowExample::getStatus, FlowStatusEnum.READY_START.getKey(), FlowStatusEnum.IN_PROGRESS.getKey())
|
|
|
+ .set(FlowExample::getStatus, FlowStatusEnum.CANCELLATION.getKey())
|
|
|
+ .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
|
|
|
+ .set(BasePo::getUpdateTime, new Date())
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
private List<JSONObject> getField(Class cl) {
|
|
|
//获取所有字段
|
|
|
List<Field> fieldList = new ArrayList<>();
|