Ver código fonte

单位积分加扣分统计,添加附件

huangpeng 1 semana atrás
pai
commit
b36283544c

+ 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);
 }

+ 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);
 }
 

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

@@ -2,24 +2,18 @@ package com.rongwei.bscommon.system.service.impl;
 
 import com.google.common.collect.Lists;
 import com.rongwei.bscommon.system.dao.QhseContractWorkersDao;
-import com.rongwei.bscommon.system.dao.QhsePointsUnitRecordDao;
 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.QhseContractWorkersDo;
-import com.rongwei.bsentity.domain.QhsePointsRecordUserDo;
-import com.rongwei.bsentity.domain.QhsePointsRedemptionDo;
-import com.rongwei.bsentity.domain.QhsePointsUnitRecordDo;
+import com.rongwei.bsentity.domain.*;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
-import org.apache.commons.lang.ArrayUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-
 import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.List;
@@ -41,12 +35,10 @@ public class PointServiceImpl implements PointService {
     @Autowired
     private QhseContractWorkersDao qhseContractWorkersDao;
 
-    @Autowired
-    private QhsePointsUnitRecordDao qhsePointsUnitRecordDao;
 
 
-    @Autowired
-    private QhsePointsUnitRecordServiceImpl qhsePointsUnitRecordService;
+
+
 
     @Override
     public R userPointExchange(String id) {
@@ -109,27 +101,4 @@ public class PointServiceImpl implements PointService {
         return R.ok("生成成功");
     }
 
-    public R unitPointInitialization() {
-        int year = LocalDate.now().getYear();
-        List<QhsePointsUnitRecordDo> uninitializedData = qhsePointsUnitRecordDao.getUnitPointInitializationDtata(year);
-        if (uninitializedData.isEmpty()) {
-            return R.error("当前年度所有单位都已生成积分记录");
-        }
-        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.setUnitcode(uninitializedDatum.getUnitcode());
-            qhsePointsUnitRecordDo.setId(SecurityUtil.getUUID());
-            saveList.add(qhsePointsUnitRecordDo);
-        }
-        for (List<QhsePointsUnitRecordDo> qhsePointsUnitRecordDos : Lists.partition(saveList, 500)) {
-            qhsePointsUnitRecordService.getBaseMapper().insertBatchSomeColumn(qhsePointsUnitRecordDos);
-        }
-        return R.ok("生成成功");
-    }
 }

+ 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();
+
+    }
 }
 

+ 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>

+ 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;
+
+
 
 
 

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

@@ -1,12 +1,16 @@
 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;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 /**
  * PointController class
  *
@@ -20,6 +24,9 @@ public class PointController {
     @Autowired
     private PointServiceImpl pointService;
 
+    @Autowired
+    private QhsePointsUnitRecordService qhsePointsUnitRecordService;
+
     /**
      * 用户积分重置
      *
@@ -53,7 +60,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);
+    }
+
+
+
 }