Răsfoiți Sursa

司机评分初始化、企业修改司机评分、重置司机评分

tangyishan 1 lună în urmă
părinte
comite
cae9dbf7aa
16 a modificat fișierele cu 896 adăugiri și 22 ștergeri
  1. 1 1
      sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/feign/LogisticsScoreFeignService.java
  2. 10 0
      sckw-modules-api/sckw-fleet-api/pom.xml
  3. 17 0
      sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/feign/DriverScoreFeignService.java
  4. 47 0
      sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/model/dto/UpdateDriverScoreDto.java
  5. 30 0
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/config/FeignConfig.java
  6. 35 13
      sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/impl/KwcContractLogisticsScoreServiceImpl.java
  7. 30 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/config/FeignConfig.java
  8. 33 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfDriverScoreController.java
  9. 4 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfDriverMapper.java
  10. 62 4
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfDriverScoreDetailMapper.java
  11. 63 4
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfDriverScoreMapper.java
  12. 25 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/DriverScoreDto.java
  13. 264 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverScoreService.java
  14. 10 0
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverMapper.xml
  15. 129 0
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverScoreDetailMapper.xml
  16. 136 0
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverScoreMapper.xml

+ 1 - 1
sckw-modules-api/sckw-contract-api/src/main/java/com/sckw/contract/api/feign/LogisticsScoreFeignService.java

@@ -6,7 +6,7 @@ import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
-@FeignClient(name = "sckw-contract",path = "/api/logisticsScore")
+@FeignClient(name = "sckw-ng-contract",path = "/api/logisticsScore")
 public interface LogisticsScoreFeignService {
     /**
      * 系统修改物流企业评分

+ 10 - 0
sckw-modules-api/sckw-fleet-api/pom.xml

@@ -21,5 +21,15 @@
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-openfeign-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-common-core</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 17 - 0
sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/feign/DriverScoreFeignService.java

@@ -0,0 +1,17 @@
+package com.sckw.fleet.api.feign;
+
+import com.sckw.core.web.response.BaseResult;
+import com.sckw.fleet.api.model.dto.UpdateDriverScoreDto;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(name = "sckw-ng-fleet",path = "/driverScore")
+public interface DriverScoreFeignService {
+    /**
+     * 更新司机评分
+     */
+    @PostMapping("/update")
+    public BaseResult<Boolean> update(@Validated @RequestBody UpdateDriverScoreDto updateDriverScoreDto);
+}

+ 47 - 0
sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/model/dto/UpdateDriverScoreDto.java

@@ -0,0 +1,47 @@
+package com.sckw.fleet.api.model.dto;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+
+/**
+ * @Author: tangyishan
+ * @CreateTime: 2025-12-11  14:46
+ * @Description: 更新司机评分参数
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class UpdateDriverScoreDto {
+
+    /** 供应商企业id */
+    @NotNull
+    private Long providerEntId;
+
+    /** 物流企业id */
+    @NotNull
+    private Long logisticsEntId;
+
+    /** 供应商企业名称 */
+    @NotBlank
+    private String providerEntName;
+
+    /** 变动评分 */
+    private BigDecimal scoreChange;
+
+    /** 物流企业评分 */
+    @NotNull
+    private BigDecimal logisticsEntScore;
+
+    /** 变动原因 */
+    @NotBlank
+    private String action;
+
+    /** 操作类型 1-初始化 2-修改评分 3-重置评分*/
+    @NotNull
+    private Integer operatorType;
+}

+ 30 - 0
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/config/FeignConfig.java

@@ -0,0 +1,30 @@
+package com.sckw.contract.config;
+
+
+import com.sckw.core.model.constant.Global;
+import feign.RequestInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+
+/**
+ * @Author: tangyishan
+ * @CreateTime: 2025-12-12  16:10
+ * @Description: feign远程调用配置
+ */
+@Configuration
+public class FeignConfig {
+
+    @Bean("requestInterceptor")
+    public RequestInterceptor requestInterceptor() {
+        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        jakarta.servlet.http.HttpServletRequest request = attributes.getRequest();
+        String userInfoStrEncode = request.getHeader(Global.USER_INFO_STR_ENCODE);
+        String entInfoStrEncode = request.getHeader(Global.ENT_INFO_STR_ENCODE);
+        return requestTemplate -> requestTemplate.header(Global.USER_INFO_STR_ENCODE, userInfoStrEncode)
+                .header(Global.ENT_INFO_STR_ENCODE, entInfoStrEncode);
+    }
+
+}

+ 35 - 13
sckw-modules/sckw-contract/src/main/java/com/sckw/contract/service/impl/KwcContractLogisticsScoreServiceImpl.java

@@ -30,6 +30,8 @@ import com.sckw.core.utils.IdWorker;
 import com.sckw.core.utils.PageUtils;
 import com.sckw.core.web.config.CustomConfig;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.fleet.api.feign.DriverScoreFeignService;
+import com.sckw.fleet.api.model.dto.UpdateDriverScoreDto;
 import com.sckw.redis.constant.RedisConstant;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
@@ -59,6 +61,8 @@ public class KwcContractLogisticsScoreServiceImpl implements IKwcContractLogisti
     @Autowired
     private KwcContractLogisticsScoreDetailMapper kwcContractLogisticsScoreDetailMapper;
     @Autowired
+    private DriverScoreFeignService driverScoreFeignService;
+    @Autowired
     private CustomConfig customConfig;
 
     /**
@@ -247,11 +251,16 @@ public class KwcContractLogisticsScoreServiceImpl implements IKwcContractLogisti
                 detailDto.setStatus(NumberConstant.ONE);
                 initLogisticsScoreDetail(detailDto);
 
-                //todo tys初始化司机评分,需要传参供应企业id,物流企业id,评分变动,变动原因
-                logisticsScore.getProviderEntId();
-                logisticsScore.getLogisticsEntId();
-                logisticsScore.getScore();
-                detailDto.getAction();
+                //初始化司机评分,需要传参供应企业id,物流企业id,供应企业名称,评分变动,当前物流企业评分,变动原因
+                UpdateDriverScoreDto updateDriverScoreDto = new UpdateDriverScoreDto();
+                updateDriverScoreDto.setProviderEntId(logisticsScore.getProviderEntId());
+                updateDriverScoreDto.setLogisticsEntId(logisticsScore.getLogisticsEntId());
+                updateDriverScoreDto.setProviderEntName(LoginUserHolder.getEntName());
+                updateDriverScoreDto.setScoreChange(logisticsScore.getScore());
+                updateDriverScoreDto.setLogisticsEntScore(logisticsScore.getScore());
+                updateDriverScoreDto.setAction(detailDto.getAction());
+                updateDriverScoreDto.setOperatorType(1);
+                driverScoreFeignService.update(updateDriverScoreDto);
             }
         } finally {
             RedissonUtils.unlock(lockKey);
@@ -310,13 +319,16 @@ public class KwcContractLogisticsScoreServiceImpl implements IKwcContractLogisti
                     logisticsScoreDetail.setUpdateBy(LoginUserHolder.getUserId());
                     logisticsScoreDetail.setUpdateTime(new Date());
                     kwcContractLogisticsScoreDetailMapper.updateKwcContractLogisticsScoreDetail(logisticsScoreDetail);
-                    // todo tys更新司机评分 需要传参供应企业id,物流企业id,评分变动,变动原因
-                    logisticsScore.getProviderEntId();
-                    logisticsScore.getLogisticsEntId();
-                    logisticsScoreDetail.getScoreChange();
-                    logisticsScoreDetail.getAction();
-
-
+                    //修改司机评分,需要传参供应企业id,物流企业id,供应企业名称,评分变动,当前物流企业评分,变动原因
+                    UpdateDriverScoreDto updateDriverScoreDto = new UpdateDriverScoreDto();
+                    updateDriverScoreDto.setProviderEntId(logisticsScore.getProviderEntId());
+                    updateDriverScoreDto.setLogisticsEntId(logisticsScore.getLogisticsEntId());
+                    updateDriverScoreDto.setProviderEntName(LoginUserHolder.getEntName());
+                    updateDriverScoreDto.setScoreChange(logisticsScoreDetail.getScoreChange());
+                    updateDriverScoreDto.setLogisticsEntScore(logisticsScore.getScore());
+                    updateDriverScoreDto.setAction(logisticsScoreDetail.getAction());
+                    updateDriverScoreDto.setOperatorType(2);
+                    driverScoreFeignService.update(updateDriverScoreDto);
                 }
             }else{
                 throw new BusinessException("该评分已审批完成");
@@ -423,7 +435,17 @@ public class KwcContractLogisticsScoreServiceImpl implements IKwcContractLogisti
             kwcContractLogisticsScoreDetailMapper.insertKwcContractLogisticsScoreDetail(resetLogisticsScoreDetail);
             //4.清除待审核评分
             kwcContractLogisticsScoreDetailMapper.deleteKwcContractLogisticsScoreDetailByScoreId(logisticsScore.getId(),NumberConstant.ZERO);
-            //4.todo tys重置司机评分需要传参供应商企业id,物流企业id,重置评分,原因
+            //重置司机评分,需要传参供应企业id,物流企业id,供应企业名称,评分变动,当前物流企业评分,变动原因
+            UpdateDriverScoreDto updateDriverScoreDto = new UpdateDriverScoreDto();
+            updateDriverScoreDto.setProviderEntId(logisticsScore.getProviderEntId());
+            updateDriverScoreDto.setLogisticsEntId(logisticsScore.getLogisticsEntId());
+            updateDriverScoreDto.setProviderEntName(LoginUserHolder.getEntName());
+            updateDriverScoreDto.setScoreChange(resetLogisticsScoreDetail.getScoreChange());
+            updateDriverScoreDto.setLogisticsEntScore(logisticsScore.getScore());
+            updateDriverScoreDto.setAction(resetLogisticsScoreDetail.getAction());
+            updateDriverScoreDto.setOperatorType(3);
+            driverScoreFeignService.update(updateDriverScoreDto);
+
 
         } finally {
             RedissonUtils.unlock(lockKey);

+ 30 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/config/FeignConfig.java

@@ -0,0 +1,30 @@
+package com.sckw.fleet.config;
+
+
+import com.sckw.core.model.constant.Global;
+import feign.RequestInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+
+/**
+ * @Author: tangyishan
+ * @CreateTime: 2025-12-12  16:10
+ * @Description: feign远程调用配置
+ */
+@Configuration
+public class FeignConfig {
+
+    @Bean("requestInterceptor")
+    public RequestInterceptor requestInterceptor() {
+        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+        jakarta.servlet.http.HttpServletRequest request = attributes.getRequest();
+        String userInfoStrEncode = request.getHeader(Global.USER_INFO_STR_ENCODE);
+        String entInfoStrEncode = request.getHeader(Global.ENT_INFO_STR_ENCODE);
+        return requestTemplate -> requestTemplate.header(Global.USER_INFO_STR_ENCODE, userInfoStrEncode)
+                .header(Global.ENT_INFO_STR_ENCODE, entInfoStrEncode);
+    }
+
+}

+ 33 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfDriverScoreController.java

@@ -0,0 +1,33 @@
+package com.sckw.fleet.controller;
+
+import com.sckw.core.web.response.BaseResult;
+import com.sckw.fleet.api.model.dto.UpdateDriverScoreDto;
+import com.sckw.fleet.service.KwfDriverScoreService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+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;
+
+/**
+ * @Author: tangyishan
+ * @CreateTime: 2025-12-11  11:24
+ * @Description: 司机评分
+ */
+@RestController
+@RequestMapping("/driverScore")
+public class KwfDriverScoreController {
+
+    @Autowired
+    private KwfDriverScoreService kwfDriverScoreService;
+
+    /**
+     * 更新司机评分
+     */
+    @PostMapping("/update")
+    public BaseResult<Boolean> update(@Validated @RequestBody UpdateDriverScoreDto updateDriverScoreDto) {
+        kwfDriverScoreService.update(updateDriverScoreDto);
+        return BaseResult.success();
+    }
+}

+ 4 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfDriverMapper.java

@@ -55,6 +55,10 @@ public interface KwfDriverMapper extends BaseMapper<KwfDriver> {
      */
     List<Map<String, Object>> findList(Map<String, Object> params);
 
+
+
+    List<KwfDriver> findListByEntId(Long entId);
+
     /**
      * 查询
      * @param params

+ 62 - 4
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfDriverScoreDetailMapper.java

@@ -4,12 +4,70 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.fleet.model.KwfDriverScoreDetail;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
- * @Author: tangyishan
- * @CreateTime: 2025-12-11  18:06
- * @Description: 司机评分明细Mapper接口
+ * 司机评分明细Mapper接口
+ * 
+ * @author tangyishan
+ * @date 2025-12-11
  */
 @Mapper
-public interface KwfDriverScoreDetailMapper extends BaseMapper<KwfDriverScoreDetail> {
+public interface KwfDriverScoreDetailMapper extends BaseMapper<KwfDriverScoreDetail>
+{
+    /**
+     * 查询司机评分明细
+     * 
+     * @param id 司机评分明细主键
+     * @return 司机评分明细
+     */
+    public KwfDriverScoreDetail selectKwfDriverScoreDetailById(Long id);
+
+    /**
+     * 查询司机评分明细列表
+     * 
+     * @param kwfDriverScoreDetail 司机评分明细
+     * @return 司机评分明细集合
+     */
+    public List<KwfDriverScoreDetail> selectKwfDriverScoreDetailList(KwfDriverScoreDetail kwfDriverScoreDetail);
+
+    /**
+     * 新增司机评分明细
+     * 
+     * @param kwfDriverScoreDetail 司机评分明细
+     * @return 结果
+     */
+    public int insertKwfDriverScoreDetail(KwfDriverScoreDetail kwfDriverScoreDetail);
+
+    /**
+     * 批量新增司机评分明细
+     *
+     * @param driverScoreDetails 司机评分明细
+     * @return 结果
+     */
+    public int insertBatch(List<KwfDriverScoreDetail> driverScoreDetails);
+
+    /**
+     * 修改司机评分明细
+     * 
+     * @param kwfDriverScoreDetail 司机评分明细
+     * @return 结果
+     */
+    public int updateKwfDriverScoreDetail(KwfDriverScoreDetail kwfDriverScoreDetail);
+
+    /**
+     * 删除司机评分明细
+     * 
+     * @param id 司机评分明细主键
+     * @return 结果
+     */
+    public int deleteKwfDriverScoreDetailById(Long id);
 
+    /**
+     * 批量删除司机评分明细
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteKwfDriverScoreDetailByIds(Long[] ids);
 }

+ 63 - 4
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dao/KwfDriverScoreMapper.java

@@ -4,11 +4,70 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.fleet.model.KwfDriverScore;
 import org.apache.ibatis.annotations.Mapper;
 
+import java.util.List;
+
 /**
- * @Author: tangyishan
- * @CreateTime: 2025-12-11  18:06
- * @Description: 司机评分Mapper接口
+ * 司机评分Mapper接口
+ * 
+ * @author tangyishan
+ * @date 2025-12-11
  */
 @Mapper
-public interface KwfDriverScoreMapper extends BaseMapper<KwfDriverScore> {
+public interface KwfDriverScoreMapper extends BaseMapper<KwfDriverScore>
+{
+    /**
+     * 查询司机评分
+     * 
+     * @param id 司机评分主键
+     * @return 司机评分
+     */
+    public KwfDriverScore selectKwfDriverScoreById(Long id);
+
+    /**
+     * 查询司机评分列表
+     * 
+     * @param kwfDriverScore 司机评分
+     * @return 司机评分集合
+     */
+    public List<KwfDriverScore> selectKwfDriverScoreList(KwfDriverScore kwfDriverScore);
+
+    /**
+     * 新增司机评分
+     * 
+     * @param KwfDriverScore 司机评分
+     * @return 结果
+     */
+    public int insertKwfDriverScore(List<KwfDriverScore> KwfDriverScore);
+
+    /**
+     *批量新增司机评分
+     *
+     * @param driverScores 司机评分
+     * @return 结果
+     */
+    public int insertBatch(List<KwfDriverScore> driverScores);
+
+    /**
+     * 批量修改司机评分
+     * 
+     * @param driverScores 司机评分
+     * @return 结果
+     */
+    public int updateScoreBatch(List<KwfDriverScore> driverScores);
+
+    /**
+     * 删除司机评分
+     * 
+     * @param id 司机评分主键
+     * @return 结果
+     */
+    public int deleteKwfDriverScoreById(Long id);
+
+    /**
+     * 批量删除司机评分
+     * 
+     * @param ids 需要删除的数据主键集合
+     * @return 结果
+     */
+    public int deleteKwfDriverScoreByIds(Long[] ids);
 }

+ 25 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/DriverScoreDto.java

@@ -0,0 +1,25 @@
+package com.sckw.fleet.model.dto;
+
+import lombok.Data;
+
+
+/**
+ * @Author: tangyishan
+ * @CreateTime: 2025-12-11  20:09
+ * @Description: 司机评分参数
+ */
+@Data
+public class DriverScoreDto {
+    /**
+     * 主键
+     */
+    private Long id;
+    /** 供应商企业id */
+    private Long providerEntId;
+
+    /** 物流企业id */
+    private Long logisticsEntId;
+
+    /** 司机id */
+    private Long driverId;
+}

+ 264 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfDriverScoreService.java

@@ -0,0 +1,264 @@
+package com.sckw.fleet.service;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
+import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.IdWorker;
+import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.fleet.api.model.dto.UpdateDriverScoreDto;
+import com.sckw.fleet.dao.KwfDriverMapper;
+import com.sckw.fleet.dao.KwfDriverScoreDetailMapper;
+import com.sckw.fleet.dao.KwfDriverScoreMapper;
+import com.sckw.fleet.model.KwfDriver;
+import com.sckw.fleet.model.KwfDriverScore;
+import com.sckw.fleet.model.KwfDriverScoreDetail;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Author: tangyishan
+ * @CreateTime: 2025-12-11  15:05
+ * @Description: 司机评分服务
+ */
+@Slf4j
+@Service
+public class KwfDriverScoreService {
+
+    @Autowired
+    private KwfDriverMapper kwfDriverMapper;
+    @Autowired
+    private KwfDriverScoreMapper kwfDriverScoreMapper;
+    @Autowired
+    private KwfDriverScoreDetailMapper kwfDriverScoreDetailMapper;
+
+    /**
+     * 更新司机评分
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void update(UpdateDriverScoreDto updateDriverScoreDto) {
+        log.info("进入KwfDriverScoreService.updateScore()方法,修改司机评分参数为:{}", JSON.toJSONString(updateDriverScoreDto));
+        //查询出当前物流企业的所有司机
+        List<KwfDriver> drivers= kwfDriverMapper.findListByEntId(updateDriverScoreDto.getLogisticsEntId());
+        if(CollectionUtils.isEmpty(drivers)){
+            //无司机,直接返回
+            return;
+        }
+        Map<Long, KwfDriver> driversMap = drivers.stream().collect(Collectors.toMap(KwfDriver::getId, v -> v));
+        //查询指定供应商,指定物流的下的所有司机的评分
+        KwfDriverScore driverScoreDto = new KwfDriverScore();
+        driverScoreDto.setProviderEntId(updateDriverScoreDto.getProviderEntId());
+        driverScoreDto.setLogisticsEntId(updateDriverScoreDto.getLogisticsEntId());
+        List<KwfDriverScore> kwfDriverScores = kwfDriverScoreMapper.selectKwfDriverScoreList(driverScoreDto).stream().filter(v-> driversMap.containsKey(v.getDriverId())).toList();
+        //对未进行评分初始化的司机进行初始化
+        KwfDriverScoreAndDetail kwfDriverScoreAndDetail = initDriverScore(updateDriverScoreDto, driversMap, kwfDriverScores);
+        //将刚初始化的评分记录放入司机评分集合中
+        if(kwfDriverScoreAndDetail != null){
+            kwfDriverScores.addAll(kwfDriverScoreAndDetail.getDriverScores());
+        }
+        //
+        //根据不同的操作类型调用不同的更新方法
+        if(Objects.equals(updateDriverScoreDto.getOperatorType(), 1)){
+//            initDriverScore(updateDriverScoreDto, driversMap,driverScoreMap);
+        }else if(Objects.equals(updateDriverScoreDto.getOperatorType(), 2)){
+            //修改司机评分
+            updateDriverScore(updateDriverScoreDto, driversMap,kwfDriverScores);
+        }else {
+            //重置司机评分
+            resetDriverScore(updateDriverScoreDto, driversMap,kwfDriverScores);
+        }
+    }
+
+
+    /**
+     * 初始化司机评分
+     */
+    private KwfDriverScoreAndDetail initDriverScore(UpdateDriverScoreDto updateDriverScoreDto, Map<Long, KwfDriver> driversMap,List<KwfDriverScore> kwfDriverScores){
+        List<Long> driverIds = kwfDriverScores.stream().map(KwfDriverScore::getDriverId).toList();
+        //找出没有评分记录的司机
+        List<KwfDriver> noScoreDrivers = driversMap.values().stream().filter(driver -> !driverIds.contains(driver.getId())).toList();
+        //所有司机均有评分,继承之前的评分,无需进行初始化
+        if(noScoreDrivers.isEmpty()){
+            return null;
+        }
+        //构建司机评分记录和评分明细集合
+        KwfDriverScoreAndDetail kwfDriverScoreAndDetail = buildDriverScoreInitRecord(updateDriverScoreDto, noScoreDrivers);
+        //批量插入评分记录
+        kwfDriverScoreMapper.insertBatch(kwfDriverScoreAndDetail.getDriverScores());
+        //批量插入评分明细
+        kwfDriverScoreDetailMapper.insertBatch(kwfDriverScoreAndDetail.getDriverScoreDetails());
+        return kwfDriverScoreAndDetail;
+    }
+
+    /**
+     * 修改司机评分
+     */
+    private void updateDriverScore(UpdateDriverScoreDto updateDriverScoreDto, Map<Long, KwfDriver> driversMap,List<KwfDriverScore> kwfDriverScores){
+        //driversMap-物流企业下所有司机,kwfDriverScores-指定供应商,指定物流的所有司机的评分
+        //深拷贝出新的司机评分集合
+        List<KwfDriverScore> kwfDriverScoresNew = JSON.parseObject(JSON.toJSONString(kwfDriverScores), new TypeReference<>() {});
+        //给所有司机进行改分,收集超额的分
+        BigDecimal min = new BigDecimal("0.00");
+        BigDecimal max = new BigDecimal("100.00");
+        BigDecimal exceedScore = new BigDecimal("0.00");
+        for (KwfDriverScore driverScore : kwfDriverScoresNew) {
+            BigDecimal score = driverScore.getScore();
+            BigDecimal resultScore = score.add(updateDriverScoreDto.getScoreChange());
+            if(resultScore.compareTo(min) < 0){
+                exceedScore = exceedScore.add(resultScore);
+                driverScore.setScore(new BigDecimal("0.00"));
+            }else if(resultScore.compareTo(max)>0){
+                exceedScore = exceedScore.add(resultScore.subtract(max));
+                driverScore.setScore(new BigDecimal("100.00"));
+            }else {
+                driverScore.setScore(resultScore);
+            }
+        }
+        //有超额的分,依次分配或扣减分数最低或做高的司机评分到平均分
+        if(exceedScore.compareTo(BigDecimal.ZERO) != 0){
+            //默认按照评分升序排序,如果是减分操作,则按照降序排序
+            Comparator<KwfDriverScore> comparator = Comparator.comparing(KwfDriverScore::getScore);
+            if(updateDriverScoreDto.getScoreChange().compareTo(BigDecimal.ZERO) < 0){
+                comparator = comparator.reversed();
+            }
+            kwfDriverScoresNew = kwfDriverScoresNew.stream().sorted(comparator).toList();
+            //分配超额的分,加分操作依次给最低的司机加到分均分,减分操作依次给最高分的司机减到分均分
+            for (KwfDriverScore kwfDriverScore : kwfDriverScoresNew) {
+                //超额的分已经分配完,退出循环
+                if(exceedScore.compareTo(BigDecimal.ZERO) == 0){
+                    break;
+                }
+                //计算当前司机最大可改的分
+                BigDecimal changeMaxScore = updateDriverScoreDto.getLogisticsEntScore().subtract(kwfDriverScore.getScore());
+                //计算司机实际可改的分
+                BigDecimal changeScore = exceedScore.abs().compareTo(changeMaxScore.abs()) < 0 ? exceedScore : changeMaxScore;
+                kwfDriverScore.setScore(kwfDriverScore.getScore().add(changeScore));
+                //计算剩余可分配的分
+                exceedScore = exceedScore.subtract(changeScore);
+            }
+        }
+        //构建司机评分记录和评分明细集合
+        KwfDriverScoreAndDetail kwfDriverScoreAndDetail = buildDriverScoreUpdateRecord(updateDriverScoreDto, driversMap, kwfDriverScores, kwfDriverScoresNew);
+        //批量更新评分记录
+        kwfDriverScoreMapper.updateScoreBatch(kwfDriverScoreAndDetail.getDriverScores());
+        //批量插入评分明细
+        kwfDriverScoreDetailMapper.insertBatch(kwfDriverScoreAndDetail.getDriverScoreDetails());
+    }
+
+    /**
+     * 重置司机评分
+     */
+    private void resetDriverScore(UpdateDriverScoreDto updateDriverScoreDto, Map<Long, KwfDriver> driversMap,List<KwfDriverScore> kwfDriverScores){
+        //driversMap-物流企业下所有司机,kwfDriverScores-指定供应商,指定物流的所有司机的评分
+        //构建司机评分记录和评分明细集合
+        KwfDriverScoreAndDetail kwfDriverScoreAndDetail = buildDriverScoreResetRecord(updateDriverScoreDto, driversMap, kwfDriverScores);
+        //批量更新评分记录
+        kwfDriverScoreMapper.updateScoreBatch(kwfDriverScoreAndDetail.getDriverScores());
+        //批量插入评分明细
+        kwfDriverScoreDetailMapper.insertBatch(kwfDriverScoreAndDetail.getDriverScoreDetails());
+    }
+
+    private KwfDriverScoreAndDetail buildDriverScoreInitRecord(UpdateDriverScoreDto updateDriverScoreDto,List<KwfDriver> drivers){
+        Date now = new Date();
+        //构建司机评分记录集合
+        List<KwfDriverScore> driverScores = new ArrayList<>();
+        List<KwfDriverScoreDetail> driverScoreDetails = new ArrayList<>();
+        IdWorker idWorker = new IdWorker(1L);
+        for (KwfDriver driver : drivers) {
+            long scoreId = idWorker.nextId();
+            //构建司机评分记录
+            KwfDriverScore driverScore = new KwfDriverScore();
+            driverScore.setId(scoreId);
+            driverScore.setProviderEntId(updateDriverScoreDto.getProviderEntId());
+            driverScore.setLogisticsEntId(updateDriverScoreDto.getLogisticsEntId());
+            driverScore.setDriverId(driver.getId());
+            driverScore.setProviderEntName(updateDriverScoreDto.getProviderEntName());
+            driverScore.setScore(updateDriverScoreDto.getLogisticsEntScore());
+            driverScore.setCreateBy(LoginUserHolder.getUserId());
+            driverScore.setCreateTime(now);
+            driverScore.setUpdateBy(LoginUserHolder.getUserId());
+            driverScore.setUpdateTime(now);
+            driverScores.add(driverScore);
+            //构建司机评分明细
+            KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto, driverScore, driver, new BigDecimal("0.00"));
+            driverScoreDetails.add(scoreDetail);
+        }
+
+        return new KwfDriverScoreAndDetail(driverScores, driverScoreDetails);
+    }
+
+    private KwfDriverScoreAndDetail buildDriverScoreUpdateRecord(UpdateDriverScoreDto updateDriverScoreDto,Map<Long, KwfDriver> driversMap,List<KwfDriverScore> kwfDriverScores,List<KwfDriverScore> kwfDriverScoresNew){
+        //原评分记录集合
+        Map<Long, KwfDriverScore> originDriverScoreMap = kwfDriverScores.stream().collect(Collectors.toMap(KwfDriverScore::getId, v -> v));
+        //构建司机评分记录集合
+        List<KwfDriverScoreDetail> driverScoreDetails = new ArrayList<>();
+        Date now = new Date();
+        for (KwfDriverScore driverScore : kwfDriverScoresNew) {
+            //更新评分记录更新信息
+            driverScore.setUpdateBy(LoginUserHolder.getUserId());
+            driverScore.setUpdateTime(now);
+            //构建司机评分明细信息
+            KwfDriverScore originDriverScore = originDriverScoreMap.get(driverScore.getDriverId());
+            KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto, driverScore, driversMap.get(driverScore.getDriverId()), originDriverScore.getScore());
+            driverScoreDetails.add(scoreDetail);
+        }
+
+        return new KwfDriverScoreAndDetail(kwfDriverScoresNew, driverScoreDetails);
+    }
+
+    private KwfDriverScoreAndDetail buildDriverScoreResetRecord(UpdateDriverScoreDto updateDriverScoreDto,Map<Long, KwfDriver> driversMap,List<KwfDriverScore> kwfDriverScores){
+        //构建司机评分记录集合
+        List<KwfDriverScoreDetail> driverScoreDetails = new ArrayList<>();
+        for (KwfDriverScore driverScore : kwfDriverScores) {
+            BigDecimal originDriverScore = driverScore.getScore();
+            //更新评分记录更新信息
+            driverScore.setScore(updateDriverScoreDto.getLogisticsEntScore());
+            driverScore.setUpdateBy(LoginUserHolder.getUserId());
+            driverScore.setUpdateTime(new Date());
+            //构建司机评分明细信息
+            KwfDriverScoreDetail scoreDetail = buildDriverScoreDetail(updateDriverScoreDto, driverScore, driversMap.get(driverScore.getDriverId()), originDriverScore);
+            driverScoreDetails.add(scoreDetail);
+        }
+
+        return new KwfDriverScoreAndDetail(kwfDriverScores, driverScoreDetails);
+    }
+
+
+    private KwfDriverScoreDetail buildDriverScoreDetail(UpdateDriverScoreDto updateDriverScoreDto,KwfDriverScore driverScore,KwfDriver driver,BigDecimal originDriverScore){
+        IdWorker idWorker = new IdWorker(1L);
+        Date now = new Date();
+        //构建司机评分明细信息
+        KwfDriverScoreDetail scoreDetail = new KwfDriverScoreDetail();
+        scoreDetail.setId(idWorker.nextId());
+        scoreDetail.setScoreId(driverScore.getId());
+        if(driver != null){
+            scoreDetail.setDriverId(driver.getId());
+            scoreDetail.setDriverName(driver.getName());
+        }
+        scoreDetail.setAction(updateDriverScoreDto.getAction());
+        BigDecimal scoreChange = driverScore.getScore().subtract(originDriverScore);
+        scoreDetail.setScoreChange(scoreChange);
+        scoreDetail.setScore(driverScore.getScore());
+        scoreDetail.setCreateBy(LoginUserHolder.getUserId());
+        scoreDetail.setCreateTime(now);
+        scoreDetail.setUpdateBy(LoginUserHolder.getUserId());
+        scoreDetail.setUpdateTime(now);
+        return scoreDetail;
+    }
+
+
+    @Data
+    @AllArgsConstructor
+    public static class KwfDriverScoreAndDetail{
+        List<KwfDriverScore> driverScores;
+        List<KwfDriverScoreDetail> driverScoreDetails;
+    }
+
+}

+ 10 - 0
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverMapper.xml

@@ -279,6 +279,16 @@
         ORDER BY dr.create_time desc
     </select>
 
+    <select id="findListByEntId" resultType="com.sckw.fleet.model.KwfDriver" parameterType="java.util.Map" >
+        SELECT
+        dr.id, name, phone, idcard, total_complete totalComplete,
+        total_take totalTake, total_weight totalWeight, dre.ent_id entId
+        from kwf_driver dr
+        inner join kwf_driver_ent dre on dr.id = dre.driver_id
+        where dr.del_flag = 0 and dre.del_flag = 0
+        and dre.ent_id = #{entId, jdbcType=VARCHAR}
+    </select>
+
     <select id="findDriver" resultType="com.sckw.fleet.model.KwfDriver" parameterType="java.util.Map" >
         SELECT
             id, ent_id entId, name, phone, salt, password, idcard, total_complete totalComplete,

+ 129 - 0
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverScoreDetailMapper.xml

@@ -0,0 +1,129 @@
+<?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.sckw.fleet.dao.KwfDriverScoreDetailMapper">
+    
+    <resultMap type="com.sckw.fleet.model.KwfDriverScoreDetail" id="KwfDriverScoreDetailResult">
+        <result property="id"    column="id"    />
+        <result property="scoreId"    column="score_id"    />
+        <result property="driverId"    column="driver_id"    />
+        <result property="driverName"    column="driver_name"    />
+        <result property="action"    column="action"    />
+        <result property="scoreChange"    column="score_change"    />
+        <result property="score"    column="score"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectKwfDriverScoreDetailVo">
+        select id, score_id, driver_id, driver_name, action, score_change, score, create_by, create_time, update_by, update_time from kwf_driver_score_detail
+    </sql>
+
+    <select id="selectKwfDriverScoreDetailList" parameterType="com.sckw.fleet.model.KwfDriverScoreDetail" resultMap="KwfDriverScoreDetailResult">
+        <include refid="selectKwfDriverScoreDetailVo"/>
+        <where>  
+            <if test="scoreId != null "> and score_id = #{scoreId}</if>
+            <if test="driverId != null "> and driver_id = #{driverId}</if>
+            <if test="action != null  and action != ''"> and action = #{action}</if>
+        </where>
+    </select>
+    
+    <select id="selectKwfDriverScoreDetailById" parameterType="Long" resultMap="KwfDriverScoreDetailResult">
+        <include refid="selectKwfDriverScoreDetailVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertKwfDriverScoreDetail" parameterType="com.sckw.fleet.model.KwfDriverScoreDetail">
+        insert into kwf_driver_score_detail
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="scoreId != null">score_id,</if>
+            <if test="driverId != null">driver_id,</if>
+            <if test="driverName != null and driverName != ''">driver_name,</if>
+            <if test="action != null and action != ''">action,</if>
+            <if test="scoreChange != null">score_change,</if>
+            <if test="score != null">score,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="scoreId != null">#{scoreId},</if>
+            <if test="driverId != null">#{driverId},</if>
+            <if test="driverName != null and driverName != ''">#{driverName},</if>
+            <if test="action != null and action != ''">#{action},</if>
+            <if test="scoreChange != null">#{scoreChange},</if>
+            <if test="score != null">#{score},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <insert id="insertBatch">
+        insert into kwf_driver_score_detail
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="scoreId != null">score_id,</if>
+            <if test="driverId != null">driver_id,</if>
+            <if test="driverName != null and driverName != ''">driver_name,</if>
+            <if test="action != null and action != ''">action,</if>
+            <if test="scoreChange != null">score_change,</if>
+            <if test="score != null">score,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+        </trim>
+        values
+        <foreach collection="driverScoreDetails" item="scoreDetail" separator=",">
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="id != null">#{scoreDetail.id},</if>
+                <if test="scoreId != null">#{scoreDetail.scoreId},</if>
+                <if test="driverId != null">#{scoreDetail.driverId},</if>
+                <if test="driverName != null and driverName != ''">#{scoreDetail.driverName},</if>
+                <if test="action != null and action != ''">#{scoreDetail.action},</if>
+                <if test="scoreChange != null">#{scoreDetail.scoreChange},</if>
+                <if test="score != null">#{scoreDetail.score},</if>
+                <if test="createBy != null">#{scoreDetail.createBy},</if>
+                <if test="createTime != null">#{scoreDetail.createTime},</if>
+                <if test="updateBy != null">#{scoreDetail.updateBy},</if>
+                <if test="updateTime != null">#{scoreDetail.updateTime},</if>
+            </trim>
+        </foreach>
+    </insert>
+
+    <update id="updateKwfDriverScoreDetail" parameterType="com.sckw.fleet.model.KwfDriverScoreDetail">
+        update kwf_driver_score_detail
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="scoreId != null">score_id = #{scoreId},</if>
+            <if test="driverId != null">driver_id = #{driverId},</if>
+            <if test="driverName != null and driverName != ''">driver_name = #{driverName},</if>
+            <if test="action != null and action != ''">action = #{action},</if>
+            <if test="scoreChange != null">score_change = #{scoreChange},</if>
+            <if test="score != null">score = #{score},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteKwfDriverScoreDetailById" parameterType="Long">
+        delete from kwf_driver_score_detail where id = #{id}
+    </delete>
+
+    <delete id="deleteKwfDriverScoreDetailByIds" parameterType="String">
+        delete from kwf_driver_score_detail where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 136 - 0
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfDriverScoreMapper.xml

@@ -0,0 +1,136 @@
+<?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.sckw.fleet.dao.KwfDriverScoreMapper">
+    
+    <resultMap type="com.sckw.fleet.model.KwfDriverScore" id="KwfDriverScoreResult">
+        <result property="id"    column="id"    />
+        <result property="providerEntId"    column="provider_ent_id"    />
+        <result property="logisticsEntId"    column="logistics_ent_id"    />
+        <result property="driverId"    column="driver_id"    />
+        <result property="providerEntName"    column="provider_ent_name"    />
+        <result property="score"    column="score"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectKwfDriverScoreVo">
+        select id, provider_ent_id, logistics_ent_id, driver_id, provider_ent_name, score, create_by, create_time, update_by, update_time from kwf_driver_score
+    </sql>
+
+    <select id="selectKwfDriverScoreList" parameterType="com.sckw.fleet.model.KwfDriverScore" resultMap="KwfDriverScoreResult">
+        <include refid="selectKwfDriverScoreVo"/>
+        <where>  
+            <if test="providerEntId != null "> and provider_ent_id = #{providerEntId}</if>
+            <if test="logisticsEntId != null "> and logistics_ent_id = #{logisticsEntId}</if>
+            <if test="driverId != null "> and driver_id = #{driverId}</if>
+        </where>
+    </select>
+    
+    <select id="selectKwfDriverScoreById" parameterType="Long" resultMap="KwfDriverScoreResult">
+        <include refid="selectKwfDriverScoreVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertKwfDriverScore" parameterType="com.sckw.fleet.model.KwfDriverScore">
+        insert into kwf_driver_score
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="providerEntId != null">provider_ent_id,</if>
+            <if test="logisticsEntId != null">logistics_ent_id,</if>
+            <if test="driverId != null">driver_id,</if>
+            <if test="providerEntName != null and providerEntName != ''">provider_ent_name,</if>
+            <if test="score != null">score,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="providerEntId != null">#{providerEntId},</if>
+            <if test="logisticsEntId != null">#{logisticsEntId},</if>
+            <if test="driverId != null">#{driverId},</if>
+            <if test="providerEntName != null and providerEntName != ''">#{providerEntName},</if>
+            <if test="score != null">#{score},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+         </trim>
+    </insert>
+
+    <insert id="insertBatch">
+        insert into kwf_driver_score
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="providerEntId != null">provider_ent_id,</if>
+            <if test="logisticsEntId != null">logistics_ent_id,</if>
+            <if test="driverId != null">driver_id,</if>
+            <if test="providerEntName != null and providerEntName != ''">provider_ent_name,</if>
+            <if test="score != null">score,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+        </trim>
+        values
+        <foreach collection="driverScores" item="driverScore" separator=",">
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="id != null">#{driverScore.id},</if>
+                <if test="providerEntId != null">#{driverScore.providerEntId},</if>
+                <if test="logisticsEntId != null">#{driverScore.logisticsEntId},</if>
+                <if test="driverId != null">#{driverScore.driverId},</if>
+                <if test="providerEntName != null and providerEntName != ''">#{driverScore.providerEntName},</if>
+                <if test="score != null">#{driverScore.score},</if>
+                <if test="createBy != null">#{driverScore.createBy},</if>
+                <if test="createTime != null">#{driverScore.createTime},</if>
+                <if test="updateBy != null">#{driverScore.updateBy},</if>
+                <if test="updateTime != null">#{driverScore.updateTime},</if>
+            </trim>
+        </foreach>
+    </insert>
+
+    <update id="updateKwfDriverScore" parameterType="com.sckw.fleet.model.KwfDriverScore">
+        update kwf_driver_score
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="providerEntId != null">provider_ent_id = #{providerEntId},</if>
+            <if test="logisticsEntId != null">logistics_ent_id = #{logisticsEntId},</if>
+            <if test="driverId != null">driver_id = #{driverId},</if>
+            <if test="providerEntName != null and providerEntName != ''">provider_ent_name = #{providerEntName},</if>
+            <if test="score != null">score = #{score},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+
+    <update id="updateScoreBatch">
+        <foreach collection="driverScores" item="driverScore" separator=";">
+            update kwf_driver_score
+            <set>
+                <if test="score != null">score = #{driverScore.score},</if>
+                <if test="updateBy != null">update_by = #{driverScore.updateBy},</if>
+                <if test="updateTime != null">update_time = #{driverScore.updateTime},</if>
+            </set>
+            WHERE id = #{driverScore.id}
+        </foreach>
+    </update>
+
+    <delete id="deleteKwfDriverScoreById" parameterType="Long">
+        delete from kwf_driver_score where id = #{id}
+    </delete>
+
+    <delete id="deleteKwfDriverScoreByIds" parameterType="String">
+        delete from kwf_driver_score where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>