Pārlūkot izejas kodu

feature: 添加了检查任务起始时间不能早于项目立项时间的功能

eyes4 6 mēneši atpakaļ
vecāks
revīzija
d9e652c443

+ 1 - 1
pmr-biz-manager/src/routes/api/prj/info/modify.ts

@@ -297,7 +297,7 @@ const v1_0: IApiProcessor = {
             leader_id: "leader_id",
             bizman_id: "bizman_id",
             intro: "intro",
-            // updated_at: "updated_at"
+            updated_at: "updated_at"
         }
     },
     guards: [permission_guard],

+ 4 - 0
pmr-biz-manager/src/routes/api/prj/plan/add_task.ts

@@ -65,6 +65,10 @@ function guard(json: IRequest, cached_data: ICachedData): Promise<void> {
         data.begin_at += ' 00:00:00';
         data.end_at += ' 23:59:59';
 
+        // 检查计划开始时间不能早于项目立项时间
+        if (dayjs(data.begin_at).diff(dayjs(prj_info.started_at)) < 0) {
+            return reject(Resp.gen_err(Resp.ParamsError, `计划开始时间不能早于项目立项时间 ${dayjs(prj_info.started_at).format('YYYY-MM-DD')}。`));
+        }
         // 检查计划结束时间不能晚于项目交付时间
         if (dayjs(data.end_at).diff(dayjs(prj_info.deliver_at)) > 0) {
             return reject(Resp.gen_err(Resp.ParamsError, `计划结束时间不能晚于项目交付时间 ${dayjs(prj_info.deliver_at).format('YYYY-MM-DD')}。`));

+ 5 - 1
pmr-biz-manager/src/routes/api/prj/plan/modify_task.ts

@@ -77,6 +77,7 @@ function guard(json: IRequest, cached_data: ICachedData): Promise<void> {
 
         let prj_info = await PrjInfo.findOne({where: {id: task.prj_id}, raw: true});
         if (!prj_info) return reject(Resp.gen_err(Resp.ResourceNotFound));
+        cached_data.started_at = prj_info.started_at;   // 缓存项目的开始时间
         cached_data.deliver_at = prj_info.deliver_at; // 缓存项目的交付时间
 
         // 检查用户是否是项目负责人,只有项目负责人才可以修改任务
@@ -123,7 +124,10 @@ function modify(json: IRequest, params: IMethodParams, cached_data: ICachedData)
             // 检查起止时间是否合法
             let begin_at = data.begin_at || task.begin_at;
             let end_at = data.end_at || task.end_at;
-
+            // 检查计划开始时间不能早于项目立项时间
+            if (dayjs(begin_at).diff(dayjs(cached_data.started_at)) < 0) {
+                return reject(Resp.gen_err(Resp.ParamsError, `计划开始时间不能早于项目立项时间 ${dayjs(cached_data.started_at).format('YYYY-MM-DD')}。`));
+            }
             // 检查计划结束时间不能晚于项目交付时间
             if (dayjs(data.end_at).diff(dayjs(cached_data.deliver_at)) > 0) {
                 return reject(Resp.gen_err(Resp.ParamsError, `计划结束时间不能晚于项目交付时间 ${dayjs(cached_data.deliver_at).format('YYYY-MM-DD')}。`));

+ 5 - 2
pmr-biz-manager/src/utils/bpmn_work_helper.ts

@@ -19,8 +19,11 @@ export async function bpmn_flow_on_end(id: string, model_id: string, prj_id: str
     let user = await AcsUserInfo.findOne({where: {id: owner}, raw: true});
     let user_name = user ? user.name : '系统';
     switch (model_id) {
-        case 'prj':
-            await PrjInfo.update({phase_id: 'created'}, {where: {id: prj_id}});
+        case 'prj': // 立项成功
+            await PrjInfo.update({
+                phase_id: 'created',
+                started_at: dayjs().format('YYYY-MM-DD 00:00:00')
+            }, {where: {id: prj_id}});
             await PrjLogger.log({
                 creator_id: owner,
                 creator_name: user_name,