Quellcode durchsuchen

feature 人员积分记录初始化

xiahan vor 1 Woche
Ursprung
Commit
5228c8e705

+ 14 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/dao/QHSEMapper.java

@@ -0,0 +1,14 @@
+package com.rongwei.bscommon.system.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+import java.util.List;
+
+public interface QHSEMapper<T> extends BaseMapper<T> {
+    /**
+     * 全量插入,等价于insert
+     * @param entityList
+     * @return
+     */
+    int insertBatchSomeColumn(List<T> entityList);
+}

+ 25 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/dao/QhseContractWorkersDao.java

@@ -0,0 +1,25 @@
+package com.rongwei.bscommon.system.dao;
+
+import com.rongwei.bsentity.domain.QhseContractWorkersDo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+* @author libai
+* @description 针对表【qhse_contract_workers(劳务人员表)】的数据库操作Mapper
+* @createDate 2025-09-05 10:47:29
+* @Entity generator.domain.QhseContractWorkers
+*/
+@Mapper
+public interface QhseContractWorkersDao extends BaseMapper<QhseContractWorkersDo> {
+
+  List<QhseContractWorkersDo> getUninitializedData(@Param("year")int year);
+
+}
+
+
+
+

+ 1 - 1
qhse-common/src/main/java/com/rongwei/bscommon/system/dao/QhsePointsRecordUserDao.java

@@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Param;
 * @createDate 2025-09-04 13:34:10
 * @Entity generator.domain.QhsePointsRecordUser
 */
-public interface QhsePointsRecordUserDao extends BaseMapper<QhsePointsRecordUserDo> {
+public interface QhsePointsRecordUserDao extends QHSEMapper<QhsePointsRecordUserDo> {
 
     void  updateCurrentpointAndStatus(@Param("id") String id, @Param("changePoint") int changePoint,
                                       @Param("modifyuserid") String modifyuserid, @Param("modifyusername")String modifyusername);

+ 26 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/injector/BatchSqlInjector.java

@@ -0,0 +1,26 @@
+package com.rongwei.bscommon.system.injector;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.core.injector.AbstractMethod;
+import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
+import com.baomidou.mybatisplus.core.metadata.TableInfo;
+import com.baomidou.mybatisplus.extension.injector.methods.additional.InsertBatchSomeColumn;
+
+import java.util.List;
+
+/**
+ * BatchSqlInjector class
+ *
+ * @author XH
+ * @date 2025/09/05
+ */
+public class BatchSqlInjector extends DefaultSqlInjector {
+    @Override
+    public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
+        List<AbstractMethod> methodList = super.getMethodList(mapperClass);
+        //更新时自动填充的字段,不用插入值
+        methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.UPDATE));
+        return methodList;
+    }
+
+}

+ 18 - 0
qhse-common/src/main/java/com/rongwei/bscommon/system/injector/MybatisPlusConfig.java

@@ -0,0 +1,18 @@
+package com.rongwei.bscommon.system.injector;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * MybatisPlusConfig class
+ *
+ * @author XH
+ * @date 2025/05/09
+ */
+@Configuration
+public class MybatisPlusConfig {
+    @Bean
+    public BatchSqlInjector sqlInjector() {
+        return new BatchSqlInjector();
+    }
+}

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

@@ -12,4 +12,6 @@ import java.util.List;
  */
 public interface PointService {
     R userPointExchange(String id);
+
+    R userPointInitialization();
 }

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

@@ -1,18 +1,26 @@
 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.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.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.R;
 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;
+
 /**
  * PointServiceImpl class
  *
@@ -27,6 +35,8 @@ public class PointServiceImpl implements PointService {
     private QhsePointsRedemptionService qhsePointsRedemptionService;
     @Autowired
     private QhsePointsRecordUserServiceImpl qhsePointsRecordUserService;
+    @Autowired
+    private QhseContractWorkersDao qhseContractWorkersDao;
 
     @Override
     public R userPointExchange(String id) {
@@ -55,4 +65,38 @@ public class PointServiceImpl implements PointService {
         return R.ok();
     }
 
+    @Override
+    public R userPointInitialization() {
+
+        int year = LocalDate.now().getYear();
+        List<QhseContractWorkersDo> uninitializedData = qhseContractWorkersDao.getUninitializedData(year);
+        if (uninitializedData.isEmpty()) {
+            return R.error("当前年度所有人都已生成积分记录");
+        }
+        SysUserVo currentUser = QHSEUtils.getCurrentUser();
+        QhsePointsRecordUserDo qhsePointsRecordUserDo;
+        List<QhsePointsRecordUserDo> saveList= new ArrayList<>(uninitializedData.size());
+        for (QhseContractWorkersDo uninitializedDatum : uninitializedData) {
+            qhsePointsRecordUserDo = new QhsePointsRecordUserDo();
+            QHSEUtils.initModelGeneralParameters(qhsePointsRecordUserDo, currentUser);
+            qhsePointsRecordUserDo.setId(uninitializedDatum.getId());
+            qhsePointsRecordUserDo.setPointyear(year);
+            qhsePointsRecordUserDo.setHoldername(qhsePointsRecordUserDo.getHoldername());
+            qhsePointsRecordUserDo.setHolderid(qhsePointsRecordUserDo.getId());
+            qhsePointsRecordUserDo.setHolderaccount(qhsePointsRecordUserDo.getHolderaccount());
+            qhsePointsRecordUserDo.setCurrentpoint(100);
+            qhsePointsRecordUserDo.setBonuspoints(0);
+            qhsePointsRecordUserDo.setDeductpoints(0);
+            qhsePointsRecordUserDo.setResetnum(0);
+            qhsePointsRecordUserDo.setExchangenum(0);
+            qhsePointsRecordUserDo.setStatus("1");
+            saveList.add(qhsePointsRecordUserDo);
+        }
+        // qhsePointsRecordUserService.saveBatch(saveList,1000);
+        for (List<QhsePointsRecordUserDo> qhsePointsRecordUserDos : Lists.partition(saveList, 500)) {
+            qhsePointsRecordUserService.getBaseMapper().insertBatchSomeColumn(qhsePointsRecordUserDos);
+        }
+        return R.ok("生成成功");
+    }
+
 }

+ 55 - 0
qhse-common/src/main/resources/mybatis/system/QhseContractWorkersDao.xml

@@ -0,0 +1,55 @@
+<?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.QhseContractWorkersDao">
+
+    <resultMap id="BaseResultMap" type="com.rongwei.bsentity.domain.QhseContractWorkersDo">
+        <id property="id" column="ID"/>
+        <result property="tenantid" column="TENANTID"/>
+        <result property="roption" column="ROPTION"/>
+        <result property="deleted" column="DELETED"/>
+        <result property="remark" column="REMARK"/>
+        <result property="createdate" column="CREATEDATE"/>
+        <result property="createuserid" column="CREATEUSERID"/>
+        <result property="modifydate" column="MODIFYDATE"/>
+        <result property="modifyuserid" column="MODIFYUSERID"/>
+        <result property="createusername" column="CREATEUSERNAME"/>
+        <result property="modifyusername" column="MODIFYUSERNAME"/>
+        <result property="worknumber" column="WORKNUMBER"/>
+        <result property="workertype" column="WORKERTYPE"/>
+        <result property="workername" column="WORKERNAME"/>
+        <result property="identitycard" column="IDENTITYCARD"/>
+        <result property="identitycardaddress" column="IDENTITYCARDADDRESS"/>
+        <result property="phonenumber" column="PHONENUMBER"/>
+        <result property="worktype" column="WORKTYPE"/>
+        <result property="workstatus" column="WORKSTATUS"/>
+        <result property="departmentid" column="DEPARTMENTID"/>
+        <result property="departmentname" column="DEPARTMENTNAME"/>
+        <result property="contractorid" column="CONTRACTORID"/>
+        <result property="contractor" column="CONTRACTOR"/>
+        <result property="relatedaccount" column="RELATEDACCOUNT"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ID,TENANTID,ROPTION,DELETED,REMARK,CREATEDATE,
+        CREATEUSERID,MODIFYDATE,MODIFYUSERID,CREATEUSERNAME,MODIFYUSERNAME,
+        WORKNUMBER,WORKERTYPE,WORKERNAME,IDENTITYCARD,IDENTITYCARDADDRESS,
+        PHONENUMBER,WORKTYPE,WORKSTATUS,DEPARTMENTID,DEPARTMENTNAME,
+        CONTRACTORID,CONTRACTOR,RELATEDACCOUNT
+    </sql>
+
+    <select id="getUninitializedData" resultType="com.rongwei.bsentity.domain.QhseContractWorkersDo">
+        SELECT
+        a.*
+        FROM
+        qhse_contract_workers a
+        LEFT JOIN qhse_points_record_user b
+        ON a.ID = b.HOLDERID
+        AND b.POINTYEAR = #{year,jdbcType=INTEGER}
+        <where>
+        a.DELETED = '0'
+        AND b.HOLDERID IS NULL;
+        </where>
+    </select>
+</mapper>

+ 97 - 0
qhse-entity/src/main/java/com/rongwei/bsentity/domain/QhseContractWorkersDo.java

@@ -0,0 +1,97 @@
+package com.rongwei.bsentity.domain;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
+/**
+ * 劳务人员表
+ * @TableName qhse_contract_workers
+ */
+@TableName(value ="qhse_contract_workers")
+@Data
+public class QhseContractWorkersDo extends BaseDo {
+    /**
+     * 主键
+     */
+    @TableId
+    private String id;
+
+    /**
+     * 租户ID
+     */
+    private String tenantid;
+
+    /**
+     * 扩展json格式配置
+     */
+    private String roption;
+
+    /**
+     * 工号
+     */
+    private String worknumber;
+
+    /**
+     * 人员分类
+     */
+    private String workertype;
+
+    /**
+     * 姓名
+     */
+    private String workername;
+
+    /**
+     * 身份证号码
+     */
+    private String identitycard;
+
+    /**
+     * 身份证地址
+     */
+    private String identitycardaddress;
+
+    /**
+     * 联系电话
+     */
+    private String phonenumber;
+
+    /**
+     * 职位工种
+     */
+    private String worktype;
+
+    /**
+     * 在职状态
+     */
+    private String workstatus;
+
+    /**
+     * 部门ID
+     */
+    private String departmentid;
+
+    /**
+     * 所属部门
+     */
+    private String departmentname;
+
+    /**
+     * 分包商/外协ID
+     */
+    private String contractorid;
+
+    /**
+     * 分包商/外协
+     */
+    private String contractor;
+
+    /**
+     * 关联账号
+     */
+    private String relatedaccount;
+}

+ 15 - 1
qhse-server/src/main/java/com/rongwei/BusinessServerApplication.java

@@ -2,20 +2,34 @@ package com.rongwei;
 
 import com.aspose.pdf.FolderFontSource;
 import com.aspose.pdf.FontRepository;
+import com.rongwei.rwcommonconfig.config.interceptor.BaseMetaObjectHandler;
+import com.rongwei.rwcommonconfig.config.interceptor.NormalPlugin;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.FilterType;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
 @EnableAsync
-@SpringBootApplication
 @EnableDiscoveryClient
 @EnableFeignClients
 @MapperScan("com.rongwei.*.*.dao")
 @EnableScheduling
+@SpringBootApplication()
+@ComponentScan(
+        excludeFilters = {
+                @ComponentScan.Filter(
+                        type = FilterType.ASSIGNABLE_TYPE,
+                        classes = NormalPlugin.class
+                ),
+                @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,
+                        classes = BaseMetaObjectHandler.class)
+        }
+)
 public class BusinessServerApplication {
     public static void main(String[] args) {
         SpringApplication.run(BusinessServerApplication.class, args);

+ 16 - 4
qhse-server/src/main/java/com/rongwei/controller/PointController.java

@@ -5,10 +5,7 @@ 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.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.*;
 
 /**
  * PointController class
@@ -34,4 +31,19 @@ public class PointController {
         log.info("开始用户积分兑换");
         return pointService.userPointExchange(id);
     }
+
+
+    /**
+     * 当前年度用户积分初始化
+     *
+     * @param ids 物资出厂参数
+     * @return 结果
+     */
+    @GetMapping("/user/initialization")
+    public R userPointInitialization() {
+        log.info("开始初始化员工年度积分");
+        return pointService.userPointInitialization();
+    }
+
+
 }