浏览代码

fix. 追加规则更改

caozixuan 7 月之前
父节点
当前提交
1447a02224
共有 18 个文件被更改,包括 188 次插入52 次删除
  1. 4 4
      sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticByCrmDto.java
  2. 4 4
      sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticByCustomDto.java
  3. 28 4
      sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticByPersonDto.java
  4. 4 4
      sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticBySopDto.java
  5. 4 4
      sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticBySupplierDto.java
  6. 22 0
      sop-business/src/main/java/com/qmth/sop/business/entity/TBDingStatisticByPerson.java
  7. 3 0
      sop-business/src/main/java/com/qmth/sop/business/mapper/TBDingStatisticByPersonMapper.java
  8. 1 1
      sop-business/src/main/java/com/qmth/sop/business/service/TBDingAddService.java
  9. 38 16
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingAddServiceImpl.java
  10. 1 1
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingServiceImpl.java
  11. 2 2
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingStatisticByCrmServiceImpl.java
  12. 2 2
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingStatisticByCustomServiceImpl.java
  13. 29 6
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingStatisticByPersonServiceImpl.java
  14. 2 2
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingStatisticBySopServiceImpl.java
  15. 3 2
      sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingStatisticBySupplierServiceImpl.java
  16. 9 0
      sop-business/src/main/resources/db/log/caozixuan_update_log.sql
  17. 22 0
      sop-business/src/main/resources/mapper/TBDingStatisticByPersonMapper.xml
  18. 10 0
      sop-common/src/main/java/com/qmth/sop/common/contant/SystemConstant.java

+ 4 - 4
sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticByCrmDto.java

@@ -53,12 +53,12 @@ public class DingStatisticByCrmDto {
     @ApiModelProperty(value = "阅卷周期(天)")
     private Integer markPaperPeriod;
 
-    @ExcelProperty(value = "加人天(天)")
-    @ApiModelProperty(value = "加人天(天)")
+    @ExcelProperty(value = "加人天(天)")
+    @ApiModelProperty(value = "加人天(天)")
     private BigDecimal addDays;
 
-    @ExcelProperty(value = "增加小时(小时)")
-    @ApiModelProperty(value = "增加小时(小时)")
+    @ExcelProperty(value = "追加小时(时)")
+    @ApiModelProperty(value = "追加小时(时)")
     private BigDecimal addHours;
 
     @ExcelProperty(value = "累计人天(天)")

+ 4 - 4
sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticByCustomDto.java

@@ -50,12 +50,12 @@ public class DingStatisticByCustomDto {
     @ApiModelProperty(value = "阅卷周期(天)")
     private Integer markPaperPeriod;
 
-    @ExcelProperty(value = "加人天(天)")
-    @ApiModelProperty(value = "加人天(天)")
+    @ExcelProperty(value = "加人天(天)")
+    @ApiModelProperty(value = "加人天(天)")
     private BigDecimal addDays;
 
-    @ExcelProperty(value = "增加小时(小时)")
-    @ApiModelProperty(value = "增加小时(小时)")
+    @ExcelProperty(value = "追加小时(时)")
+    @ApiModelProperty(value = "追加小时(时)")
     private BigDecimal addHours;
 
     @ExcelProperty(value = "累计人天(天)")

+ 28 - 4
sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticByPersonDto.java

@@ -59,14 +59,22 @@ public class DingStatisticByPersonDto {
     @ApiModelProperty(value = "法定节假日(天)")
     private Integer legalHolidays;
 
-    @ExcelProperty(value = "加人天(天)")
-    @ApiModelProperty(value = "加人天(天)")
+    @ExcelProperty(value = "加人天(天)")
+    @ApiModelProperty(value = "加人天(天)")
     private BigDecimal addDays;
 
-    @ExcelProperty(value = "增加小时(小时)")
-    @ApiModelProperty(value = "增加小时(小时)")
+    @ExcelProperty(value = "追加详情(天)")
+    @ApiModelProperty(value = "追加详情(天)")
+    private String addDaysDetail;
+
+    @ExcelProperty(value = "追加小时(时)")
+    @ApiModelProperty(value = "追加小时(时)")
     private BigDecimal addHours;
 
+    @ExcelProperty(value = "追加详情(时)")
+    @ApiModelProperty(value = "追加详情(时)")
+    private String addHoursDetail;
+
     @ExcelProperty(value = "累计人天(天)")
     @ApiModelProperty(value = "累计人天(天)")
     private BigDecimal workDays;
@@ -159,6 +167,14 @@ public class DingStatisticByPersonDto {
         this.addDays = addDays;
     }
 
+    public String getAddDaysDetail() {
+        return addDaysDetail;
+    }
+
+    public void setAddDaysDetail(String addDaysDetail) {
+        this.addDaysDetail = addDaysDetail;
+    }
+
     public BigDecimal getAddHours() {
         return addHours;
     }
@@ -167,6 +183,14 @@ public class DingStatisticByPersonDto {
         this.addHours = addHours;
     }
 
+    public String getAddHoursDetail() {
+        return addHoursDetail;
+    }
+
+    public void setAddHoursDetail(String addHoursDetail) {
+        this.addHoursDetail = addHoursDetail;
+    }
+
     public BigDecimal getWorkDays() {
         return workDays;
     }

+ 4 - 4
sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticBySopDto.java

@@ -54,12 +54,12 @@ public class DingStatisticBySopDto {
     @ApiModelProperty(value = "阅卷周期(天)")
     private Integer markPaperPeriod;
 
-    @ExcelProperty(value = "加人天(天)")
-    @ApiModelProperty(value = "加人天(天)")
+    @ExcelProperty(value = "加人天(天)")
+    @ApiModelProperty(value = "加人天(天)")
     private BigDecimal addDays;
 
-    @ExcelProperty(value = "增加小时(小时)")
-    @ApiModelProperty(value = "增加小时(小时)")
+    @ExcelProperty(value = "追加小时(时)")
+    @ApiModelProperty(value = "追加小时(时)")
     private BigDecimal addHours;
 
     @ExcelProperty(value = "累计人天(天)")

+ 4 - 4
sop-business/src/main/java/com/qmth/sop/business/bean/dto/DingStatisticBySupplierDto.java

@@ -42,12 +42,12 @@ public class DingStatisticBySupplierDto {
     @ApiModelProperty(value = "法定节假日(天)")
     private Integer legalHolidays;
 
-    @ExcelProperty(value = "加人天(天)")
-    @ApiModelProperty(value = "加人天(天)")
+    @ExcelProperty(value = "加人天(天)")
+    @ApiModelProperty(value = "加人天(天)")
     private BigDecimal addDays;
 
-    @ExcelProperty(value = "增加小时(小时)")
-    @ApiModelProperty(value = "增加小时(小时)")
+    @ExcelProperty(value = "追加小时(时)")
+    @ApiModelProperty(value = "追加小时(时)")
     private BigDecimal addHours;
 
     @ExcelProperty(value = "累计人天(天)")

+ 22 - 0
sop-business/src/main/java/com/qmth/sop/business/entity/TBDingStatisticByPerson.java

@@ -53,9 +53,15 @@ public class TBDingStatisticByPerson extends BaseEntity {
     @ApiModelProperty(value = "增加人天(天)")
     private BigDecimal addDays;
 
+    @ApiModelProperty(value = "追加详情(天)")
+    private String addDaysDetail;
+
     @ApiModelProperty(value = "增加小时(小时)")
     private BigDecimal addHours;
 
+    @ApiModelProperty(value = "追加详情(时)")
+    private String addHoursDetail;
+
     @ApiModelProperty(value = "累计人天(天)")
     private BigDecimal workDays;
 
@@ -145,6 +151,14 @@ public class TBDingStatisticByPerson extends BaseEntity {
         this.addDays = addDays;
     }
 
+    public String getAddDaysDetail() {
+        return addDaysDetail;
+    }
+
+    public void setAddDaysDetail(String addDaysDetail) {
+        this.addDaysDetail = addDaysDetail;
+    }
+
     public BigDecimal getAddHours() {
         return addHours;
     }
@@ -153,6 +167,14 @@ public class TBDingStatisticByPerson extends BaseEntity {
         this.addHours = addHours;
     }
 
+    public String getAddHoursDetail() {
+        return addHoursDetail;
+    }
+
+    public void setAddHoursDetail(String addHoursDetail) {
+        this.addHoursDetail = addHoursDetail;
+    }
+
     public BigDecimal getWorkDays() {
         return workDays;
     }

+ 3 - 0
sop-business/src/main/java/com/qmth/sop/business/mapper/TBDingStatisticByPersonMapper.java

@@ -3,6 +3,7 @@ package com.qmth.sop.business.mapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.sop.business.bean.dto.DingStatisticByPersonDto;
+import com.qmth.sop.business.bean.dto.SopInfoDto;
 import com.qmth.sop.business.bean.result.SysLogResult;
 import com.qmth.sop.business.entity.TBDingStatisticByPerson;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -25,4 +26,6 @@ public interface TBDingStatisticByPersonMapper extends BaseMapper<TBDingStatisti
     IPage<DingStatisticByPersonDto> findStatisticByPersonPage(@Param("iPage") Page<DingStatisticByPersonDto> iPage, @Param("serviceId") Long serviceId);
 
     void truncateTable();
+
+    SopInfoDto findSopInfoBySopNo(@Param("sopNo") String sopNo);
 }

+ 1 - 1
sop-business/src/main/java/com/qmth/sop/business/service/TBDingAddService.java

@@ -25,7 +25,7 @@ public interface TBDingAddService extends IService<TBDingAdd> {
     CanChooseSopResult findCanChooseSopResultList(Long serviceId, Long userId);
 
     /**
-     * 工时增加提交
+     * 工时增加提交(同sop(区协是服务单元)下追加是覆盖,不同sop下追加是新增)
      *
      * @param dingAddParam  工时增加参数
      * @param requestUserId 请求用户id

+ 38 - 16
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingAddServiceImpl.java

@@ -6,16 +6,16 @@ import com.qmth.sop.business.bean.params.DingAddParam;
 import com.qmth.sop.business.bean.result.CanChooseSopResult;
 import com.qmth.sop.business.entity.TBDingAdd;
 import com.qmth.sop.business.mapper.TBDingAddMapper;
-import com.qmth.sop.business.service.TBCrmDetailService;
 import com.qmth.sop.business.service.TBDingAddService;
-import com.qmth.sop.business.service.TBUserArchivesAllocationService;
 import com.qmth.sop.business.service.TBUserArchivesService;
+import com.qmth.sop.common.contant.SystemConstant;
 import com.qmth.sop.common.enums.ExceptionResultEnum;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -32,12 +32,6 @@ public class TBDingAddServiceImpl extends ServiceImpl<TBDingAddMapper, TBDingAdd
     @Resource
     private TBUserArchivesService tbUserArchivesService;
 
-    @Resource
-    private TBUserArchivesAllocationService tbUserArchivesAllocationService;
-
-    @Resource
-    private TBCrmDetailService tbCrmDetailService;
-
     @Override
     public CanChooseSopResult findCanChooseSopResultList(Long serviceId, Long userId) {
         CanChooseSopResult result = new CanChooseSopResult();
@@ -61,21 +55,49 @@ public class TBDingAddServiceImpl extends ServiceImpl<TBDingAddMapper, TBDingAdd
         BigDecimal addHours = dingAddParam.getAddHours();
 
         boolean isCoordinator = tbUserArchivesService.containsRegionCoordinator(userId);
-        if (!isCoordinator && Objects.isNull(sopNo)) {
-            throw ExceptionResultEnum.ERROR.exception("非区域协调员必须选择SOP");
+        List<TBDingAdd> dbDingAddList = this.list(
+                new QueryWrapper<TBDingAdd>().lambda().eq(TBDingAdd::getServiceId, serviceId).eq(TBDingAdd::getUserId, userId));
+
+        QueryWrapper<TBDingAdd> removeQuery = new QueryWrapper<>();
+        removeQuery.lambda().eq(TBDingAdd::getServiceId, serviceId).eq(TBDingAdd::getUserId, userId);
+
+        if (isCoordinator) {
+            // 区协追加
+            // 如果有曾经作为工程师的追加记录,则不允许提交
+            if (dbDingAddList.stream().anyMatch(e -> Objects.nonNull(e.getSopNo()))) {
+                throw ExceptionResultEnum.ERROR.exception("该用户曾有过工程师的追加记录,无法作为区协追加");
+            }
+        } else {
+            // 工程师追加
+            // 工程师追加必须选择SOP
+            if (Objects.isNull(sopNo)) {
+                throw ExceptionResultEnum.ERROR.exception("工程师必须选择SOP");
+            }
+            // 如果有曾经作为区协的追加记录,则不允许提交
+            if (dbDingAddList.stream().anyMatch(e -> Objects.isNull(e.getSopNo()))) {
+                throw ExceptionResultEnum.ERROR.exception("该用户曾有过区协的追加记录,无法作为工程师追加");
+            }
+            removeQuery.lambda().eq(TBDingAdd::getSopNo, sopNo);
         }
 
+        // 清除掉之前的追加记录
+        this.remove(removeQuery);
+        // 追加
         TBDingAdd dingAdd = new TBDingAdd();
         dingAdd.setServiceId(serviceId);
         dingAdd.setUserId(userId);
-        if (Objects.nonNull(sopNo)) {
+        if (Objects.nonNull(sopNo) && !isCoordinator) {
             dingAdd.setSopNo(sopNo);
         }
-        dingAdd.setAddDays(addDays);
-        dingAdd.setAddHours(addHours);
+        if (SystemConstant.effectBigDecimal(addDays)) {
+            dingAdd.setAddDays(addDays);
+        } else {
+            dingAdd.setAddHours(addHours);
+        }
         dingAdd.insertInfo(requestUserId);
-
-        this.remove(new QueryWrapper<TBDingAdd>().lambda().eq(TBDingAdd::getServiceId, serviceId).eq(TBDingAdd::getUserId, userId));
-        this.save(dingAdd);
+        if (SystemConstant.effectBigDecimal(addDays) || SystemConstant.effectBigDecimal(addHours)) {
+            // 追加日或工时有效才追加 否则视为删除追加操作
+            this.save(dingAdd);
+        }
     }
 }

+ 1 - 1
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingServiceImpl.java

@@ -417,7 +417,7 @@ public class TBDingServiceImpl extends ServiceImpl<TBDingMapper, TBDing> impleme
             List<TBDing> unFinishDingList = otherSopDingList.stream()
                     .filter(e -> !SystemConstant.longNotNull(e.getSignInTime()) || !SystemConstant.longNotNull(e.getSignOutTime())).collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(unFinishDingList)) {
-                String unFinishDingError = "";
+                String unFinishDingError;
                 if (isCoordinator) {
                     unFinishDingError = String.format("请先完成服务单元为[%s]的打卡",
                             tbServiceService.listByIds(unFinishDingList.stream().map(TBDing::getServiceId).distinct().collect(Collectors.toList()))

+ 2 - 2
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingStatisticByCrmServiceImpl.java

@@ -113,10 +113,10 @@ public class TBDingStatisticByCrmServiceImpl extends ServiceImpl<TBDingStatistic
             List<TBDingAdd> dingAddList = dingAddDatasource.stream().filter(e -> sopNoList.contains(e.getSopNo())).collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(dingAddList)) {
                 for (TBDingAdd tbDingAdd : dingAddList) {
-                    if (Objects.nonNull(tbDingAdd.getAddDays())){
+                    if (SystemConstant.effectBigDecimal(tbDingAdd.getAddDays())) {
                         addDays = addDays.add(tbDingAdd.getAddDays());
                     }
-                    if (Objects.nonNull(tbDingAdd.getAddHours())){
+                    if (SystemConstant.effectBigDecimal(tbDingAdd.getAddHours())) {
                         addHours = addHours.add(tbDingAdd.getAddHours());
                     }
                 }

+ 2 - 2
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingStatisticByCustomServiceImpl.java

@@ -106,10 +106,10 @@ public class TBDingStatisticByCustomServiceImpl extends ServiceImpl<TBDingStatis
                     List<TBDingAdd> dingAddList = dingAddDatasource.stream().filter(e -> sopNoList.contains(e.getSopNo())).collect(Collectors.toList());
                     if (CollectionUtils.isNotEmpty(dingAddList)) {
                         for (TBDingAdd tbDingAdd : dingAddList) {
-                            if (Objects.nonNull(tbDingAdd.getAddDays())){
+                            if (SystemConstant.effectBigDecimal(tbDingAdd.getAddDays())) {
                                 addDays = addDays.add(tbDingAdd.getAddDays());
                             }
-                            if (Objects.nonNull(tbDingAdd.getAddHours())){
+                            if (SystemConstant.effectBigDecimal(tbDingAdd.getAddHours())) {
                                 addHours = addHours.add(tbDingAdd.getAddHours());
                             }
                         }

+ 29 - 6
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingStatisticByPersonServiceImpl.java

@@ -4,11 +4,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.sop.business.bean.dto.DingStatisticByPersonDto;
+import com.qmth.sop.business.bean.dto.SopInfoDto;
 import com.qmth.sop.business.entity.TBDingAdd;
 import com.qmth.sop.business.entity.TBDingStatistic;
 import com.qmth.sop.business.entity.TBDingStatisticByPerson;
 import com.qmth.sop.business.mapper.TBDingStatisticByPersonMapper;
 import com.qmth.sop.business.service.TBDingStatisticByPersonService;
+import com.qmth.sop.common.contant.SystemConstant;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -16,7 +18,6 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -76,21 +77,43 @@ public class TBDingStatisticByPersonServiceImpl extends ServiceImpl<TBDingStatis
                 tbDingStatisticByPerson.setViolationDays(violationDays);
 
                 // 处理工时增加
-                List<TBDingAdd> dingAddList = dingAddDatasource.stream().filter(e -> serviceId.equals(e.getServiceId()) && userId.equals(e.getUserId())).limit(1)
+                StringBuilder addDaysDetail = new StringBuilder();
+                StringBuilder addHoursDetail = new StringBuilder();
+
+                List<TBDingAdd> dingAddList = dingAddDatasource.stream().filter(e -> serviceId.equals(e.getServiceId()) && userId.equals(e.getUserId()))
                         .collect(Collectors.toList());
                 if (CollectionUtils.isNotEmpty(dingAddList)) {
                     for (TBDingAdd tbDingAdd : dingAddList) {
-                        if (Objects.nonNull(tbDingAdd.getAddDays())){
-                            addDays = addDays.add(tbDingAdd.getAddDays());
+                        String sopNo = tbDingAdd.getSopNo();
+                        BigDecimal addDaysCell = tbDingAdd.getAddDays();
+                        BigDecimal addHoursCell = tbDingAdd.getAddHours();
+                        String sopInfo = "";
+                        if (SystemConstant.strNotNull(sopNo)) {
+                            SopInfoDto sopInfoDto = this.baseMapper.findSopInfoBySopNo(sopNo);
+                            sopInfo = sopInfoDto.getSopNo() + SystemConstant.FLOW_FORM_ID_UNDERLINE + sopInfoDto.getCustomName() + SystemConstant.FLOW_FORM_ID_UNDERLINE
+                                    + sopInfoDto.getCourseName();
+                        }
+                        if (SystemConstant.effectBigDecimal(addDaysCell)) {
+                            addDays = addDays.add(addDaysCell);
+                            addDaysDetail.append(sopInfo).append("(").append(addDaysCell).append(")").append("\n");
                         }
-                        if (Objects.nonNull(tbDingAdd.getAddHours())){
-                            addHours = addHours.add(tbDingAdd.getAddHours());
+
+                        if (SystemConstant.effectBigDecimal(addHoursCell)) {
+                            addHours = addHours.add(addHoursCell);
+                            addHoursDetail.append(sopInfo).append("(").append(addHoursCell).append(")").append("\n");
                         }
                     }
+
                     tbDingStatisticByPerson.setAddDays(addDays);
                     tbDingStatisticByPerson.setAddHours(addHours);
                     tbDingStatisticByPerson.setWorkDays(tbDingStatisticByPerson.getWorkDays().add(addDays));
                     tbDingStatisticByPerson.setWorkHours(workHours.add(addHours));
+                    if (SystemConstant.strNotNull(addDaysDetail.toString())) {
+                        tbDingStatisticByPerson.setAddDaysDetail(addDaysDetail.substring(0, addDaysDetail.length() - "\n".length()));
+                    }
+                    if (SystemConstant.strNotNull(addHoursDetail.toString())) {
+                        tbDingStatisticByPerson.setAddHoursDetail(addHoursDetail.substring(0, addHoursDetail.length() - "\n".length()));
+                    }
                 }
                 result.add(tbDingStatisticByPerson);
             }

+ 2 - 2
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingStatisticBySopServiceImpl.java

@@ -94,10 +94,10 @@ public class TBDingStatisticBySopServiceImpl extends ServiceImpl<TBDingStatistic
             List<TBDingAdd> dingAddList = datasourceAdd.stream().filter(e -> sopNo.equals(e.getSopNo())).collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(dingAddList)) {
                 for (TBDingAdd tbDingAdd : dingAddList) {
-                    if (Objects.nonNull(tbDingAdd.getAddDays())){
+                    if (SystemConstant.effectBigDecimal(tbDingAdd.getAddDays())) {
                         addDays = addDays.add(tbDingAdd.getAddDays());
                     }
-                    if (Objects.nonNull(tbDingAdd.getAddHours())){
+                    if (SystemConstant.effectBigDecimal(tbDingAdd.getAddHours())) {
                         addHours = addHours.add(tbDingAdd.getAddHours());
                     }
                 }

+ 3 - 2
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingStatisticBySupplierServiceImpl.java

@@ -14,6 +14,7 @@ import com.qmth.sop.business.service.SysSupplierService;
 import com.qmth.sop.business.service.SysUserService;
 import com.qmth.sop.business.service.TBDingStatisticBySupplierService;
 import com.qmth.sop.business.service.TBUserArchivesSupplierService;
+import com.qmth.sop.common.contant.SystemConstant;
 import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -96,10 +97,10 @@ public class TBDingStatisticBySupplierServiceImpl extends ServiceImpl<TBDingStat
                         .collect(Collectors.toList());
                 if (CollectionUtils.isNotEmpty(dingAddList)) {
                     for (TBDingAdd tbDingAdd : dingAddList) {
-                        if (Objects.nonNull(tbDingAdd.getAddDays())){
+                        if (SystemConstant.effectBigDecimal(tbDingAdd.getAddDays())) {
                             addDays = addDays.add(tbDingAdd.getAddDays());
                         }
-                        if (Objects.nonNull(tbDingAdd.getAddHours())){
+                        if (SystemConstant.effectBigDecimal(tbDingAdd.getAddHours())) {
                             addHours = addHours.add(tbDingAdd.getAddHours());
                         }
                     }

+ 9 - 0
sop-business/src/main/resources/db/log/caozixuan_update_log.sql

@@ -64,3 +64,12 @@ INSERT INTO sys_privilege (id, name, url, type, parent_id, sequence, property, r
 -- 2024-11-07
 ALTER TABLE t_b_ding_statistic_by_person
     ADD COLUMN user_id BIGINT NULL COMMENT '用户id' AFTER service_name;
+
+-- 2024-11-11
+ALTER TABLE t_b_ding_statistic_by_person
+    ADD COLUMN add_days_detail TEXT NULL COMMENT '追加详情(天)' AFTER add_days,
+    ADD COLUMN add_hours_detail TEXT NULL COMMENT '追加详情(时)' AFTER add_hours;
+
+ALTER TABLE t_b_ding_add
+    DROP INDEX ding_add_unique ;
+;

+ 22 - 0
sop-business/src/main/resources/mapper/TBDingStatisticByPersonMapper.xml

@@ -18,7 +18,9 @@
             weekends,
             legal_holidays AS legalHolidays,
             add_days AS addDays,
+            add_days_detail AS addDaysDetail,
             add_hours AS addHours,
+            add_hours_detail AS addHoursDetail,
             work_days AS workDays,
             work_hours AS workHours,
             violation_days AS violationDays
@@ -43,7 +45,9 @@
             weekends,
             legal_holidays AS legalHolidays,
             add_days AS addDays,
+            add_days_detail AS addDaysDetail,
             add_hours AS addHours,
+            add_hours_detail AS addHoursDetail,
             work_days AS workDays,
             work_hours as workHours,
             violation_days as violationDays
@@ -55,4 +59,22 @@
             </if>
         </where>
     </select>
+    <select id="findSopInfoBySopNo" resultType="com.qmth.sop.business.bean.dto.SopInfoDto">
+        SELECT
+            tbcd.sop_no AS sopNo,
+            sc.name AS customName,
+            tbcd.course_name AS courseName
+        FROM
+            t_b_crm_detail tbcd
+                LEFT JOIN
+            t_b_crm tbc ON tbcd.crm_no = tbc.crm_no
+                LEFT JOIN
+            sys_custom sc ON tbc.custom_id = sc.id
+        <where>
+            <if test="sopNo != null and sopNo != ''">
+                AND tbcd.sop_no = #{sopNo}
+            </if>
+        </where>
+        LIMIT 1
+    </select>
 </mapper>

+ 10 - 0
sop-common/src/main/java/com/qmth/sop/common/contant/SystemConstant.java

@@ -859,4 +859,14 @@ public class SystemConstant {
     public static boolean longNotNull(Long x) {
         return x != null && x > 0;
     }
+
+    /**
+     * 判断BigDecimal是否有效 (非空且大于0)
+     *
+     * @param bigDecimal bigDecimal
+     * @return true - 非空,false - 为空
+     */
+    public static boolean effectBigDecimal(BigDecimal bigDecimal) {
+        return Objects.nonNull(bigDecimal) && bigDecimal.compareTo(BigDecimal.ZERO) > 0;
+    }
 }