|
@@ -1,16 +1,23 @@
|
|
|
package com.rongwei.bscommon.sys.service.impl;
|
|
|
|
|
|
import cn.hutool.core.io.resource.ClassPathResource;
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.excel.ExcelWriter;
|
|
|
+import com.alibaba.excel.write.metadata.WriteSheet;
|
|
|
import com.rongwei.bscommon.sys.dao.CommonDao;
|
|
|
+import com.rongwei.bscommon.sys.excel.EquLubricationTaskManagementTemplate;
|
|
|
+import com.rongwei.bscommon.sys.excel.EquMaintenanceTaskTemplate;
|
|
|
import com.rongwei.bscommon.sys.service.*;
|
|
|
import com.rongwei.bscommon.sys.utils.ExcelUtils;
|
|
|
-import com.rongwei.bsentity.domain.AspCheckItems;
|
|
|
-import com.rongwei.bsentity.domain.EquLubricationTaskManagementDo;
|
|
|
-import com.rongwei.bsentity.domain.EquMaintenanceOrderDo;
|
|
|
-import com.rongwei.bsentity.domain.EquMaintenanceTaskDo;
|
|
|
+import com.rongwei.bsentity.domain.*;
|
|
|
import com.rongwei.bsentity.dto.EquMaintenanceOrderSumDTO;
|
|
|
import com.rongwei.bsentity.dto.EquipmentDisposeDTO;
|
|
|
+import com.rongwei.bsentity.enums.LubricationFrequencyEnum;
|
|
|
+import com.rongwei.bsentity.enums.MaintenanceTypeEnum;
|
|
|
import com.rongwei.bsentity.enums.PlantEnum;
|
|
|
+import com.rongwei.bsentity.enums.TaskStatusEnum;
|
|
|
import com.rongwei.rwadmincommon.system.domain.SysDictDo;
|
|
|
import com.rongwei.rwadmincommon.system.service.SysDictService;
|
|
|
import com.rongwei.rwcommon.base.R;
|
|
@@ -21,9 +28,13 @@ import org.apache.commons.lang.StringUtils;
|
|
|
import org.apache.poi.hssf.usermodel.HSSFRow;
|
|
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.mock.web.MockMultipartFile;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
+import java.io.ByteArrayOutputStream;
|
|
|
import java.io.InputStream;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
@@ -58,6 +69,9 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
|
|
|
@Autowired
|
|
|
private EquLubricationTaskManagementService equLubricationTaskManagementService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private EquLubricationTaskDetailService lubricationTaskDetailService;
|
|
|
+
|
|
|
@Autowired
|
|
|
private EquMaintenanceOrderService equMaintenanceOrderService;
|
|
|
|
|
@@ -305,6 +319,159 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
|
|
|
CXCommonUtils.sendNotify(FAUL_STOP_TITLE, context, null, userId.stream().distinct().collect(Collectors.toList()), dataId, FAUL_STOP_REMIND, true);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 保养/润滑跨月未完成提醒
|
|
|
+ *
|
|
|
+ * @return {@link R}
|
|
|
+ * @date 2024/1/30 15:08
|
|
|
+ * @author shangmi
|
|
|
+ *
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public R previousUnfinishedTaskNotify() {
|
|
|
+ //时间处理
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ Date date = new Date();
|
|
|
+ calendar.setTime(date);
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ String newDate = simpleDateFormat.format(date);
|
|
|
+ calendar.set(Calendar.MONTH,-12);
|
|
|
+ String oldDate = simpleDateFormat.format(calendar.getTime());
|
|
|
+ //查询距近一年时间内未完成保养/润滑任务
|
|
|
+ List<EquMaintenanceTaskDo> maintenanceTaskDoList = maintenanceTaskService.getListByTimeQuantum(newDate,oldDate);
|
|
|
+ List<EquLubricationTaskManagementDo> lubricationTaskManagementDoList = equLubricationTaskManagementService
|
|
|
+ .getListByTimeQuantum(newDate,oldDate);
|
|
|
+ if (maintenanceTaskDoList.size()+lubricationTaskManagementDoList.size()==0){
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+ List<String> lubricationIds = lubricationTaskManagementDoList.stream().map(EquLubricationTaskManagementDo::getId).collect(Collectors.toList());
|
|
|
+ List<EquLubricationTaskDetailDo> lubricationTaskDetailDoList = lubricationTaskDetailService.getDetailByMasterId(lubricationIds);
|
|
|
+
|
|
|
+ //删除提醒
|
|
|
+ CXCommonUtils.deleteSendNotify(PREVIOUS_UNFINISHED_TASK,null);
|
|
|
+ //遍历三个工厂 分别给每个工厂发送提醒
|
|
|
+ for (PlantEnum plantEnum : PlantEnum.values()){
|
|
|
+ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
|
|
+ // String fileUrl="E:\\Desktop\\test.xlsx";
|
|
|
+ String plantId = plantEnum.getId();
|
|
|
+ //赛选出该工厂保养任务信息
|
|
|
+ List<EquMaintenanceTaskDo> maintenanceTaskList = maintenanceTaskDoList.stream()
|
|
|
+ .filter(info -> info.getTenantid().equals(plantId)).collect(Collectors.toList());
|
|
|
+ //赛选出该工厂润滑任务信息
|
|
|
+ List<EquLubricationTaskManagementDo> lubricationTaskManagementList = lubricationTaskManagementDoList.stream()
|
|
|
+ .filter(info -> plantId.equals(info.getTenantid())).collect(Collectors.toList());
|
|
|
+ //赛选出该工厂下的润滑任务信息
|
|
|
+ List<EquLubricationTaskDetailDo> lubricationTaskDetailList = lubricationTaskDetailDoList.stream()
|
|
|
+ .filter(info -> plantId.equals(info.getTenantid())).collect(Collectors.toList());
|
|
|
+ if (maintenanceTaskList.size()+lubricationTaskDetailList.size()==0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<String> userIdList = extractUsersByTask(maintenanceTaskList, lubricationTaskManagementList,plantId);
|
|
|
+ // 发送内容
|
|
|
+ String context = String.format(PREVIOUS_UNFINISHED_TASK_CONTENT,
|
|
|
+ plantEnum.getName(),
|
|
|
+ maintenanceTaskList.size(),
|
|
|
+ lubricationTaskDetailList.size());
|
|
|
+
|
|
|
+ ExcelWriter excelWriter = EasyExcel.write(byteArrayOutputStream).build();
|
|
|
+
|
|
|
+ List<EquMaintenanceTaskTemplate> equMaintenanceTaskTemplates = maintainDeriveDate(plantEnum, maintenanceTaskList);
|
|
|
+ List<EquLubricationTaskManagementTemplate> lubricationTaskManagementTemplates = lubricationDeriveDate(plantEnum,lubricationTaskManagementList,lubricationTaskDetailList);
|
|
|
+ generateExcel(excelWriter,equMaintenanceTaskTemplates,lubricationTaskManagementTemplates,Boolean.TRUE);
|
|
|
+
|
|
|
+ excelWriter.finish();
|
|
|
+
|
|
|
+ byte[] byteArray = byteArrayOutputStream.toByteArray();
|
|
|
+
|
|
|
+ MultipartFile multipartFile = new MockMultipartFile("file", newDate+"-保养/润滑跨月未完成.xlsx" , "application/vnd.ms-excel", byteArray);
|
|
|
+ R upload = CXCommonUtils.upload(multipartFile);
|
|
|
+ String fileItemId = "";
|
|
|
+ if ("200".equals(upload.getCode())){
|
|
|
+ JSONObject jsonObject = JSONUtil.parseObj(upload.getData());
|
|
|
+ // Map<String,String> map = (Map<String, String>) JSON.parse(upload.getData().toString());
|
|
|
+ fileItemId =jsonObject.get("id").toString();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ CXCommonUtils.sendNotify(PREVIOUS_UNFINISHED_TASK_TITLE, context,plantId , userIdList.stream().distinct().collect(Collectors.toList()),
|
|
|
+ fileItemId, PREVIOUS_UNFINISHED_TASK, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R endUnfinishedTaskNotify() {
|
|
|
+
|
|
|
+ //时间处理
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ Date date = new Date();
|
|
|
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
+ calendar.setTime(date);
|
|
|
+ String newDate = simpleDateFormat.format(date);
|
|
|
+ // int sky = calendar.get(Calendar.DAY_OF_MONTH)-1;
|
|
|
+ calendar.set(Calendar.DAY_OF_MONTH,1);
|
|
|
+ String oldDate = simpleDateFormat.format(calendar.getTime());
|
|
|
+ //查询距近一年时间内未完成保养/润滑任务
|
|
|
+ List<EquMaintenanceTaskDo> maintenanceTaskDoList = maintenanceTaskService.getListByTimeQuantum(newDate,oldDate);
|
|
|
+ List<EquLubricationTaskManagementDo> lubricationTaskManagementDoList = equLubricationTaskManagementService
|
|
|
+ .getListByTimeQuantum(newDate,oldDate);
|
|
|
+ if (maintenanceTaskDoList.size()+lubricationTaskManagementDoList.size()==0){
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+ List<String> lubricationIds = lubricationTaskManagementDoList.stream().map(EquLubricationTaskManagementDo::getId).collect(Collectors.toList());
|
|
|
+ List<EquLubricationTaskDetailDo> lubricationTaskDetailDoList = lubricationTaskDetailService.getDetailByMasterId(lubricationIds);
|
|
|
+ //删除提醒
|
|
|
+ CXCommonUtils.deleteSendNotify(END_UNFINISHED_TASK,null);
|
|
|
+ //遍历三个工厂 分别给每个工厂发送提醒
|
|
|
+ for (PlantEnum plantEnum : PlantEnum.values()){
|
|
|
+ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
|
|
+ // String fileUrl="E:\\Desktop\\test.xlsx";
|
|
|
+ String plantId = plantEnum.getId();
|
|
|
+ //赛选出该工厂保养任务信息
|
|
|
+ List<EquMaintenanceTaskDo> maintenanceTaskList = maintenanceTaskDoList.stream()
|
|
|
+ .filter(info -> info.getTenantid().equals(plantId)).collect(Collectors.toList());
|
|
|
+ //赛选出该工厂润滑任务信息
|
|
|
+ List<EquLubricationTaskManagementDo> lubricationTaskManagementList = lubricationTaskManagementDoList.stream()
|
|
|
+ .filter(info -> plantId.equals(info.getTenantid())).collect(Collectors.toList());
|
|
|
+ //赛选出该工厂下的润滑任务信息
|
|
|
+ List<EquLubricationTaskDetailDo> lubricationTaskDetailList = lubricationTaskDetailDoList.stream()
|
|
|
+ .filter(info -> plantId.equals(info.getTenantid())).collect(Collectors.toList());
|
|
|
+ if (maintenanceTaskList.size()+lubricationTaskDetailList.size()==0){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<String> userIdList = extractUsersByTask(maintenanceTaskList, lubricationTaskManagementList,plantId);
|
|
|
+ // 发送内容
|
|
|
+ String context = String.format(END_UNFINISHED_TASK_CONTENT,
|
|
|
+ newDate,
|
|
|
+ plantEnum.getName(),
|
|
|
+ maintenanceTaskList.size(),
|
|
|
+ lubricationTaskDetailList.size());
|
|
|
+
|
|
|
+ ExcelWriter excelWriter = EasyExcel.write(byteArrayOutputStream).build();
|
|
|
+
|
|
|
+ List<EquMaintenanceTaskTemplate> equMaintenanceTaskTemplates = maintainDeriveDate(plantEnum, maintenanceTaskList);
|
|
|
+ List<EquLubricationTaskManagementTemplate> lubricationTaskManagementTemplates = lubricationDeriveDate(plantEnum,lubricationTaskManagementList,lubricationTaskDetailList);
|
|
|
+ generateExcel(excelWriter,equMaintenanceTaskTemplates,lubricationTaskManagementTemplates,Boolean.TRUE);
|
|
|
+
|
|
|
+ excelWriter.finish();
|
|
|
+
|
|
|
+ byte[] byteArray = byteArrayOutputStream.toByteArray();
|
|
|
+
|
|
|
+ MultipartFile multipartFile = new MockMultipartFile("file", newDate+"-保养/润滑月末未完成.xlsx" , "application/vnd.ms-excel", byteArray);
|
|
|
+ R upload = CXCommonUtils.upload(multipartFile);
|
|
|
+ String fileItemId = "";
|
|
|
+ if ("200".equals(upload.getCode())){
|
|
|
+ JSONObject jsonObject = JSONUtil.parseObj(upload.getData());
|
|
|
+ fileItemId =jsonObject.get("id").toString();
|
|
|
+ }
|
|
|
+ CXCommonUtils.sendNotify(END_UNFINISHED_TASK_TITLE, context, plantId, userIdList.stream().distinct().collect(Collectors.toList()),
|
|
|
+ fileItemId, END_UNFINISHED_TASK, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 生成设备部位重复故障问题提醒
|
|
|
*
|
|
@@ -429,6 +596,146 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
|
|
|
return calendar.getTime();
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 润滑任务导出数据迁移
|
|
|
+ *
|
|
|
+ * @param plantEnum 工厂
|
|
|
+ * @param lubricationTaskManagementList 润滑主表
|
|
|
+ * @param lubricationTaskDetailList 润滑明细(部位)
|
|
|
+ * @return {@link List<EquLubricationTaskManagementTemplate>}
|
|
|
+ * @date 2024/1/31 16:55
|
|
|
+ * @author shangmi
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
+ private List<EquLubricationTaskManagementTemplate> lubricationDeriveDate(
|
|
|
+ PlantEnum plantEnum,
|
|
|
+ List<EquLubricationTaskManagementDo> lubricationTaskManagementList,
|
|
|
+ List<EquLubricationTaskDetailDo> lubricationTaskDetailList) {
|
|
|
+ //模板数据
|
|
|
+ List<EquLubricationTaskManagementTemplate> equLubricationTaskManagementTemplates = new ArrayList<>();
|
|
|
+ //遍历主表
|
|
|
+ for (EquLubricationTaskManagementDo lubricationTaskManagementDo : lubricationTaskManagementList){
|
|
|
+ List<EquLubricationTaskDetailDo> lubricationTaskDetailDoList = lubricationTaskDetailList.stream()
|
|
|
+ .filter(info -> lubricationTaskManagementDo.getId().equals(info.getMasterid())).collect(Collectors.toList());
|
|
|
+ String[] split = lubricationTaskManagementDo.getTaskfrequency().split(",");
|
|
|
+ StringBuilder taskfrequency = new StringBuilder();
|
|
|
+ //遍历润滑周期
|
|
|
+ for (int i = 0; i < split.length; i++) {
|
|
|
+ taskfrequency.append(LubricationFrequencyEnum.massageOf(split[i]));
|
|
|
+ if (i!=split.length-1){
|
|
|
+ taskfrequency.append(',');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ equLubricationTaskManagementTemplates.addAll(
|
|
|
+ //遍历子表转移数据
|
|
|
+ lubricationTaskDetailDoList.stream().map(info ->{
|
|
|
+ EquLubricationTaskManagementTemplate lubricationTaskTemplate = new EquLubricationTaskManagementTemplate();
|
|
|
+ BeanUtils.copyProperties(lubricationTaskManagementDo,lubricationTaskTemplate);
|
|
|
+ BeanUtils.copyProperties(info,lubricationTaskTemplate);
|
|
|
+ lubricationTaskTemplate.setPlant(PlantEnum.nameOf(plantEnum.getId()));
|
|
|
+ lubricationTaskTemplate.setIslubricationcompleted("y".equals(info.getIslubricationcompleted())?"是":"否");
|
|
|
+ lubricationTaskTemplate.setFrequency(taskfrequency.toString());
|
|
|
+ return lubricationTaskTemplate;
|
|
|
+ }).collect(Collectors.toList())
|
|
|
+ );
|
|
|
+ }
|
|
|
+ return equLubricationTaskManagementTemplates;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获得提醒用户ID
|
|
|
+ *
|
|
|
+ * @param maintenanceTaskList 保养任务
|
|
|
+ * @param lubricationTaskManagementList 润滑任务
|
|
|
+ * @return {@link List<String>}
|
|
|
+ * @date 2024/1/31 11:32
|
|
|
+ * @author shangmi
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
+ public List<String> extractUsersByTask(List<EquMaintenanceTaskDo> maintenanceTaskList,
|
|
|
+ List<EquLubricationTaskManagementDo> lubricationTaskManagementList,
|
|
|
+ String plantId){
|
|
|
+
|
|
|
+ //车间ID
|
|
|
+ StringBuilder stringBuilder = new StringBuilder();
|
|
|
+ //赛选出所以车间 并去重
|
|
|
+ List<String> workshops = Stream.concat(maintenanceTaskList.stream().map(EquMaintenanceTaskDo::getWorkshopid),
|
|
|
+ lubricationTaskManagementList.stream().map(EquLubricationTaskManagementDo::getEquipmentworkshopid))
|
|
|
+ .distinct().collect(Collectors.toList());
|
|
|
+ //拼接车间信息
|
|
|
+ for (int i = 0; i < workshops.size(); i++) {
|
|
|
+ stringBuilder.append("'").append(workshops.get(i)).append("'");
|
|
|
+ if (i!= workshops.size()-1){
|
|
|
+ stringBuilder.append(",");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //需接收提醒用户ID
|
|
|
+ List<String> userIds = commonDao.getRoleUserIds(
|
|
|
+ "'车间主任','车间保养主管'", "so.ID IN (" + stringBuilder + ")"
|
|
|
+ );
|
|
|
+ userIds.addAll(
|
|
|
+ commonDao.getRoleUserIds(
|
|
|
+ "'设备部部门长','设备部保养主管'", "(so.FULLPID like '," + plantId + "%' or so.ID='" + plantId + "')"
|
|
|
+ )
|
|
|
+ );
|
|
|
+
|
|
|
+ return userIds;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 为sheep页塞数据
|
|
|
+ *
|
|
|
+ * @param excelWriter 表格
|
|
|
+ * @param equMaintenanceTaskTemplates
|
|
|
+ * @param lubricationTaskManagementTemplates
|
|
|
+ * @return
|
|
|
+ * @date 2024/1/31 16:58
|
|
|
+ * @author shangmi
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
+ public void generateExcel(
|
|
|
+ ExcelWriter excelWriter,
|
|
|
+ List<EquMaintenanceTaskTemplate> equMaintenanceTaskTemplates,
|
|
|
+ List<EquLubricationTaskManagementTemplate> lubricationTaskManagementTemplates,
|
|
|
+ Boolean isTrue){
|
|
|
+
|
|
|
+ WriteSheet maintainSheet = EasyExcel.writerSheet(0, isTrue?"保养任务跨月未完成":"保养任务月末未完成")
|
|
|
+ .head(EquMaintenanceTaskTemplate.class).build();
|
|
|
+ WriteSheet lubricationSheet = EasyExcel.writerSheet(1, isTrue?"润滑任务跨月未完成":"润滑任务月末未完成")
|
|
|
+ .head(EquLubricationTaskManagementTemplate.class).build();
|
|
|
+ excelWriter.write(equMaintenanceTaskTemplates,maintainSheet);
|
|
|
+ excelWriter.write(lubricationTaskManagementTemplates,lubricationSheet);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保养任务导出数据迁移
|
|
|
+ *
|
|
|
+ * @param plantEnum 工厂枚举
|
|
|
+ * @param maintenanceTaskList 任务数据
|
|
|
+ * @return {@link List<EquMaintenanceTaskTemplate>}
|
|
|
+ * @date 2024/1/31 15:49
|
|
|
+ * @author shangmi
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
+ public List<EquMaintenanceTaskTemplate> maintainDeriveDate(PlantEnum plantEnum,List<EquMaintenanceTaskDo> maintenanceTaskList){
|
|
|
+ return maintenanceTaskList.stream().map(info ->{
|
|
|
+ EquMaintenanceTaskTemplate equMaintenanceTaskTemplate = new EquMaintenanceTaskTemplate();
|
|
|
+ BeanUtils.copyProperties(info,equMaintenanceTaskTemplate);
|
|
|
+
|
|
|
+ equMaintenanceTaskTemplate.setPlant(plantEnum.getName());
|
|
|
+ equMaintenanceTaskTemplate.setMaintenancetype(MaintenanceTypeEnum.messageOf(info.getMaintenancetype()));
|
|
|
+ equMaintenanceTaskTemplate.setTaskstate(TaskStatusEnum.massageOf(info.getTaskstate()));
|
|
|
+
|
|
|
+ return equMaintenanceTaskTemplate;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|