|
@@ -1,14 +1,30 @@
|
|
package com.rongwei.bscommon.system.service.impl;
|
|
package com.rongwei.bscommon.system.service.impl;
|
|
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.google.common.collect.Lists;
|
|
|
|
+import com.rongwei.bscommon.system.dao.QhsePointsUnitDetailsDao;
|
|
import com.rongwei.bscommon.system.dao.QhsePointsUnitRecordDao;
|
|
import com.rongwei.bscommon.system.dao.QhsePointsUnitRecordDao;
|
|
|
|
+import com.rongwei.bscommon.system.service.QhsePointsUnitDetailsService;
|
|
import com.rongwei.bscommon.system.service.QhsePointsUnitRecordService;
|
|
import com.rongwei.bscommon.system.service.QhsePointsUnitRecordService;
|
|
|
|
+import com.rongwei.bscommon.system.utils.QHSEUtils;
|
|
|
|
+import com.rongwei.bsentity.domain.QhsePointsUnitDetailsDo;
|
|
import com.rongwei.bsentity.domain.QhsePointsUnitRecordDo;
|
|
import com.rongwei.bsentity.domain.QhsePointsUnitRecordDo;
|
|
-import org.apache.ibatis.annotations.Param;
|
|
|
|
|
|
+import com.rongwei.bsentity.dto.QhsePointsUnitFileDto;
|
|
|
|
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
|
|
|
|
+import com.rongwei.rwcommon.base.R;
|
|
|
|
+import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
+import java.time.LocalDate;
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.Comparator;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 单位积分清单(QhsePointsUnitRecord)表服务实现类
|
|
* 单位积分清单(QhsePointsUnitRecord)表服务实现类
|
|
@@ -16,9 +32,113 @@ import java.util.List;
|
|
* @author makejava
|
|
* @author makejava
|
|
* @since 2025-09-05 15:15:12
|
|
* @since 2025-09-05 15:15:12
|
|
*/
|
|
*/
|
|
-@Service("qhsePointsUnitRecordService")
|
|
|
|
|
|
+@Service
|
|
public class QhsePointsUnitRecordServiceImpl extends ServiceImpl<QhsePointsUnitRecordDao, QhsePointsUnitRecordDo> implements QhsePointsUnitRecordService {
|
|
public class QhsePointsUnitRecordServiceImpl extends ServiceImpl<QhsePointsUnitRecordDao, QhsePointsUnitRecordDo> implements QhsePointsUnitRecordService {
|
|
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
+ private QhsePointsUnitRecordDao qhsePointsUnitRecordDao;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private QhsePointsUnitDetailsService qhsePointsUnitDetailsService;
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public R unitPointInitialization() {
|
|
|
|
+ //1.获取年份 查询当年的未生成纪录的数据
|
|
|
|
+ int year = LocalDate.now().getYear();
|
|
|
|
+ List<QhsePointsUnitRecordDo> uninitializedData = qhsePointsUnitRecordDao.getUnitPointInitializationDtata(year);
|
|
|
|
+ if (uninitializedData.isEmpty()) {
|
|
|
|
+ return R.error("当前年度所有单位都已生成积分记录");
|
|
|
|
+ }
|
|
|
|
+ //2.根据查询的数据 插入记录 当前登录人信息需要手动赋值
|
|
|
|
+ SysUserVo currentUser = QHSEUtils.getCurrentUser();
|
|
|
|
+ QhsePointsUnitRecordDo qhsePointsUnitRecordDo;
|
|
|
|
+ List<QhsePointsUnitRecordDo> saveList = new ArrayList<>(uninitializedData.size());
|
|
|
|
+ for (QhsePointsUnitRecordDo uninitializedDatum : uninitializedData) {
|
|
|
|
+ qhsePointsUnitRecordDo = new QhsePointsUnitRecordDo();
|
|
|
|
+ QHSEUtils.initModelGeneralParameters(qhsePointsUnitRecordDo, currentUser);
|
|
|
|
+ qhsePointsUnitRecordDo.setSubcontractorid(uninitializedDatum.getId());
|
|
|
|
+ qhsePointsUnitRecordDo.setPointsyear(year);
|
|
|
|
+ qhsePointsUnitRecordDo.setId(SecurityUtil.getUUID());
|
|
|
|
+ saveList.add(qhsePointsUnitRecordDo);
|
|
|
|
+ }
|
|
|
|
+ for (List<QhsePointsUnitRecordDo> qhsePointsUnitRecordDos : Lists.partition(saveList, 500)) {
|
|
|
|
+ this.getBaseMapper().insertBatchSomeColumn(qhsePointsUnitRecordDos);
|
|
|
|
+ }
|
|
|
|
+ return R.ok("生成成功");
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional
|
|
|
|
+ public R calUnitScore(List<String> ids) {
|
|
|
|
+ //获取要更新的主表信息
|
|
|
|
+ List<QhsePointsUnitRecordDo> mainUpdates =new ArrayList<>();
|
|
|
|
+ List<String> detailIds =new ArrayList<>();
|
|
|
|
+ QhsePointsUnitRecordDo qhsePointsUnitRecordDo =null;
|
|
|
|
+
|
|
|
|
+ //获取对应的加分记录数据
|
|
|
|
+ Map<String, List<QhsePointsUnitDetailsDo>> details = qhsePointsUnitDetailsService.getBaseMapper().selectList(
|
|
|
|
+ new LambdaQueryWrapper<QhsePointsUnitDetailsDo>().eq(QhsePointsUnitDetailsDo::getDeleted, "0")
|
|
|
|
+ .in(QhsePointsUnitDetailsDo::getPointsunitid, ids)
|
|
|
|
+ .ne(QhsePointsUnitDetailsDo::getPoints, 0)).stream().collect(Collectors.groupingBy(
|
|
|
|
+ QhsePointsUnitDetailsDo::getPointsunitid, Collectors.collectingAndThen(
|
|
|
|
+ Collectors.toList(),
|
|
|
|
+ list -> {
|
|
|
|
+ // 按inserttime降序排序
|
|
|
|
+ list.sort(Comparator.comparing(QhsePointsUnitDetailsDo::getCreatedate));
|
|
|
|
+ return list;
|
|
|
|
+ }
|
|
|
|
+ )
|
|
|
|
+ ));
|
|
|
|
+
|
|
|
|
+ for (String key: details.keySet()){
|
|
|
|
+ qhsePointsUnitRecordDo = new QhsePointsUnitRecordDo();
|
|
|
|
+ qhsePointsUnitRecordDo.setId(key);
|
|
|
|
+ qhsePointsUnitRecordDo.setBonuspoints(0);
|
|
|
|
+ qhsePointsUnitRecordDo.setBonusdescription("");
|
|
|
|
+ qhsePointsUnitRecordDo.setDeductionpoints(0);
|
|
|
|
+ qhsePointsUnitRecordDo.setDeductiondescription("");
|
|
|
|
+ qhsePointsUnitRecordDo.setCumulativescore(0);
|
|
|
|
+ //分值大于0 累加到 加分分值,加分描述追加 ,反之 累加 扣分分值,扣分描述
|
|
|
|
+ for (QhsePointsUnitDetailsDo qhsePointsUnitDetailsDo : details.get(key)) {
|
|
|
|
+ String description ="分值:"+ qhsePointsUnitDetailsDo.getPoints() + " 描述:" +qhsePointsUnitDetailsDo.getRuledescription() +";";
|
|
|
|
+ if (qhsePointsUnitDetailsDo.getPoints()>0){
|
|
|
|
+ qhsePointsUnitRecordDo.setBonuspoints(qhsePointsUnitDetailsDo.getPoints()+qhsePointsUnitRecordDo.getBonuspoints());
|
|
|
|
+ qhsePointsUnitRecordDo.setBonusdescription(qhsePointsUnitRecordDo.getBonusdescription()+description);
|
|
|
|
+ }else{
|
|
|
|
+ qhsePointsUnitRecordDo.setDeductionpoints(qhsePointsUnitDetailsDo.getPoints()+qhsePointsUnitRecordDo.getDeductionpoints());
|
|
|
|
+ qhsePointsUnitRecordDo.setDeductiondescription(qhsePointsUnitRecordDo.getDeductiondescription()+description);
|
|
|
|
+ }
|
|
|
|
+ qhsePointsUnitRecordDo.setCumulativescore(qhsePointsUnitRecordDo.getCumulativescore() + qhsePointsUnitDetailsDo.getPoints());
|
|
|
|
+ detailIds.add(qhsePointsUnitRecordDo.getId());
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ mainUpdates.add(qhsePointsUnitRecordDo);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ //更新主表
|
|
|
|
+ qhsePointsUnitRecordDao.updateScoreInfo(mainUpdates);
|
|
|
|
+ //更新子表
|
|
|
|
+ LambdaUpdateWrapper<QhsePointsUnitDetailsDo> wrapper = new LambdaUpdateWrapper<>();
|
|
|
|
+ wrapper.in(QhsePointsUnitDetailsDo::getId, detailIds).set(QhsePointsUnitDetailsDo::getState, "1");
|
|
|
|
+ qhsePointsUnitDetailsService.update(wrapper);
|
|
|
|
+ return R.ok();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 单位加扣分补录附件
|
|
|
|
+ * @param qhsePointsUnitFileDto
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public R addUnitFiles(QhsePointsUnitFileDto qhsePointsUnitFileDto) {
|
|
|
|
+ qhsePointsUnitRecordDao.addUnitFiles(qhsePointsUnitFileDto.getIds(),qhsePointsUnitFileDto.getAttachment());
|
|
|
|
+ return R.ok();
|
|
|
|
+
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|