|
@@ -15,18 +15,22 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotdevicecategorytemplateatt
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillPageReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotopeationfill.vo.IotOpeationFillPageReqVO;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotprojecttask.vo.IotProjectTaskPageReqVO;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreport.vo.*;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreport.vo.*;
|
|
|
|
|
+import cn.iocoder.yudao.module.pms.controller.admin.iotrydailyreportdetail.vo.IotRyDailyReportDetailSaveReqVO;
|
|
|
import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
|
|
import cn.iocoder.yudao.module.pms.controller.admin.vo.IotDevicePageReqVO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.IotDeviceDO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.depttype.IotDeptTypeDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.depttype.IotDeptTypeDO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotopeationfill.IotOpeationFillDO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttask.IotProjectTaskDO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskattrs.IotTaskAttrModelProperty;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojecttaskattrs.IotTaskAttrModelProperty;
|
|
|
|
|
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotrddailyreportdetail.IotRdDailyReportDetailDO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotrydailyreport.IotRyDailyReportDO;
|
|
import cn.iocoder.yudao.module.pms.dal.dataobject.iotrydailyreport.IotRyDailyReportDO;
|
|
|
|
|
+import cn.iocoder.yudao.module.pms.dal.dataobject.iotrydailyreportdetail.IotRyDailyReportDetailDO;
|
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.IotDeviceMapper;
|
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.depttype.IotDeptTypeMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.depttype.IotDeptTypeMapper;
|
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotopeationfill.IotOpeationFillMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotopeationfill.IotOpeationFillMapper;
|
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotprojecttask.IotProjectTaskMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotprojecttask.IotProjectTaskMapper;
|
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotrydailyreport.IotRyDailyReportMapper;
|
|
import cn.iocoder.yudao.module.pms.dal.mysql.iotrydailyreport.IotRyDailyReportMapper;
|
|
|
|
|
+import cn.iocoder.yudao.module.pms.dal.mysql.iotrydailyreportdetail.IotRyDailyReportDetailMapper;
|
|
|
import cn.iocoder.yudao.module.pms.message.PmsMessage;
|
|
import cn.iocoder.yudao.module.pms.message.PmsMessage;
|
|
|
import cn.iocoder.yudao.module.supplier.enums.common.SupplierAuditStatusEnum;
|
|
import cn.iocoder.yudao.module.supplier.enums.common.SupplierAuditStatusEnum;
|
|
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
|
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
|
@@ -44,6 +48,7 @@ import cn.iocoder.yudao.module.system.service.permission.RoleService;
|
|
|
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
|
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
+import com.google.common.collect.ImmutableMap;
|
|
|
import com.google.gson.Gson;
|
|
import com.google.gson.Gson;
|
|
|
import com.google.gson.reflect.TypeToken;
|
|
import com.google.gson.reflect.TypeToken;
|
|
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
@@ -105,6 +110,8 @@ public class IotRyDailyReportServiceImpl implements IotRyDailyReportService {
|
|
|
private PmsMessage pmsMessage;
|
|
private PmsMessage pmsMessage;
|
|
|
@Resource
|
|
@Resource
|
|
|
private IotOpeationFillMapper iotOpeationFillMapper;
|
|
private IotOpeationFillMapper iotOpeationFillMapper;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private IotRyDailyReportDetailMapper iotRyDailyReportDetailMapper;
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -228,9 +235,12 @@ public class IotRyDailyReportServiceImpl implements IotRyDailyReportService {
|
|
|
// 当天如果已经有此小队的记录 新增 当天如果没有此小队的日报记录 修改
|
|
// 当天如果已经有此小队的记录 新增 当天如果没有此小队的日报记录 修改
|
|
|
// deptId - taskId - createTime(yyyy-MM-dd) 确定唯一一条记录 不能使用 LocalDateTime.now() 来查询,应该使用 运行记录工单的创建日期查询
|
|
// deptId - taskId - createTime(yyyy-MM-dd) 确定唯一一条记录 不能使用 LocalDateTime.now() 来查询,应该使用 运行记录工单的创建日期查询
|
|
|
IotRyDailyReportDO existReport = iotRyDailyReportMapper.selectExistReport(createReqVO.getDeptId(), null, reportDate);
|
|
IotRyDailyReportDO existReport = iotRyDailyReportMapper.selectExistReport(createReqVO.getDeptId(), null, reportDate);
|
|
|
|
|
+ LocalDateTime reportDetailDate;
|
|
|
if (ObjUtil.isEmpty(existReport)) {
|
|
if (ObjUtil.isEmpty(existReport)) {
|
|
|
|
|
+
|
|
|
// reportDate 所代表日期前1天的7点
|
|
// reportDate 所代表日期前1天的7点
|
|
|
LocalDateTime today7am = reportDate.withHour(7).withMinute(0).withSecond(0).withNano(0);
|
|
LocalDateTime today7am = reportDate.withHour(7).withMinute(0).withSecond(0).withNano(0);
|
|
|
|
|
+ reportDetailDate = reportDate;
|
|
|
// reportDate 所代表日期的7点
|
|
// reportDate 所代表日期的7点
|
|
|
LocalDateTime yesterday7am = today7am.minusDays(1);
|
|
LocalDateTime yesterday7am = today7am.minusDays(1);
|
|
|
iotRyDailyReport.setConstructionStartDate(yesterday7am);
|
|
iotRyDailyReport.setConstructionStartDate(yesterday7am);
|
|
@@ -241,8 +251,38 @@ public class IotRyDailyReportServiceImpl implements IotRyDailyReportService {
|
|
|
} else {
|
|
} else {
|
|
|
// 修改现有记录
|
|
// 修改现有记录
|
|
|
iotRyDailyReport.setId(existReport.getId());
|
|
iotRyDailyReport.setId(existReport.getId());
|
|
|
|
|
+ reportDetailDate = existReport.getCreateTime();
|
|
|
iotRyDailyReportMapper.updateById(iotRyDailyReport);
|
|
iotRyDailyReportMapper.updateById(iotRyDailyReport);
|
|
|
}
|
|
}
|
|
|
|
|
+ // 保存日报生产动态明细
|
|
|
|
|
+ if (CollUtil.isNotEmpty(createReqVO.getReportDetails())) {
|
|
|
|
|
+ List<IotRyDailyReportDetailSaveReqVO> reportDetails = createReqVO.getReportDetails();
|
|
|
|
|
+ // 先删除明细 再新增
|
|
|
|
|
+ int count = iotRyDailyReportDetailMapper.deleteByMap(ImmutableMap.of(
|
|
|
|
|
+ "report_id", iotRyDailyReport.getId()
|
|
|
|
|
+ ));
|
|
|
|
|
+ // 新增生产动态明细
|
|
|
|
|
+ List<IotRyDailyReportDetailDO> reportDOs = new ArrayList<>();
|
|
|
|
|
+ reportDetails.forEach(detail -> {
|
|
|
|
|
+ String detailEndTime = detail.getEndTime();
|
|
|
|
|
+ if (StrUtil.isNotBlank(detailEndTime)) {
|
|
|
|
|
+ String[] timeAttr = detailEndTime.split(":");
|
|
|
|
|
+ if ("24".equals(timeAttr[0])) {
|
|
|
|
|
+ detail.setEndTime("23:59:59");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ IotRyDailyReportDetailDO tempDetail = BeanUtils.toBean(detail, IotRyDailyReportDetailDO.class);
|
|
|
|
|
+ tempDetail.setDeptId(iotRyDailyReport.getDeptId());
|
|
|
|
|
+ tempDetail.setTaskId(iotRyDailyReport.getTaskId());
|
|
|
|
|
+ tempDetail.setReportId(iotRyDailyReport.getId());
|
|
|
|
|
+ tempDetail.setReportDate(reportDetailDate);
|
|
|
|
|
+ reportDOs.add(tempDetail);
|
|
|
|
|
+ });
|
|
|
|
|
+ // 插入日报明细记录
|
|
|
|
|
+ if (CollUtil.isNotEmpty(reportDOs)) {
|
|
|
|
|
+ iotRyDailyReportDetailMapper.insertBatch(reportDOs);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
// 生成消息提醒 到 项目部审批人员 站内信 钉钉
|
|
// 生成消息提醒 到 项目部审批人员 站内信 钉钉
|
|
|
if (StrUtil.isBlank(createReqVO.getEditFlag())) {
|
|
if (StrUtil.isBlank(createReqVO.getEditFlag())) {
|
|
|
// 日报管理员编辑审批后的日报 不需要发送钉钉消息提醒
|
|
// 日报管理员编辑审批后的日报 不需要发送钉钉消息提醒
|