瀏覽代碼

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/PointServiceImpl.java
xiahan 1 周之前
父節點
當前提交
92deaf1a0d
共有 26 個文件被更改,包括 527 次插入17 次删除
  1. 12 0
      qhse-common/src/main/java/com/rongwei/bscommon/system/dao/QhsePointsUnitDetailsDao.java
  2. 5 0
      qhse-common/src/main/java/com/rongwei/bscommon/system/dao/QhsePointsUnitRecordDao.java
  3. 10 0
      qhse-common/src/main/java/com/rongwei/bscommon/system/dao/StudyFilePersonDao.java
  4. 21 0
      qhse-common/src/main/java/com/rongwei/bscommon/system/service/QhsePointsUnitDetailsService.java
  5. 10 0
      qhse-common/src/main/java/com/rongwei/bscommon/system/service/QhsePointsUnitRecordService.java
  6. 10 0
      qhse-common/src/main/java/com/rongwei/bscommon/system/service/StudyFilePersonRecordService.java
  7. 14 0
      qhse-common/src/main/java/com/rongwei/bscommon/system/service/StudyFilePersonService.java
  8. 10 1
      qhse-common/src/main/java/com/rongwei/bscommon/system/service/StudyFileService.java
  9. 1 0
      qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/PointServiceImpl.java
  10. 17 0
      qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/QhsePointsUnitDetailsServiceImpl.java
  11. 122 2
      qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/QhsePointsUnitRecordServiceImpl.java
  12. 15 0
      qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/StudyFilePersonRecordServiceImpl.java
  13. 31 0
      qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/StudyFilePersonServiceImpl.java
  14. 51 3
      qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/StudyFileServiceImpl.java
  15. 31 1
      qhse-common/src/main/resources/mybatis/system/QhsePointsUnitRecordDao.xml
  16. 14 0
      qhse-common/src/main/resources/mybatis/system/StudyFilePersonDao.xml
  17. 1 1
      qhse-common/src/main/resources/mybatis/system/StudyFileRecordDao.xml
  18. 18 0
      qhse-entity/src/main/java/com/rongwei/bsentity/Dto/QhsePointsUnitFileDto.java
  19. 83 0
      qhse-entity/src/main/java/com/rongwei/bsentity/domain/QhsePointsUnitDetailsDo.java
  20. 2 4
      qhse-entity/src/main/java/com/rongwei/bsentity/domain/QhsePointsUnitRecordDo.java
  21. 0 0
      qhse-entity/src/main/java/com/rongwei/bsentity/dto/PunishmentExcelDto.java
  22. 0 0
      qhse-entity/src/main/java/com/rongwei/bsentity/dto/QhseVisitorManagementDto.java
  23. 0 0
      qhse-entity/src/main/java/com/rongwei/bsentity/dto/SendMessageDto.java
  24. 0 0
      qhse-entity/src/main/java/com/rongwei/bsentity/dto/StudyFileProduceHistoryDto.java
  25. 29 1
      qhse-server/src/main/java/com/rongwei/controller/PointController.java
  26. 20 4
      qhse-server/src/main/java/com/rongwei/controller/StudyFileController.java

+ 12 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/dao/QhsePointsUnitDetailsDao.java

@@ -0,0 +1,12 @@
+package com.rongwei.bscommon.system.dao;
+
+import com.rongwei.bsentity.domain.QhsePointsUnitDetailsDo;
+import com.rongwei.bsentity.domain.QhsePointsUnitRecordDo;
+import com.rongwei.rwcommon.base.R;
+
+import java.util.List;
+
+public interface QhsePointsUnitDetailsDao extends QHSEMapper<QhsePointsUnitDetailsDo> {
+
+
+}

+ 5 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/dao/QhsePointsUnitRecordDao.java

@@ -1,6 +1,7 @@
 package com.rongwei.bscommon.system.dao;
 
 import com.rongwei.bsentity.domain.QhsePointsUnitRecordDo;
+import com.rongwei.rwcommon.base.R;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Select;
 
@@ -11,4 +12,8 @@ public interface QhsePointsUnitRecordDao extends QHSEMapper<QhsePointsUnitRecord
 
 
     List<QhsePointsUnitRecordDo> getUnitPointInitializationDtata(@Param("year")int year);
+
+    int updateScoreInfo(@Param("list") List<QhsePointsUnitRecordDo> list);
+
+    int addUnitFiles(@Param("list") List<String> ids,@Param("attachment") String attachment);
 }

+ 10 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/dao/StudyFilePersonDao.java

@@ -2,6 +2,16 @@ package com.rongwei.bscommon.system.dao;
 
 import com.rongwei.bsentity.domain.StudyFilePersonDo;
 import com.rongwei.rwcommon.base.BaseDao;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface StudyFilePersonDao extends BaseDao<StudyFilePersonDo> {
+    /**
+     * 批量恢复删除状态
+     *
+     * @param recoverIds ID列表
+     * @return 影响行数
+     */
+    int batchRecoverByIds(@Param("recoverIds") List<String> recoverIds);
 }

+ 21 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/service/QhsePointsUnitDetailsService.java

@@ -0,0 +1,21 @@
+package com.rongwei.bscommon.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.rongwei.bsentity.domain.QhsePointsUnitDetailsDo;
+import com.rongwei.bsentity.domain.QhsePointsUnitRecordDo;
+import com.rongwei.rwcommon.base.R;
+
+import java.util.List;
+
+
+/**
+ * 单位积分清单(QhsePointsUnitRecord)表服务接口
+ *
+ * @author makejava
+ * @since 2025-09-05 15:15:06
+ */
+public interface QhsePointsUnitDetailsService extends IService<QhsePointsUnitDetailsDo> {
+
+
+}
+

+ 10 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/service/QhsePointsUnitRecordService.java

@@ -2,6 +2,10 @@ package com.rongwei.bscommon.system.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.QhsePointsUnitRecordDo;
+import com.rongwei.bsentity.dto.QhsePointsUnitFileDto;
+import com.rongwei.rwcommon.base.R;
+
+import java.util.List;
 
 
 /**
@@ -12,5 +16,11 @@ import com.rongwei.bsentity.domain.QhsePointsUnitRecordDo;
  */
 public interface QhsePointsUnitRecordService extends IService<QhsePointsUnitRecordDo> {
 
+    R unitPointInitialization();
+
+
+    R calUnitScore(List<String> ids);
+
+    R addUnitFiles(QhsePointsUnitFileDto qhsePointsUnitFileDto);
 }
 

+ 10 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/service/StudyFilePersonRecordService.java

@@ -3,6 +3,8 @@ package com.rongwei.bscommon.system.service;
 import com.rongwei.bsentity.domain.StudyFilePersonRecordDo;
 import com.rongwei.rwcommon.base.BaseService;
 
+import java.util.List;
+
 public interface StudyFilePersonRecordService extends BaseService<StudyFilePersonRecordDo> {
     /**
      * 根据历史ID删除
@@ -11,4 +13,12 @@ public interface StudyFilePersonRecordService extends BaseService<StudyFilePerso
      * @return 删除数量
      */
     boolean deleteByHistoryId(String historyId);
+
+    /**
+     * 根据历史ID查询
+     *
+     * @param id 历史ID
+     * @return 查询结果
+     */
+    List<StudyFilePersonRecordDo> selectListByHistoryId(String id);
 }

+ 14 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/service/StudyFilePersonService.java

@@ -13,4 +13,18 @@ public interface StudyFilePersonService extends BaseService<StudyFilePersonDo> {
      * @return 学习文件人员
      */
     List<StudyFilePersonDo> selectListByStudyFileId(String studyFileId);
+
+    /**
+     * 根据学习文件id删除学习文件人员
+     *
+     * @param id 学习文件id
+     */
+    boolean deleteByStudyFileId(String id);
+
+    /**
+     * 批量恢复学习文件人员
+     *
+     * @param recoverIds 恢复的id
+     */
+    int batchRecoverByIds(List<String> recoverIds);
 }

+ 10 - 1
qhse-common/src/main/java/com/rongwei/bscommon/system/service/StudyFileService.java

@@ -1,7 +1,8 @@
 package com.rongwei.bscommon.system.service;
 
-import com.rongwei.bsentity.dto.StudyFileProduceHistoryDto;
 import com.rongwei.bsentity.domain.StudyFileDo;
+import com.rongwei.bsentity.dto.StudyFileProduceHistoryDto;
+import com.rongwei.rwcommon.base.R;
 
 public interface StudyFileService {
     /**
@@ -20,4 +21,12 @@ public interface StudyFileService {
      * @return 同步结果
      */
     boolean syncPerson(StudyFileProduceHistoryDto dto);
+
+    /**
+     * 取消流程,恢复历史数据
+     *
+     * @param id 取消流程的文件 ID
+     * @return 结果
+     */
+    R cancelProcess(String id);
 }

+ 1 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/PointServiceImpl.java

@@ -9,6 +9,7 @@ import com.rongwei.bscommon.system.service.PointService;
 import com.rongwei.bscommon.system.service.QhsePointsRedemptionService;
 import com.rongwei.bscommon.system.utils.QHSEUtils;
 import com.rongwei.bsentity.domain.*;
+import com.rongwei.bsentity.domain.*;
 import com.rongwei.bsentity.dto.UserPointRegister;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.BaseDo;

+ 17 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/QhsePointsUnitDetailsServiceImpl.java

@@ -0,0 +1,17 @@
+package com.rongwei.bscommon.system.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bscommon.system.dao.QhsePointsUnitDetailsDao;
+import com.rongwei.bscommon.system.service.QhsePointsUnitDetailsService;
+import com.rongwei.bsentity.domain.QhsePointsUnitDetailsDo;
+import com.rongwei.rwcommon.base.R;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class QhsePointsUnitDetailsServiceImpl extends
+        ServiceImpl<QhsePointsUnitDetailsDao, QhsePointsUnitDetailsDo> implements QhsePointsUnitDetailsService {
+
+
+}

+ 122 - 2
qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/QhsePointsUnitRecordServiceImpl.java

@@ -1,14 +1,30 @@
 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.google.common.collect.Lists;
+import com.rongwei.bscommon.system.dao.QhsePointsUnitDetailsDao;
 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.utils.QHSEUtils;
+import com.rongwei.bsentity.domain.QhsePointsUnitDetailsDo;
 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.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.Map;
+import java.util.stream.Collectors;
 
 /**
  * 单位积分清单(QhsePointsUnitRecord)表服务实现类
@@ -16,9 +32,113 @@ import java.util.List;
  * @author makejava
  * @since 2025-09-05 15:15:12
  */
-@Service("qhsePointsUnitRecordService")
+@Service
 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();
+
+    }
 }
 

+ 15 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/StudyFilePersonRecordServiceImpl.java

@@ -7,6 +7,8 @@ import com.rongwei.rwcommon.base.BaseServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class StudyFilePersonRecordServiceImpl extends BaseServiceImpl<StudyFilePersonRecordDao, StudyFilePersonRecordDo>
         implements StudyFilePersonRecordService {
@@ -25,4 +27,17 @@ public class StudyFilePersonRecordServiceImpl extends BaseServiceImpl<StudyFileP
                 .eq(StudyFilePersonRecordDo::getHistoryId, historyId)
                 .remove();
     }
+
+    /**
+     * 根据历史ID查询
+     *
+     * @param id 历史ID
+     * @return 列表
+     */
+    @Override
+    public List<StudyFilePersonRecordDo> selectListByHistoryId(String id) {
+        return lambdaQuery().eq(StudyFilePersonRecordDo::getHistoryId, id)
+                .eq(StudyFilePersonRecordDo::getDeleted, "0")
+                .list();
+    }
 }

+ 31 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/StudyFilePersonServiceImpl.java

@@ -4,6 +4,7 @@ import com.rongwei.bscommon.system.dao.StudyFilePersonDao;
 import com.rongwei.bscommon.system.service.StudyFilePersonService;
 import com.rongwei.bsentity.domain.StudyFilePersonDo;
 import com.rongwei.rwcommon.base.BaseServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -11,6 +12,9 @@ import java.util.List;
 @Service
 public class StudyFilePersonServiceImpl extends BaseServiceImpl<StudyFilePersonDao, StudyFilePersonDo>
         implements StudyFilePersonService {
+    @Autowired
+    private StudyFilePersonDao studyFilePersonDao;
+
     /**
      * 根据学习文件id查询学习文件人员
      *
@@ -23,4 +27,31 @@ public class StudyFilePersonServiceImpl extends BaseServiceImpl<StudyFilePersonD
                 .eq(StudyFilePersonDo::getDeleted, "0")
                 .list();
     }
+
+    /**
+     * 根据学习文件id删除学习文件人员
+     *
+     * @param id 学习文件id
+     * @return 是否成功
+     */
+    @Override
+    public boolean deleteByStudyFileId(String id) {
+        return lambdaUpdate().eq(StudyFilePersonDo::getStudyFileId, id)
+                .eq(StudyFilePersonDo::getDeleted, "0")
+                .remove();
+    }
+
+    /**
+     * 批量恢复学习文件人员
+     *
+     * @param recoverIds 恢复的id
+     * @return 恢复的行数
+     */
+    @Override
+    public int batchRecoverByIds(List<String> recoverIds) {
+        if (recoverIds == null || recoverIds.isEmpty()) {
+            return 0;
+        }
+        return studyFilePersonDao.batchRecoverByIds(recoverIds);
+    }
 }

+ 51 - 3
qhse-common/src/main/java/com/rongwei/bscommon/system/service/impl/StudyFileServiceImpl.java

@@ -6,13 +6,16 @@ import com.rongwei.bscommon.system.service.StudyFilePersonService;
 import com.rongwei.bscommon.system.service.StudyFileRecordService;
 import com.rongwei.bscommon.system.service.StudyFileService;
 import com.rongwei.bscommon.system.utils.QHSEUtils;
-import com.rongwei.bsentity.dto.StudyFileProduceHistoryDto;
 import com.rongwei.bsentity.domain.StudyFileDo;
 import com.rongwei.bsentity.domain.StudyFilePersonDo;
 import com.rongwei.bsentity.domain.StudyFilePersonRecordDo;
 import com.rongwei.bsentity.domain.StudyFileRecordDo;
+import com.rongwei.bsentity.dto.StudyFileProduceHistoryDto;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
+import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.SecurityUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -20,10 +23,14 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 @Service
 public class StudyFileServiceImpl implements StudyFileService {
+
+    private static final Logger logger = LoggerFactory.getLogger(StudyFileServiceImpl.class);
+
     @Autowired
     private StudyFileDao studyFileDao;
     @Autowired
@@ -95,11 +102,52 @@ public class StudyFileServiceImpl implements StudyFileService {
         return true;
     }
 
+    /**
+     * 取消流程,恢复历史数据
+     *
+     * @param id 取消流程的文件 ID
+     * @return 结果
+     */
+    @Override
+    public R cancelProcess(String id) {
+        // 获取最新的学习文件信息
+        StudyFileDo currentFile = studyFileDao.selectById(id);
+        // 获取最新历史文件
+        StudyFileRecordDo historyFile = studyFileRecordService.selectLatestRecordByMainId(id);
+        if (historyFile == null) {
+            logger.info("文件:{},没有找到对应的历史文件", id);
+            return R.ok("没有找到对应的历史文件");
+        }
+        // 恢复文件历史数据
+        BeanUtils.copyProperties(historyFile, currentFile);
+        currentFile.setId(historyFile.getMainId());
+        if (Objects.isNull(historyFile.getRemark())) {
+            currentFile.setRemark("");
+        }
+        studyFileDao.updateById(currentFile);
+
+        // 删除人员信息
+        studyFilePersonService.deleteByStudyFileId(id);
+        List<StudyFilePersonRecordDo> personRecords =
+                studyFilePersonRecordService.selectListByHistoryId(historyFile.getId());
+
+        if (personRecords == null || personRecords.isEmpty()) {
+            logger.info("文件:{},没有找到对应人员历史数据", id);
+            return R.ok();
+        }
+
+        // 批量恢复人员的ID
+        List<String> recoverIds = personRecords.stream().map(StudyFilePersonRecordDo::getMainId)
+                .collect(Collectors.toList());
+        studyFilePersonService.batchRecoverByIds(recoverIds);
+        return R.ok();
+    }
+
     /**
      * 创建历史学习文件记录
      *
      * @param source      源数据
-     * @param currentUser
+     * @param currentUser 当前用户
      */
     private StudyFileRecordDo createHistoryFileRecord(StudyFileDo source, SysUserVo currentUser) {
         StudyFileRecordDo target = new StudyFileRecordDo();
@@ -152,7 +200,7 @@ public class StudyFileServiceImpl implements StudyFileService {
      *
      * @param source        源数据
      * @param historyFileId 历史文件ID
-     * @param currentUser
+     * @param currentUser   当前用户
      */
     private StudyFilePersonRecordDo convertToHistoryPersonRecord(StudyFilePersonDo source,
                                                                  String historyFileId, SysUserVo currentUser) {

+ 31 - 1
qhse-common/src/main/resources/mybatis/system/QhsePointsUnitRecordDao.xml

@@ -2,6 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.rongwei.bscommon.system.dao.QhsePointsUnitRecordDao">
 
+
     <select id="getUnitPointInitializationDtata" resultType="com.rongwei.bsentity.domain.QhsePointsUnitRecordDo">
         SELECT
         a.*
@@ -9,10 +10,39 @@
         qhse_subcontractor_outsourcing a
         LEFT JOIN qhse_points_unit_record b
         ON a.ID = b.SUBCONTRACTORID
-        AND b.POINTSYEAR = #{year,jdbcType=INTEGER}
+        AND b.POINTSYEAR = #{year,jdbcType=INTEGER} AND b.DELETED = '0'
         <where>
             a.DELETED = '0'
             AND b.ID IS NULL;
         </where>
     </select>
+
+
+
+    <update id="updateScoreInfo">
+            <foreach collection="list" item="item" separator=";">
+                UPDATE qhse_points_unit_record
+                SET
+                BONUSPOINTS = #{item.bonuspoints},
+                BONUSDESCRIPTION = #{item.bonusdescription},
+                DEDUCTIONPOINTS = #{item.deductionpoints},
+                DEDUCTIONDESCRIPTION =#{item.deductiondescription},
+                CUMULATIVESCORE =#{item.cumulativescore}
+                WHERE ID = #{item.id}
+            </foreach>
+    </update>
+
+    <update id="addUnitFiles">
+        UPDATE qhse_points_unit_details
+        SET ATTACHMENT = CASE
+        WHEN ATTACHMENT IS NULL OR ATTACHMENT = '' THEN #{attachment}
+        ELSE CONCAT(ATTACHMENT, CONCAT('^_^', #{attachment}))
+        END
+        WHERE ID IN
+        <foreach collection="list" item="id" separator=",">
+            (#{id})
+        </foreach>
+
+    </update>
+
 </mapper>

+ 14 - 0
qhse-common/src/main/resources/mybatis/system/StudyFilePersonDao.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.rongwei.bscommon.system.dao.StudyFilePersonDao">
+
+    <update id="batchRecoverByIds">
+        UPDATE qhse_study_file_person
+        SET DELETED = 0
+        WHERE ID IN
+        <foreach collection="recoverIds" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+</mapper>

+ 1 - 1
qhse-common/src/main/resources/mybatis/system/StudyFileRecordDao.xml

@@ -2,6 +2,6 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.rongwei.bscommon.system.dao.StudyFileRecordDao">
     <select id="selectLatestRecordByMainId" resultType="com.rongwei.bsentity.domain.StudyFileRecordDo">
-        SELECT*FROM qhse_study_file_record WHERE MAINID= #{ mainId } ORDER BY CREATEDATE LIMIT 1
+        SELECT * FROM qhse_study_file_record WHERE MAINID= #{ mainId } ORDER BY CREATEDATE DESC LIMIT 1
     </select>
 </mapper>

+ 18 - 0
qhse-entity/src/main/java/com/rongwei/bsentity/Dto/QhsePointsUnitFileDto.java

@@ -0,0 +1,18 @@
+package com.rongwei.bsentity.dto;
+
+import com.rongwei.bsentity.domain.QhsePointsUnitDetailsDo;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class QhsePointsUnitFileDto {
+    /**
+     * 附件ids
+     */
+    private List<String> ids;
+    /**
+     * 附件地址
+     */
+    private String attachment;
+}

+ 83 - 0
qhse-entity/src/main/java/com/rongwei/bsentity/domain/QhsePointsUnitDetailsDo.java

@@ -0,0 +1,83 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName(value = "qhse_points_unit_details")
+public class QhsePointsUnitDetailsDo extends BaseDo implements Serializable {
+
+    @JsonProperty("ID")
+    private String id;
+
+    @JsonProperty("TENANTID")
+    private String tenantid;
+
+    @JsonProperty("ROPTION")
+    private String roption;
+
+    @JsonProperty("DELETED")
+    private String deleted;
+
+    @JsonProperty("REMARK")
+    private String remark;
+
+    @JsonProperty("CREATEDATE")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Date createdate;
+
+    @JsonProperty("CREATEUSERID")
+    private String createuserid;
+
+    @JsonProperty("MODIFYDATE")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Date modifydate;
+
+    @JsonProperty("MODIFYUSERID")
+    private String modifyuserid;
+
+    @JsonProperty("CREATEUSERNAME")
+    private String createusername;
+
+    @JsonProperty("MODIFYUSERNAME")
+    private String modifyusername;
+
+    @JsonProperty("POINTSYEAR")
+    private String pointsyear;
+
+    @JsonProperty("DESCRIPTION")
+    private String description;
+
+    @JsonProperty("HAPPENTIME")
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Date happentime;
+
+    @JsonProperty("POINTS")
+    private Integer points;
+
+    @JsonProperty("RULEID")
+    private String ruleid;
+
+    @JsonProperty("RULECODE")
+    private String rulecode;
+
+    @JsonProperty("RULEDESCRIPTION")
+    private String ruledescription;
+
+    @JsonProperty("ATTACHMENT")
+    private String attachment;
+
+    @JsonProperty("POINTSUNITID")
+    private String pointsunitid;
+
+    @JsonProperty("STATE")
+    private String state;
+
+}

+ 2 - 4
qhse-entity/src/main/java/com/rongwei/bsentity/domain/QhsePointsUnitRecordDo.java

@@ -58,10 +58,8 @@ public class QhsePointsUnitRecordDo extends BaseDo {
     private String deductiondescription;
 //累计分值
     private Integer cumulativescore;
-//预警
-    private String warning;
-//单位编号
-    private String unitcode;
+
+
 
 
 

qhse-entity/src/main/java/com/rongwei/bsentity/Dto/PunishmentExcelDto.java → qhse-entity/src/main/java/com/rongwei/bsentity/dto/PunishmentExcelDto.java


qhse-entity/src/main/java/com/rongwei/bsentity/Dto/QhseVisitorManagementDto.java → qhse-entity/src/main/java/com/rongwei/bsentity/dto/QhseVisitorManagementDto.java


qhse-entity/src/main/java/com/rongwei/bsentity/Dto/SendMessageDto.java → qhse-entity/src/main/java/com/rongwei/bsentity/dto/SendMessageDto.java


qhse-entity/src/main/java/com/rongwei/bsentity/Dto/StudyFileProduceHistoryDto.java → qhse-entity/src/main/java/com/rongwei/bsentity/dto/StudyFileProduceHistoryDto.java


+ 29 - 1
qhse-server/src/main/java/com/rongwei/controller/PointController.java

@@ -1,6 +1,8 @@
 package com.rongwei.controller;
 
+import com.rongwei.bscommon.system.service.QhsePointsUnitRecordService;
 import com.rongwei.bscommon.system.service.impl.PointServiceImpl;
+import com.rongwei.bsentity.dto.QhsePointsUnitFileDto;
 import com.rongwei.rwcommon.base.R;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -22,6 +24,9 @@ public class PointController {
     @Autowired
     private PointServiceImpl pointService;
 
+    @Autowired
+    private QhsePointsUnitRecordService qhsePointsUnitRecordService;
+
     /**
      * 开始用户积分兑换
      *
@@ -79,7 +84,30 @@ public class PointController {
     @GetMapping("/unit/initialization")
     public R unitPointInitialization() {
         log.info("开始初始化单位年度积分");
-        return pointService.unitPointInitialization();
+        return qhsePointsUnitRecordService.unitPointInitialization();
+    }
+
+
+    /**
+     * 计算单位主表分数
+     * @return
+     */
+    @PostMapping("/unit/calUnitScore")
+    public R calUnitScore(@RequestBody List<String> ids) {
+        log.info("计算单位主表分数 {}",ids.toString());
+        return qhsePointsUnitRecordService.calUnitScore(ids);
     }
 
+    /**
+     * 单位加扣分附件补录
+     * @return
+     */
+    @PostMapping("/unit/addUnitFiles")
+    public R addUnitFiles(@RequestBody QhsePointsUnitFileDto qhsePointsUnitFileDto) {
+        log.info("单位加扣分附件补录 {}",qhsePointsUnitFileDto.toString());
+        return qhsePointsUnitRecordService.addUnitFiles(qhsePointsUnitFileDto);
+    }
+
+
+
 }

+ 20 - 4
qhse-server/src/main/java/com/rongwei/controller/StudyFileController.java

@@ -4,15 +4,16 @@ import com.rongwei.bscommon.system.service.StudyFileService;
 import com.rongwei.bsentity.dto.StudyFileProduceHistoryDto;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("/study/file")
 public class StudyFileController {
+    private static final Logger logger = LoggerFactory.getLogger(StudyFileController.class);
+
     @Autowired
     private StudyFileService studyFileService;
 
@@ -43,4 +44,19 @@ public class StudyFileController {
         }
         return studyFileService.syncPerson(dto) ? R.ok() : R.error("同步人员失败!");
     }
+
+    /**
+     * 取消流程,恢复历史数据
+     *
+     * @param id 取消流程的文件 ID
+     * @return 结果
+     */
+    @GetMapping("/cancel/process/{id}")
+    public R cancelProcess(@PathVariable String id) {
+        logger.info("取消流程,恢复历史数据,入参:{}", id);
+        if (StringUtils.isBlank(id)) {
+            return R.error("主健不能为空!");
+        }
+        return studyFileService.cancelProcess(id);
+    }
 }