Просмотр исходного кода

单位积分加扣分统计,更新,删除计算积分总数,描述

huangpeng 1 неделя назад
Родитель
Сommit
1f07d8560c

+ 2 - 3
qhse-common/src/main/java/com/rongwei/bscommon/system/dao/QhsePointsUnitRecordDao.java

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

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

@@ -22,5 +22,7 @@ public interface QhsePointsUnitRecordService extends IService<QhsePointsUnitReco
     R calUnitScore(List<String> ids);
 
     R addUnitFiles(QhsePointsUnitFileDto qhsePointsUnitFileDto);
+
+    R delUnitScore(List<String> ids);
 }
 

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

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 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;
@@ -45,10 +44,6 @@ public class PointServiceImpl implements PointService {
     @Autowired
     private QhseContractWorkersDao qhseContractWorkersDao;
     @Autowired
-    private QhsePointsUnitRecordDao qhsePointsUnitRecordDao;
-    @Autowired
-    private QhsePointsUnitRecordServiceImpl qhsePointsUnitRecordService;
-    @Autowired
     private QhsePointsDetailsUserServiceImpl qhsePointsDetailsUserService;
 
     @Override
@@ -243,32 +238,4 @@ public class PointServiceImpl implements PointService {
         }
         return R.ok();
     }
-
-    /**
-     * 单位积分初始化
-     *
-     * @return
-     */
-    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.setId(SecurityUtil.getUUID());
-            saveList.add(qhsePointsUnitRecordDo);
-        }
-        for (List<QhsePointsUnitRecordDo> qhsePointsUnitRecordDos : Lists.partition(saveList, 500)) {
-            qhsePointsUnitRecordService.getBaseMapper().insertBatchSomeColumn(qhsePointsUnitRecordDos);
-        }
-        return R.ok("生成成功");
-    }
 }

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

@@ -9,6 +9,7 @@ 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.QhsePointsDetailsUserDo;
 import com.rongwei.bsentity.domain.QhsePointsUnitDetailsDo;
 import com.rongwei.bsentity.domain.QhsePointsUnitRecordDo;
 import com.rongwei.bsentity.dto.QhsePointsUnitFileDto;
@@ -77,23 +78,16 @@ public class QhsePointsUnitRecordServiceImpl extends ServiceImpl<QhsePointsUnitR
     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)
+                        .in(QhsePointsUnitDetailsDo::getId, 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;
-                        }
-                )
+                QhsePointsUnitDetailsDo::getPointsunitid
         ));
+        SysUserVo currentUser = QHSEUtils.getCurrentUser();
 
         for (String key: details.keySet()){
             qhsePointsUnitRecordDo = new QhsePointsUnitRecordDo();
@@ -105,26 +99,20 @@ public class QhsePointsUnitRecordServiceImpl extends ServiceImpl<QhsePointsUnitR
             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);
+        qhsePointsUnitRecordDao.updateScoreInfo(mainUpdates,currentUser);
         //更新子表
         LambdaUpdateWrapper<QhsePointsUnitDetailsDo> wrapper = new LambdaUpdateWrapper<>();
-        wrapper.in(QhsePointsUnitDetailsDo::getId, detailIds).set(QhsePointsUnitDetailsDo::getState, "1");
+        wrapper.in(QhsePointsUnitDetailsDo::getId, ids).set(QhsePointsUnitDetailsDo::getState, "1");
         qhsePointsUnitDetailsService.update(wrapper);
         return R.ok();
     }
@@ -140,5 +128,53 @@ public class QhsePointsUnitRecordServiceImpl extends ServiceImpl<QhsePointsUnitR
         return R.ok();
 
     }
+
+    @Override
+    @Transactional
+    public R delUnitScore(List<String> ids) {
+        List<QhsePointsUnitDetailsDo> qhsePointsUnitDetailsDos = qhsePointsUnitDetailsService.list(new LambdaQueryWrapper<QhsePointsUnitDetailsDo>()
+                .eq(QhsePointsUnitDetailsDo::getState, 1).in(QhsePointsUnitDetailsDo::getId, ids));
+        if(qhsePointsUnitDetailsDos.isEmpty()){
+            log.error("无法获取单位积分信息");
+            return R.error("参数异常");
+        }
+
+        Map<String, List<QhsePointsUnitDetailsDo>> details = qhsePointsUnitDetailsDos.stream().collect(Collectors.groupingBy(
+                QhsePointsUnitDetailsDo::getPointsunitid
+        ));
+
+        //获取要更新的主表信息
+        List<QhsePointsUnitRecordDo> mainUpdates =new ArrayList<>();
+        QhsePointsUnitRecordDo qhsePointsUnitRecordDo =null;
+
+        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)) {
+                if (qhsePointsUnitDetailsDo.getPoints()>0){
+                    qhsePointsUnitRecordDo.setBonuspoints(qhsePointsUnitDetailsDo.getPoints() - qhsePointsUnitRecordDo.getBonuspoints());
+                }else{
+                    qhsePointsUnitRecordDo.setDeductionpoints(qhsePointsUnitDetailsDo.getPoints() - qhsePointsUnitRecordDo.getDeductionpoints());
+                }
+                qhsePointsUnitRecordDo.setCumulativescore(qhsePointsUnitRecordDo.getCumulativescore() + qhsePointsUnitDetailsDo.getPoints());
+            }
+
+            mainUpdates.add(qhsePointsUnitRecordDo);
+        }
+
+        //更新主表
+        SysUserVo currentUser = QHSEUtils.getCurrentUser();
+        qhsePointsUnitRecordDao.updateScoreInfo(mainUpdates,currentUser);
+        // 用户扣分记录删除
+        qhsePointsUnitDetailsService.removeByIds(ids);
+
+        return R.ok();
+    }
 }
 

+ 60 - 11
qhse-common/src/main/resources/mybatis/system/QhsePointsUnitRecordDao.xml

@@ -22,25 +22,74 @@
     <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}
+                 <set>
+                MODIFYUSERID= #{currentUser.id},
+                MODIFYUSERNAME=#{currentUser.name},
+                MODIFYDATE=SYSDATE,
+                BONUSPOINTS = COALESCE(BONUSPOINTS,0) + #{item.bonuspoints},
+                DEDUCTIONPOINTS =  COALESCE(DEDUCTIONPOINTS,0) + #{item.deductionpoints},
+                CUMULATIVESCORE = COALESCE(CUMULATIVESCORE,0) + #{item.cumulativescore},
+                STATUS=
+                CASE
+                WHEN  COALESCE(CUMULATIVESCORE,0) + #{item.cumulativescore} >=90 THEN '1'
+                WHEN  COALESCE(CUMULATIVESCORE,0) + #{item.cumulativescore} &lt; 80 THEN '3'
+                ELSE '2'
+                END
+                     , DEDUCTIONDESCRIPTION=(
+                     <include refid="getDeductDescription">
+                         <property name="mainId" value="${item.id}"/>
+                         <property name="tableName" value="qhse_points_unit_details"/>
+                     </include>
+                     )
+                    ,
+                     BONUSDESCRIPTION= (
+                     <include refid="getBonusDescription">
+                         <property name="mainId" value="${item.id}"/>
+                         <property name="tableName" value="qhse_points_unit_details"/>
+                     </include>
+                     )
+                 </set>
+                <where>
+                    id = #{item.id,jdbcType=VARCHAR}
+                </where>
             </foreach>
     </update>
 
+
+
+    <sql id="getBonusDescription">
+        SELECT LISTAGG(TEXT, ' ') WITHIN GROUP (ORDER BY NUM)
+        FROM (SELECT CONCAT(POINTS, ':', DESCRIPTION)        AS TEXT,
+                     POINTSUNITID,
+                     ROW_NUMBER() OVER (ORDER BY CREATEDATE) AS NUM
+              FROM ${tableName}
+              WHERE DELETED = '0'
+                and POINTSUNITID = '${mainId}'
+                AND POINTS > 0) a
+        GROUP BY POINTSUNITID
+    </sql>
+    <sql id="getDeductDescription">
+        SELECT LISTAGG(TEXT, ' ') WITHIN GROUP (ORDER BY NUM)
+        FROM (SELECT CONCAT(POINTS, ':', DESCRIPTION) AS TEXT ,
+                     POINTSUNITID,
+                     ROW_NUMBER() OVER (ORDER BY CREATEDATE)       AS NUM
+              FROM ${tableName}
+              WHERE DELETED = '0'
+                and POINTSUNITID = '${mainId}'
+                AND POINTS &lt; 0) a
+        GROUP BY POINTSUNITID
+    </sql>
+
     <update id="addUnitFiles">
+
         UPDATE qhse_points_unit_details
         SET ATTACHMENT = CASE
-        WHEN ATTACHMENT IS NULL OR ATTACHMENT = '' THEN #{attachment}
-        ELSE CONCAT(ATTACHMENT, CONCAT('^_^', #{attachment}))
+        WHEN COALESCE(TRIM(ATTACHMENT), '') = ''  THEN #{attachment}
+        ELSE ATTACHMENT || '^_^' || #{attachment}
         END
         WHERE ID IN
-        <foreach collection="list" item="id" separator=",">
-            (#{id})
+        <foreach collection="list" item="id" open="(" separator="," close=")">
+            #{id}
         </foreach>
 
     </update>

+ 49 - 41
qhse-entity/src/main/java/com/rongwei/bsentity/domain/QhsePointsUnitDetailsDo.java

@@ -1,5 +1,6 @@
 package com.rongwei.bsentity.domain;
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -13,71 +14,78 @@ import java.util.Date;
 @Data
 @TableName(value = "qhse_points_unit_details")
 public class QhsePointsUnitDetailsDo extends BaseDo implements Serializable {
-
-    @JsonProperty("ID")
+    /**
+     * 主键
+     */
+    @TableId
     private String id;
 
-    @JsonProperty("TENANTID")
+    /**
+     * 租户ID
+     */
     private String tenantid;
 
-    @JsonProperty("ROPTION")
+    /**
+     * 扩展json格式配置
+     */
     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")
+    /**
+     * 规则ID
+     */
     private String ruleid;
 
-    @JsonProperty("RULECODE")
+    /**
+     * 规则编码
+     */
     private String rulecode;
 
-    @JsonProperty("RULEDESCRIPTION")
+    /**
+     * 规则说明
+     */
     private String ruledescription;
 
-    @JsonProperty("ATTACHMENT")
+    /**
+     * 附件
+     */
     private String attachment;
 
-    @JsonProperty("POINTSUNITID")
+    /**
+     * 积分单位ID
+     */
     private String pointsunitid;
 
-    @JsonProperty("STATE")
+
+    /**
+     *是否已生成对应的记录信息
+     */
     private String state;
 
+
+    /**
+     *来源(默认 人工导入 1)
+     */
+    private String source;
+
+
 }

+ 26 - 1
qhse-entity/src/main/java/com/rongwei/bsentity/domain/QhsePointsUnitRecordDo.java

@@ -1,10 +1,13 @@
 package com.rongwei.bsentity.domain;
 
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.rongwei.rwcommon.base.BaseDo;
 import lombok.Data;
 
+import java.util.Date;
+
 /**
  * 单位积分清单(QhsePointsUnitRecord)表实体类
  *
@@ -13,52 +16,74 @@ import lombok.Data;
  */
 @SuppressWarnings("serial")
 @Data
-@TableName(value = "qhse_points_unit_record")
+@TableName(value ="qhse_points_unit_record")
 
 public class QhsePointsUnitRecordDo extends BaseDo {
     /**
      * 主键
      */
+    @TableId
     private String id;
+
     /**
      * 租户ID
      */
     private String tenantid;
+
     /**
      * 扩展json格式配置
      */
     private String roption;
+
+    /**
+     * 修改人名称
+     */
+    private String modifyusername;
+
     /**
      * 积分编号
      */
     private String pointscode;
+
     /**
      * 积分年度
      */
     private Integer pointsyear;
+
     /**
      * 分包商ID
      */
     private String subcontractorid;
+
     /**
      * 加分
      */
     private Integer bonuspoints;
+
     /**
      * 加分描述
      */
     private String bonusdescription;
+
     /**
      * 扣分
      */
     private Integer deductionpoints;
+
     /**
      * 扣分描述
      */
     private String deductiondescription;
+
     /**
      * 累计分值
      */
     private Integer cumulativescore;
+
+    /**
+     * 预警状态
+     */
+    private String status;
+
 }
 

+ 44 - 28
qhse-entity/src/main/java/com/rongwei/bsentity/domain/QhseSubcontractorOutsourcingDo.java

@@ -1,10 +1,13 @@
 package com.rongwei.bsentity.domain;
 
 
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.rongwei.rwcommon.base.BaseDo;
 import lombok.Data;
 
+import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -15,44 +18,57 @@ import java.util.Date;
  */
 @Data
 @TableName(value ="qhse_subcontractor_outsourcing")
-public class QhseSubcontractorOutsourcingDo extends Model<QhseSubcontractorOutsourcingDo> {
-//主键
+public class QhseSubcontractorOutsourcingDo extends BaseDo implements Serializable {
+    /**
+     * 主键
+     */
+    @TableId
     private String id;
-//租户ID
+
+    /**
+     * 租户ID
+     */
     private String tenantid;
-//扩展json格式配置
-    private String roption;
-//是否删除Y/N
-    private String deleted;
-//备注
-    private String remark;
-//创建时间
-    private Date createdate;
-//创建用户ID
-    private String createuserid;
-//修改日期
-    private Date modifydate;
-//修改用户ID
-    private String modifyuserid;
-//创建人名称
-    private String createusername;
-//修改人名称
-    private String modifyusername;
-//单位名称
+
+    /**
+     * 单位名称
+     */
     private String unitname;
-//单位编号
+
+    /**
+     * 单位编号
+     */
     private String unitcode;
-//分包商/合作方
+
+    /**
+     * 分包商/合作方
+     */
     private String subcontractorpartner;
-//状态
+
+    /**
+     * 状态
+     */
     private String status;
-//单位类型(分包商/外协)
+
+    /**
+     * 单位类型(分包商/外协)
+     */
     private String unittype;
-//部门ID
+
+    /**
+     * 部门ID
+     */
     private String departmentid;
-//所属部门
+
+    /**
+     * 所属部门
+     */
     private String departmentname;
 
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
 
 }
 

+ 8 - 2
qhse-server/src/main/java/com/rongwei/controller/PointController.java

@@ -98,6 +98,14 @@ public class PointController {
         return qhsePointsUnitRecordService.calUnitScore(ids);
     }
 
+
+    @PostMapping("/unit/delUnitScore")
+    public R delUnitScore(@RequestBody List<String> ids) {
+        log.info("删除扣分记录 {}",ids.toString());
+        return qhsePointsUnitRecordService.delUnitScore(ids);
+    }
+
+
     /**
      * 单位加扣分附件补录
      * @return
@@ -108,6 +116,4 @@ public class PointController {
         return qhsePointsUnitRecordService.addUnitFiles(qhsePointsUnitFileDto);
     }
 
-
-
 }