wucl %!s(int64=2) %!d(string=hai) anos
pai
achega
772eea7445

+ 4 - 1
biz-base/src/main/java/com/dayou/controller/ItemStageController.java

@@ -22,6 +22,9 @@ import java.util.List;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import org.springframework.http.MediaType;
 import org.springframework.web.multipart.MultipartFile;
+
+import javax.validation.Valid;
+
 /**
  * 项目阶段表
  *
@@ -57,7 +60,7 @@ public class ItemStageController extends BaseController {
      * 项目阶段表新增
      */
     @PostMapping("")
-    public RestResponse<Boolean> save(@RequestBody ItemStage itemStage) {
+    public RestResponse<Boolean> save(@RequestBody @Valid  ItemStage itemStage) {
         Boolean ret = itemStageService.add(itemStage);
         return RestResponse.data(ret);
     }

+ 3 - 0
dao/src/main/java/com/dayou/mapper/ItemStageMapper.java

@@ -6,6 +6,7 @@ import com.dayou.vo.ItemStageVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.web.bind.annotation.PathVariable;
 
+import java.time.LocalDate;
 import java.util.List;
 
 /**
@@ -19,4 +20,6 @@ import java.util.List;
 public interface ItemStageMapper extends CustomBaseMapper<ItemStage> {
 
     List<ItemStageVO> listByItemId(@Param("itemId") Long itemId);
+
+    int checkDate(@Param("id") Long id,@Param("itemId") Long itemId,@Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate);
 }

+ 3 - 1
dao/src/main/resources/mapper/ItemMapper.xml

@@ -55,7 +55,9 @@
 
     <select id="getPage" resultType="com.dayou.vo.ItemVO">
         SELECT
-            <include refid="Base_Column_List"/> , d.name as departmentName
+            <include refid="Base_Column_List"/> , d.name as departmentName,
+        (select name from item_stage s where curDate() &gt;= s.start_date and curDate() &lt;= s.end_date and s.item_id = i.id) as stageName,
+        (select id from item_stage s where curDate() &gt;= s.start_date and curDate() &lt;= s.end_date and s.item_id  and s.item_id = i.id) as stageId
         FROM
             item i left join department d on i.department_id = d.id
         WHERE

+ 7 - 0
dao/src/main/resources/mapper/ItemStageMapper.xml

@@ -47,4 +47,11 @@
         s.item_id = #{itemId}
     </select>
 
+    <select id="checkDate" resultType="java.lang.Integer">
+        select count(*) from item_stage where item_id = #{itemId} and #{startDate} &lt;= end_date and #{endDate} &gt;= start_date
+        <if test="id!=null">
+            and id != #{id}
+        </if>
+    </select>
+
 </mapper>

+ 10 - 22
dao/src/main/resources/mapper/ItemUserLogMapper.xml

@@ -12,11 +12,6 @@
         <result column="user_id" property="userId" />
         <result column="log_date" property="logDate" />
         <result column="task_situation" property="taskSituation" />
-        <result column="esitmate_date" property="esitmateDate" />
-        <result column="actual_date" property="actualDate" />
-        <result column="summary" property="summary" />
-        <result column="reason" property="reason" />
-        <result column="weight" property="weight" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
@@ -28,12 +23,7 @@
 	iul.item_id,
 	iul.user_id,
 	iul.log_date,
-	iul.task_situation,
-	iul.esitmate_date,
-	iul.actual_date,
-	iul.summary,
-	iul.reason,
-	iul.weight
+	iul.task_situation
     </sql>
 
     <sql id="log_collect">
@@ -46,17 +36,12 @@
             iul.item_id,
             iul.user_id,
             iul.log_date,
-            iul.task_situation,
-            iul.esitmate_date,
-            iul.actual_date,
-            iul.summary,
-            iul.reason,
-            iul.weight
+            iul.task_situation
     </sql>
 
     <select id="logListByUserId" parameterType="java.lang.Long" resultType="com.dayou.vo.ItemUserLogVO">
         SELECT
-            <include refid="log_collect"/>
+            <include refid="log_collect"/>,s.name as stageName
         FROM
             item_user_log iul
                 INNER JOIN (
@@ -70,6 +55,7 @@
                 AND iul.user_id = temp.user_id
                 INNER JOIN item i ON i.id = temp.item_id
                 INNER JOIN user u ON u.id = temp.user_id
+        left join item_stage s on s.id = iul.stage_id
         WHERE
             u.deleted = 0
           AND i.deleted = 0
@@ -79,7 +65,7 @@
 
     <select id="logListByDepartmentId" parameterType="java.lang.Long" resultType="com.dayou.vo.ItemUserLogVO">
         SELECT
-        <include refid="log_collect"/>
+        <include refid="log_collect"/>,s.name as stageName
         FROM
             item_user_log iul
                 INNER JOIN
@@ -92,6 +78,7 @@
                 ) and up.deleted = 0) temp on temp.user_id = iul.user_id
                 INNER JOIN item i ON i.id = iul.item_id
                 INNER JOIN user u ON u.id = temp.user_id
+        left join item_stage s on s.id = iul.stage_id
         WHERE
             u.deleted = 0
           AND i.deleted = 0
@@ -103,9 +90,10 @@
 
     <select id="page" parameterType="com.dayou.vo.ItemUserLogVO" resultType="com.dayou.vo.ItemUserLogVO">
         SELECT
-        iul.id,iul.log_date as logDate,i.name as itemName ,iul.created
+        iul.id,iul.log_date as logDate,i.name as itemName ,iul.created,s.name as stageName
         FROM
         item_user_log iul left join item i on iul.item_id = i.id
+        left join item_stage s on s.id = iul.stage_id
         where iul.deleted = 0 and i.deleted = 0 and iul.user_id = #{userId}
         <if test="itemUserLogVO!=null and itemUserLogVO.itemName!=null and itemUserLogVO.itemName!='' ">
             and i.name like concat ('%',#{itemUserLogVO.itemName},'%')
@@ -115,9 +103,9 @@
 
     <select id="detail" parameterType="java.lang.Long" resultType="com.dayou.vo.ItemUserLogVO">
         SELECT
-        <include refid="Base_Column_List"/> , i.name as itemName
+        <include refid="Base_Column_List"/> , i.name as itemName,s.name as stageName
         FROM
-        item_user_log iul left join item i on iul.item_id = i.id
+        item_user_log iul left join item i on iul.item_id = i.id left join item_stage s on s.id = iul.stage_id
         where iul.deleted = 0 and i.deleted = 0 and iul.id = #{logId}
     </select>
 

+ 5 - 0
domain/src/main/java/com/dayou/entity/ItemStage.java

@@ -5,6 +5,8 @@ import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.Date;
 
+import com.github.liangbaika.validate.annations.AbcValidate;
+import com.github.liangbaika.validate.enums.Check;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import com.dayou.annotation.ExcelSheet;
@@ -62,6 +64,7 @@ public class ItemStage{
      */
     @ImportCell
     @ExportCell(columnName = "开始时间")
+    @AbcValidate(required = true ,message = "开始时间不能为空", fun = Check.NotNull)
     private LocalDate startDate;
 
     /**
@@ -69,6 +72,7 @@ public class ItemStage{
      */
     @ImportCell
     @ExportCell(columnName = "结束时间")
+    @AbcValidate(required = true ,message = "结束时间不能为空", fun = Check.NotNull)
     private LocalDate endDate;
 
     /**
@@ -87,4 +91,5 @@ public class ItemStage{
      * 创建时间
      */
     private Date created;
+
 }

+ 4 - 0
domain/src/main/java/com/dayou/entity/ItemUserLog.java

@@ -85,5 +85,9 @@ public class ItemUserLog extends BaseEntity {
     @ExportCell(columnName = "任务权重")
     private String weight;
 
+    /**
+     * 阶段id
+     */
+    private Long stageId;
 
 }

+ 2 - 0
domain/src/main/java/com/dayou/vo/ItemUserLogVO.java

@@ -16,4 +16,6 @@ public class ItemUserLogVO extends ItemUserLog {
     private String itemName;
 
     private String userName;
+
+    private String stageName;
 }

+ 10 - 0
domain/src/main/java/com/dayou/vo/ItemVO.java

@@ -21,4 +21,14 @@ public class ItemVO extends Item {
      * 项目配置人员id列表
      */
     private List<Long> userIds;
+
+    /**
+     * 阶段名称
+     */
+    private String stageName;
+
+    /**
+     * 阶段id
+     */
+    private Long stageId;
 }

+ 8 - 1
service/src/main/java/com/dayou/service/impl/ItemServiceImpl.java

@@ -1,5 +1,6 @@
 package com.dayou.service.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.dayou.dto.ItemDTO;
 import com.dayou.entity.Item;
 import com.dayou.entity.ItemUser;
@@ -64,6 +65,7 @@ public class ItemServiceImpl extends ServiceImpl<ItemMapper, Item> implements II
     @Override
     @SuppressWarnings("unchecked")
     public Page<ItemVO> selectPage(Page page, Item item, Boolean me){
+        String state = item.getState();
         Long userId = null;
         if (me){
             userId = LoginContext.getUserId();
@@ -71,8 +73,13 @@ public class ItemServiceImpl extends ServiceImpl<ItemMapper, Item> implements II
         Page<ItemVO> result = itemMapper.getPage(page, item, userId);
         List<ItemVO> records = result.getRecords();
         records.stream().forEach(x->{
-            x.setState(getItemState(x.getId()));
+            String itemState = getItemState(x.getId());
+            x.setState(itemState);
         });
+        if (StrUtil.isNotBlank(state)){
+            records = records.stream().filter(x -> x.getState().equals(state)).collect(Collectors.toList());
+            result.setRecords(records);
+        }
         return result;
 
     }

+ 14 - 0
service/src/main/java/com/dayou/service/impl/ItemStageServiceImpl.java

@@ -74,6 +74,13 @@ public class ItemStageServiceImpl extends ServiceImpl<ItemStageMapper, ItemStage
 
     @Override
     public Boolean add(ItemStage itemStage){
+        //判断阶段时间是否与已有阶段时间重复
+        LocalDate startDate = itemStage.getStartDate();
+        LocalDate endDate = itemStage.getEndDate();
+        int check = itemStageMapper.checkDate(itemStage.getId(),itemStage.getItemId(),startDate,endDate);
+        if (check!=0){
+            ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"日期段与已存在的排期日期重复,请检查.");
+        }
         if (StrUtil.isNotBlank(itemStage.getHeaderId())){
             itemStage.setFooterId(UUID.randomUUID().toString());
             this.update(new LambdaUpdateWrapper<ItemStage>()
@@ -92,6 +99,13 @@ public class ItemStageServiceImpl extends ServiceImpl<ItemStageMapper, ItemStage
     @Transactional
     @Override
     public Boolean update(ItemStage itemStage){
+        //判断阶段时间是否与已有阶段时间重复
+        LocalDate startDate = itemStage.getStartDate();
+        LocalDate endDate = itemStage.getEndDate();
+        int check = itemStageMapper.checkDate(itemStage.getId(),itemStage.getItemId(),startDate,endDate);
+        if (check!=0){
+            ErrorCode.throwBusinessException(ErrorCode.CUSTOM_ERROR,"日期段与已存在的排期日期重复,请检查.");
+        }
         if (StrUtil.isBlank(itemStage.getHeaderId())){
             ErrorCode.throwBusinessException(STAGE_NODE_ERROR);
         }

+ 4 - 1
sql/20221229.sql

@@ -1,2 +1,5 @@
 alter table user add column password_state bit(1) not null default 1 comment '初始密码状态';
-ALTER table item add COLUMN department_id BIGINT(20) comment '所属部门';
+ALTER table item add COLUMN department_id BIGINT(20) comment '所属部门';
+/* 2023-01-03 新增SQL*/
+ALTER table item_user_log add COLUMN stage_id BIGINT(20) comment '阶段id';
+