Browse Source

定制工序附件丢失问题处理

yzc 1 year ago
parent
commit
e76a5e2050

+ 26 - 0
hx-mes/src/main/java/com/fjhx/mes/service/work/impl/WorkOrderProductionProcessesServiceImpl.java

@@ -5,10 +5,14 @@ import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.utils.Assert;
+import com.fjhx.file.entity.FileInfo;
 import com.fjhx.file.entity.ObsFile;
+import com.fjhx.file.service.FileInfoService;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.mes.entity.applicable.po.ApplicableProducts;
 import com.fjhx.mes.entity.production.po.ProductionProcesses;
@@ -33,6 +37,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * <p>
@@ -55,6 +61,8 @@ public class WorkOrderProductionProcessesServiceImpl extends ServiceImpl<WorkOrd
     private ApplicableProductsService applicableProductsService;
     @Autowired
     private TechnologyService technologyService;
+    @Autowired
+    private FileInfoService fileInfoService;
 
     @Override
     public WorkOrderVo detail(WorkOrderProductionProcesses dto) {
@@ -73,11 +81,29 @@ public class WorkOrderProductionProcessesServiceImpl extends ServiceImpl<WorkOrd
             List<WorkOrderProductionProcessesVo> workOrderProductionProcessesList0 = BeanUtil.copyToList(productionProcesses, WorkOrderProductionProcessesVo.class);
             int i = 0;
             Map<Long,Long> newOldIdMap = new HashMap<>();
+
+            //获取基础文件列表
+            List<Long> productionProcessesIds = productionProcesses.stream().map(ProductionProcesses::getId).collect(Collectors.toList());
+            Map<Long, List<FileInfo>> oldFileInfoMap = new HashMap();
+            if(ObjectUtil.isNotEmpty(productionProcessesIds)){
+                DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+                List<FileInfo> oldFileInfoList = fileInfoService.list(q -> q.in(FileInfo::getBusinessId, productionProcessesIds));
+                oldFileInfoList.forEach(item->item.setId(null));
+                oldFileInfoMap = oldFileInfoList.stream().collect(Collectors.groupingBy(FileInfo::getBusinessId));
+                DynamicDataSourceContextHolder.poll();
+            }
+
             for (WorkOrderProductionProcessesVo workOrderProductionProcesses : workOrderProductionProcessesList0) {
                 Long oldId = workOrderProductionProcesses.getId();
                 Long newId = IdWorker.getId();
                 newOldIdMap.put(oldId,newId);
 
+                //将基础工序的文件信息复制一份给新的
+                List<FileInfo> fileInfoList = oldFileInfoMap.get(oldId);
+                List<ObsFile> obsFiles = BeanUtil.copyToList(fileInfoList, ObsFile.class);
+                workOrderProductionProcesses.setFileList(obsFiles);
+
+                //处理id信息
                 workOrderProductionProcesses.setOldId(oldId);//赋值带过来的id
                 workOrderProductionProcesses.setId(newId);
                 workOrderProductionProcesses.setSort(i);