|
@@ -1,5 +1,9 @@
|
|
|
package com.rongwei.bscommon.sys.service.impl;
|
|
|
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.rongwei.bscommon.sys.config.EquMaintenanceStandardListener;
|
|
|
+import com.rongwei.bscommon.sys.excel.EquMaintenanceStandardTemplate;
|
|
|
import com.rongwei.bscommon.sys.feign.RwAdminFeign;
|
|
|
import com.rongwei.bscommon.sys.service.*;
|
|
|
import com.rongwei.bscommon.sys.utils.CommonUtils;
|
|
@@ -8,6 +12,8 @@ import com.rongwei.bsentity.dto.BatchCreateDTO;
|
|
|
import com.rongwei.bsentity.dto.PlanYearCopyDTO;
|
|
|
import com.rongwei.bsentity.dto.TaskCreatorDTO;
|
|
|
import com.rongwei.bsentity.enums.EquipmentTypeEnum;
|
|
|
+import com.rongwei.bsentity.enums.MaintenanceTypeEnum;
|
|
|
+import com.rongwei.bsentity.enums.PlantEnum;
|
|
|
import com.rongwei.rwadmincommon.system.vo.SysUserVo;
|
|
|
import com.rongwei.rwcommon.base.R;
|
|
|
import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
@@ -16,7 +22,9 @@ import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
@@ -220,6 +228,72 @@ public class MaintenanceServiceImpl implements MaintenanceService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public R uploadStandardSave(MultipartFile multipartFile) throws Exception {
|
|
|
+ EquMaintenanceStandardListener standardListener = new EquMaintenanceStandardListener();
|
|
|
+ //解析Excel
|
|
|
+ EasyExcel.read(multipartFile.getInputStream(), EquMaintenanceStandardTemplate.class,standardListener).sheet().headRowNumber(4).doRead();
|
|
|
+ //解析有误信息
|
|
|
+ List<String> errorData = standardListener.getErrorData();
|
|
|
+ //解析数据
|
|
|
+ List<EquMaintenanceStandardDo> newMaintenanceStandardList = standardListener.getMaintenanceStandardList();
|
|
|
+ //唯一性数据
|
|
|
+ List<EquMaintenanceStandardDo> oldMaintenanceStandardList = maintenanceStandardService.getUniqueDateByAll();
|
|
|
+ //将新旧两组数据拼接为一个stream,再对stream进行分组,找到分组数量大于1的(说明又重复),将重复的数据拿到原始数据中找到源数据返回回来
|
|
|
+ List<EquMaintenanceStandardDo> maintenanceStandardDoList = Stream.concat(newMaintenanceStandardList.stream(), oldMaintenanceStandardList.stream()).collect(Collectors.groupingBy(info ->
|
|
|
+ info.getTenantid() + info.getEquipmenttype() + info.getMaintenancetype() + info.getMaintenancesite() + info.getMaintenancecontext(), Collectors.counting()))
|
|
|
+ .entrySet().stream()
|
|
|
+ .filter(info -> info.getValue() > 1)
|
|
|
+ .map(Map.Entry::getKey)
|
|
|
+ .map(info -> newMaintenanceStandardList.stream()
|
|
|
+ .filter(item -> (item.getTenantid() + item.getEquipmenttype() + item.getMaintenancetype() + item.getMaintenancesite() + item.getMaintenancecontext()).equals(info))
|
|
|
+ .findFirst().orElse(null))
|
|
|
+ .filter(Objects::nonNull)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ //拼接返回错误数据
|
|
|
+ if (maintenanceStandardDoList.size()!=0){
|
|
|
+ jointErrorData(maintenanceStandardDoList,errorData);
|
|
|
+ }
|
|
|
+ //判断是否又错误数据
|
|
|
+ if (errorData.size()!=0){
|
|
|
+ return R.error(JSON.toJSONString(errorData));
|
|
|
+ }
|
|
|
+ SysUserVo currentUser = CommonUtils.getCurrentUser();
|
|
|
+ //生成流水号
|
|
|
+ for (EquMaintenanceStandardDo maintenanceStandard : newMaintenanceStandardList){
|
|
|
+ SysSerialVo sysSerialVo = new SysSerialVo();
|
|
|
+ sysSerialVo.setModulecode("equ_maintenance_standard_aq_code_BC");
|
|
|
+ sysSerialVo.setResetrule("date:yyyy");
|
|
|
+ sysSerialVo.setRuleTemplateStr(PlantEnum.addrOf(maintenanceStandard.getTenantid())+"-BYBZ-@{date:yyyyMM}@{serialNumber:#00000}");
|
|
|
+ R serialNumberCode = rwAdminFeign.getSerialNumberCode(sysSerialVo);
|
|
|
+ if ("200".equals(serialNumberCode.getCode())){
|
|
|
+
|
|
|
+ Object data = serialNumberCode.getData();
|
|
|
+ maintenanceStandard.setStandardid(CommonUtils.getObjectByMap(data).get("code").toString());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ maintenanceStandardService.saveBatch(newMaintenanceStandardList,200);
|
|
|
+ return R.ok("导入成功");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 拼接错误数据
|
|
|
+ *
|
|
|
+ * @param maintenanceStandardList
|
|
|
+ * @param errorData
|
|
|
+ * @return
|
|
|
+ * @date 2023/12/8 16:43
|
|
|
+ * @author shangmi
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
+ public void jointErrorData(List<EquMaintenanceStandardDo> maintenanceStandardList,List<String> errorData){
|
|
|
+ maintenanceStandardList.forEach(info ->{
|
|
|
+ errorData.add(PlantEnum.nameOf(info.getTenantid())+",已存在了"+EquipmentTypeEnum.typeOf(Integer.valueOf(info.getEquipmenttype()))+"-"+MaintenanceTypeEnum.typeOf(Integer.valueOf(info.getMaintenancetype()))+"-"+info.getMaintenancesite()+"部位"+info.getMaintenancecontext()+"的保养标准内容,不可重复导入,请检查");
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 详细库转移(标准——计划明细)
|
|
@@ -277,7 +351,7 @@ public class MaintenanceServiceImpl implements MaintenanceService {
|
|
|
SysSerialVo sysSerialVo = new SysSerialVo();
|
|
|
sysSerialVo.setModulecode("equ_maintenance_standard_aq_code_BC");
|
|
|
sysSerialVo.setResetrule("date:yyyy");
|
|
|
- sysSerialVo.setRuleTemplateStr(maintenanceSchedule.getPlantype()+"-BC-@{date:yyyyMM}@{serialNumber:#00000}");
|
|
|
+ sysSerialVo.setRuleTemplateStr(PlantEnum.addrOf(currentUser.getTenantid())+"-"+maintenanceSchedule.getPlantype()+"-@{date:yyyyMM}@{serialNumber:#00000}");
|
|
|
R serialNumberCode = rwAdminFeign.getSerialNumberCode(sysSerialVo);
|
|
|
EquMaintenanceTaskDo equMaintenanceTask = new EquMaintenanceTaskDo();
|
|
|
BeanUtils.copyProperties( maintenanceSchedule,equMaintenanceTask);
|