|
@@ -0,0 +1,95 @@
|
|
|
+package com.rongwei.sfcommon.sys.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.rongwe.scentity.domian.AspSafetyProductObjective;
|
|
|
+import com.rongwe.scentity.domian.AspSafetyProductObjectiveResult;
|
|
|
+import com.rongwe.scentity.domian.AspSafetyProductObjectiveResultScoreDetail;
|
|
|
+import com.rongwe.scentity.domian.AspSafetyProductObjectiveScoreDetail;
|
|
|
+import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
|
+import com.rongwei.sfcommon.sys.dao.AspSafetyProductObjectiveDao;
|
|
|
+import com.rongwei.sfcommon.sys.service.AspSafetyProductObjectiveResultScoreDetailService;
|
|
|
+import com.rongwei.sfcommon.sys.service.AspSafetyProductObjectiveResultService;
|
|
|
+import com.rongwei.sfcommon.sys.service.AspSafetyProductObjectiveScoreDetailService;
|
|
|
+import com.rongwei.sfcommon.sys.service.AspSafetyProductObjectiveService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.LinkedList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author :sc
|
|
|
+ * @since :2023/12/7
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class AspSafetyProductObjectiveServiceImpl extends ServiceImpl<AspSafetyProductObjectiveDao, AspSafetyProductObjective> implements AspSafetyProductObjectiveService {
|
|
|
+ @Autowired
|
|
|
+ private AspSafetyProductObjectiveScoreDetailService scoreDetailService;
|
|
|
+ @Autowired
|
|
|
+ private AspSafetyProductObjectiveResultService objectiveResultService;
|
|
|
+ @Autowired
|
|
|
+ private AspSafetyProductObjectiveResultScoreDetailService objectiveResultScoreDetailService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void safetyResult() {
|
|
|
+ //==============查询所有需要生成的目标
|
|
|
+ //查询今年的所有目标数据
|
|
|
+ List<AspSafetyProductObjective> aspSafetyProductObjectives = this.baseMapper.selectList(new QueryWrapper<AspSafetyProductObjective>().lambda().like(AspSafetyProductObjective::getYear, DateUtil.thisYear()));
|
|
|
+ //获取当前季度(1,2,3,4)
|
|
|
+ int quarter = DateUtil.quarter(DateUtil.date());
|
|
|
+ //遍历目标获取所有目标的ID集合
|
|
|
+ List<String> collectIds = aspSafetyProductObjectives.stream().map(AspSafetyProductObjective::getId).collect(Collectors.toList());
|
|
|
+ //查询出所有目标的子表数据
|
|
|
+ List<AspSafetyProductObjectiveScoreDetail> scoreDetails = scoreDetailService.getBaseMapper().selectList(new QueryWrapper<AspSafetyProductObjectiveScoreDetail>().lambda().in(AspSafetyProductObjectiveScoreDetail::getMainid, collectIds));
|
|
|
+
|
|
|
+ //=============遍历目标组装考核模板数据
|
|
|
+ //考核主表
|
|
|
+ List<AspSafetyProductObjectiveResult> mainResList = new LinkedList<>();
|
|
|
+ //考核子表
|
|
|
+ List<AspSafetyProductObjectiveResultScoreDetail> childResList = new LinkedList<>();
|
|
|
+
|
|
|
+
|
|
|
+ aspSafetyProductObjectives.forEach(item -> {
|
|
|
+ //目标表主键
|
|
|
+ String id = item.getId();
|
|
|
+ //获取对应的目标子表
|
|
|
+ List<AspSafetyProductObjectiveScoreDetail> collectDetails = scoreDetails.stream().filter(item2 -> id.equals(item2.getMainid())).collect(Collectors.toList());
|
|
|
+ //转换目标主表
|
|
|
+ AspSafetyProductObjectiveResult aspSafetyProductObjectiveResult = BeanUtil.toBean(item, AspSafetyProductObjectiveResult.class);
|
|
|
+ //默认当前季度
|
|
|
+ aspSafetyProductObjectiveResult.setQuerter(String.valueOf(quarter));
|
|
|
+ //修改uuid
|
|
|
+ String newId = SecurityUtil.getUUID();
|
|
|
+ aspSafetyProductObjectiveResult.setId(newId);
|
|
|
+ //设置考核主表的mainID
|
|
|
+ aspSafetyProductObjectiveResult.setMainid(id);
|
|
|
+
|
|
|
+
|
|
|
+ //放入最终插入字段
|
|
|
+ mainResList.add(aspSafetyProductObjectiveResult);
|
|
|
+
|
|
|
+ collectDetails.forEach(item3 -> {
|
|
|
+ //转换考核子表
|
|
|
+ AspSafetyProductObjectiveResultScoreDetail detail = BeanUtil.toBean(item3, AspSafetyProductObjectiveResultScoreDetail.class);
|
|
|
+ //修改考核子表的ID
|
|
|
+ detail.setId(SecurityUtil.getUUID());
|
|
|
+ //修改考核子表的主表ID
|
|
|
+ detail.setMainid(newId);
|
|
|
+ //放入最终考核子表插入字段
|
|
|
+ childResList.add(detail);
|
|
|
+ });
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ //==============批量插入考核模板数据
|
|
|
+ //插入考核主表
|
|
|
+ objectiveResultService.saveBatch(mainResList);
|
|
|
+ //插入考核子表
|
|
|
+ objectiveResultScoreDetailService.saveBatch(childResList);
|
|
|
+ }
|
|
|
+}
|