Преглед на файлове

云课堂,工时管家增加财务月度报表接口

QuYueTing преди 1 месец
родител
ревизия
0dcc19c00c
променени са 18 файла, в които са добавени 1611 реда и са изтрити 9739 реда
  1. 1313 9653
      fhKeeper/formulahousekeeper/course-manager/courseManager.log
  2. 12 1
      fhKeeper/formulahousekeeper/course-pc/src/views/coursemanagement/list.vue
  3. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/constant/Constant.java
  4. 9 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/FinanceMonthlyWorktimeController.java
  5. 33 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  6. 2 71
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java
  7. 11 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/FinanceMonthlyWorktime.java
  8. 8 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Report.java
  9. 6 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java
  10. 4 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/FinanceMonthlyWorktimeService.java
  11. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskGroupService.java
  12. 121 8
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceMonthlyWorktimeServiceImpl.java
  13. 4 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  14. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  15. 55 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskGroupServiceImpl.java
  16. 27 3
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  17. 1 1
      fhKeeper/formulahousekeeper/ops-platform/src/main/resources/application.yml
  18. BIN
      fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/static/image/customerNew/demand.jpg

Файловите разлики са ограничени, защото са твърде много
+ 1313 - 9653
fhKeeper/formulahousekeeper/course-manager/courseManager.log


+ 12 - 1
fhKeeper/formulahousekeeper/course-pc/src/views/coursemanagement/list.vue

@@ -77,7 +77,7 @@
             ></el-pagination>
         </el-col>
         <!-- 新增/编辑课程 -->
-        <el-dialog :visible.sync="addDialogVisible" :title="newCourse.id ? '编辑课程' : '添加课程'" width="900px" :close-on-click-modal="false">
+        <el-dialog :visible.sync="addDialogVisible" :title="newCourse.id ? '编辑课程' : '添加课程'" width="900px" :close-on-click-modal="false" @close="stopCourseVideo">
             <el-form :model="newCourse" ref="newCourseForm" label-width="100px" :rules="courseRules">
                 <el-form-item label="课程分类" prop="categoryValue">
                     <el-select v-model="newCourse.categoryValue" placeholder="请选择" style="width: 100%">
@@ -165,6 +165,7 @@
                         <video 
                             controls
                             width="300"
+                            ref="courseVideoPlayer"
                             :src="newCourse.courseUrl"
                             style="margin-top: 10px; max-width: 100%">
                             您的浏览器不支持视频播放
@@ -455,6 +456,16 @@ export default {
             this.videoDialogVisible = false;
         },
         
+        // 停止课程视频播放
+        stopCourseVideo() {
+            if (this.$refs.courseVideoPlayer) {
+                const videoElement = this.$refs.courseVideoPlayer;
+                videoElement.pause();
+                videoElement.currentTime = 0;
+                // 不清除视频源,只暂停播放
+            }
+        },
+        
         // 删除视频
         deleteVideo() {
             this.$confirm('确认删除该视频?', '提示', {

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/constant/Constant.java

@@ -61,4 +61,6 @@ public class Constant {
     
     public static final int ZHE_ZHONG_COMPANY_ID=4811;
     public static final int MLD_COMPANY_ID=876;
+    //泓浒
+    public static final int HONG_HU_COMPANY_ID=7536;
 }

+ 9 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/FinanceMonthlyWorktimeController.java

@@ -30,5 +30,14 @@ public class FinanceMonthlyWorktimeController {
         return financeMonthlyWorktimeService.send(fmwId,timesheetDate,request);
     }
 
+    @RequestMapping("/getByMonth")
+    public HttpRespMsg getByMonth(Integer companyId, String ymonth, HttpServletRequest request) {
+        return financeMonthlyWorktimeService.getByMonth(companyId, ymonth,request);
+    }
+
+    @RequestMapping("/setTimesheetDate")
+    public HttpRespMsg setTimesheetDate(Integer id, String timesheetDate, HttpServletRequest request) {
+        return financeMonthlyWorktimeService.setTimesheetDate(id, timesheetDate,request);
+    }
 }
 

+ 33 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -54,6 +54,8 @@ public class ReportController {
     @Autowired
     private ReportService reportService;
     @Resource
+    private ErpOrderInfoMapper erpOrderInfoMapper;
+    @Resource
     private ProjectBasecostSettingMapper projectBasecostSettingMapper;
     @Resource
     private TimeAutoExcludeMapper timeAutoExcludeMapper;
@@ -1550,6 +1552,37 @@ public class ReportController {
 
             }
         }
+        //针对泓浒(苏州),需要按照工单号的部门来设置工时所属部门,同时设置是否是协作工时
+        if (Constant.HONG_HU_COMPANY_ID == company.getId()) {
+            List<String> collect = reportList.stream().map(Report::getExtraField4).collect(Collectors.toList());
+            List<ErpOrderInfo> orderList = erpOrderInfoMapper.selectList(new QueryWrapper<ErpOrderInfo>().in("order_id", collect));
+            for (Report report : reportList) {
+                String errorMsg = null;
+                Optional<ErpOrderInfo> first = orderList.stream().filter(order -> order.getOrderId().equals(report.getExtraField4())).findFirst();
+                if (first.isPresent()) {
+                    if (first.get().getDeptId() == null) {
+                        errorMsg = "工单号:"+report.getExtraField4()+"无部门id";
+                    } else {
+                        Department deptItem = departmentMapper.selectOne(new QueryWrapper<Department>().eq("dept_code", first.get().getDeptId()));
+                        if (deptItem != null) {
+                            if (!deptItem.getDepartmentId().equals(report.getDeptId())) {
+                                report.setDeptId(deptItem.getDepartmentId());
+                                report.setIsAssist(true);
+                            }
+                        } else {
+                            errorMsg = "工时系统中尚未给部门:"+first.get().getDeptName()+"设置部门编号";
+                        }
+                    }
+                } else {
+                    errorMsg = "erpOrderInfo表中工单号不存在:"+report.getExtraField4();
+                }
+                if (errorMsg != null) {
+                    HttpRespMsg httpRespMsg = new HttpRespMsg();
+                    httpRespMsg.setError(errorMsg);
+                    return httpRespMsg;
+                }
+            }
+        }
 
         //项目所属bu审核
         if(comTimeType.getReportAuditType() == 4){

+ 2 - 71
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskGroupController.java

@@ -352,77 +352,8 @@ public class TaskGroupController {
             //创建随项目创建而创建的模板
             QueryWrapper<User> eq = new QueryWrapper<User>().eq("id", request.getHeader("token"));
             User user = userMapper.selectOne(eq);
-            List<GroupTemplate> groupTemplates = GroupTemplateMapper.selectList(new QueryWrapper<GroupTemplate>().eq("company_id", user.getCompanyId()).eq("cre_with_pro", true));
-            if (groupTemplates.size()==0){
-                //创建默认分组
-                TaskGroup group = new TaskGroup();
-                group.setProjectId(item.getProjectId());
-                //group.setName("项目阶段");
-                group.setName(MessageUtils.message("entry.projectStage"));
-                taskGroupService.save(group);
-            }else{
-                for (GroupTemplate groupTemplate : groupTemplates) {
-                    TaskGroup group = new TaskGroup();
-                    group.setProjectId(item.getProjectId());
-                    group.setName(groupTemplate.getName());
-                    taskGroupService.save(group);
-                    //从模板创建任务列表
-                    Project project = projectMapper.selectById(item.getProjectId());
-                    String inchargerId = project.getInchargerId();
-                    User inchargerUser = userMapper.selectById(inchargerId);
-                    List<GroupTmpstages> stages = groupTmpstagesMapper.selectList(new QueryWrapper<GroupTmpstages>().eq("template_id", groupTemplate.getId()));
-                    List<Stages> batchList = new ArrayList<>();
-                    stages.forEach(s->{
-                        Stages stageItem = new Stages();
-                        stageItem.setGroupId(group.getId());
-                        stageItem.setStagesName(s.getStagesName());
-                        stageItem.setSequence(s.getSequence());
-                        stageItem.setProjectId(item.getProjectId());
-                        batchList.add(stageItem);
-                    });
-                    stagesService.saveBatch(batchList);
-                    //阶段的任务,里程碑,风险
-                    List<GtemplateTask> gtemplateTaskList = gtemplateTaskMapper.selectList(
-                            new QueryWrapper<GtemplateTask>().eq("gtemplate_id", groupTemplate.getId())
-                                    .orderByAsc("seq"));
-                    if (gtemplateTaskList.size() > 0) {
-                        List<Task> taskList = new ArrayList<>();
-//                        List<TaskExecutor> taskExecutorList = new ArrayList<>();
-                        gtemplateTaskList.forEach(gt->{
-                            Task task = gt.toTask();
-                            task.setProjectId(item.getProjectId());
-                            task.setGroupId(group.getId());
-                            String sName = stages.stream().filter(s->s.getId().equals(gt.getTstagesId())).findFirst().get().getStagesName();
-                            Integer realStageId = batchList.stream().filter(bat->bat.getStagesName().equals(sName)).findFirst().get().getId();
-                            task.setStagesId(realStageId);
-                            task.setCreaterId(user.getId());
-                            task.setCreaterName(user.getName());
-                            task.setCreatorColor(user.getColor());
-//                            if(task.getTaskType()==1 && inchargerUser != null){
-//                                task.setExecutorId(inchargerUser.getId());
-//                                task.setExecutorName(inchargerUser.getName());
-//                                task.setExecutorColor(inchargerUser.getColor());
-//                            }
-
-                            taskList.add(task);
-                        });
-                        taskService.saveBatch(taskList);
-//                        taskList.forEach(tl->{
-//                            TaskExecutor taskExecutor=new TaskExecutor();
-//                            //当为里程碑任务时
-//                            if(tl.getTaskType()==1 && inchargerUser != null){
-//                                taskExecutor.setTaskId(tl.getId());
-//                                taskExecutor.setExecutorId(inchargerUser.getId());
-//                                taskExecutor.setExecutorName(inchargerUser.getName());
-//                                taskExecutor.setExecutorColor(inchargerUser.getColor());
-//                                taskExecutor.setProjectId(item.getProjectId());
-//                                taskExecutorList.add(taskExecutor);
-//                            }
-//                        });
-//                        taskExecutorService.saveBatch(taskExecutorList);
-                    }
-                }
-            }
+            //初始化任务分组
+            taskGroupService.initGroup(companyId, item.getProjectId(), user);
         }
         List<TaskGroup> list = taskGroupService.list(queryWrapper);
         list.forEach(l->{

+ 11 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/FinanceMonthlyWorktime.java

@@ -7,9 +7,15 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * <p>
@@ -68,10 +74,15 @@ public class FinanceMonthlyWorktime extends Model<FinanceMonthlyWorktime> {
     /**
      * 工单结算日期
      */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     @TableField("timesheet_date")
     private LocalDate timesheetDate;
 
 
+    @TableField(exist = false)
+    List<FmwDetail> detailList = new ArrayList<>();
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 8 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Report.java

@@ -24,7 +24,7 @@ import org.springframework.format.annotation.DateTimeFormat;
  * </p>
  *
  * @author Seyason
- * @since 2025-04-13
+ * @since 2025-04-18
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -442,6 +442,13 @@ public class Report extends Model<Report> {
     private String extraField5;
 
 
+    /**
+     * 是否是其他部门协作工时
+     */
+    @TableField("is_assist")
+    private Boolean isAssist;
+
+
     @Override
     protected Serializable pkVal() {
         return this.id;

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java

@@ -257,4 +257,10 @@ public interface ReportMapper extends BaseMapper<Report> {
     List<UserRestTimeVO> getCompanyUserOverTimeHours(@Param("companyId") Integer companyId,@Param("userId") String userId);
 
     List<TisTimeVO> getTisTimeByDate(@Param("companyId") Integer companyId,@Param("date") String dateStr);
+
+    List<Report> getReportProjectGroupDetailList(@Param("companyId") Integer companyId,@Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate, @Param("groupNameList") List<String> groupNameList);
+
+    List<Report> getReportProjectAssistTime(@Param("companyId") Integer companyId,@Param("startDate") LocalDate startDate, @Param("endDate") LocalDate endDate, @Param("groupNameList") List<String> groupNameList);
+
+
 }

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/FinanceMonthlyWorktimeService.java

@@ -17,4 +17,8 @@ import javax.servlet.http.HttpServletRequest;
 public interface FinanceMonthlyWorktimeService extends IService<FinanceMonthlyWorktime> {
 
     HttpRespMsg send(String fmwId, String timesheetDate, HttpServletRequest request);
+
+    HttpRespMsg getByMonth(Integer companyId, String ymonth, HttpServletRequest request);
+
+    HttpRespMsg setTimesheetDate(Integer id, String timesheetDate, HttpServletRequest request);
 }

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/TaskGroupService.java

@@ -22,4 +22,6 @@ public interface TaskGroupService extends IService<TaskGroup> {
     void saveGroupIncharger(TaskGroup taskGroup, User user);
 
     HttpRespMsg createFromTemplate(String templateJson, Integer projectId,String projectIds);
+
+    void initGroup(Integer companyId,Integer projectId, User user);
 }

+ 121 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/FinanceMonthlyWorktimeServiceImpl.java

@@ -1,19 +1,21 @@
 package com.management.platform.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.management.platform.entity.FinanceMonthlyWorktime;
-import com.management.platform.entity.User;
+import com.management.platform.entity.*;
 import com.management.platform.entity.vo.TisTimeVO;
-import com.management.platform.mapper.FinanceMonthlyWorktimeMapper;
-import com.management.platform.mapper.FmwDetailMapper;
-import com.management.platform.mapper.UserMapper;
+import com.management.platform.mapper.*;
 import com.management.platform.service.FinanceMonthlyWorktimeService;
+import com.management.platform.service.FmwDetailService;
 import com.management.platform.task.DataCollectTask;
 import com.management.platform.util.HttpRespMsg;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.ParameterizedTypeReference;
 import org.springframework.http.*;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.client.RestTemplate;
 
@@ -21,9 +23,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -45,6 +45,17 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
 
     @Resource
     private UserMapper userMapper;
+    @Resource
+    private ReportMapper reportMapper;
+    @Resource
+    private DepartmentMapper departmentMapper;
+    @Resource
+    private TaskGroupMapper taskGroupMapper;
+    @Autowired
+    private ProjectMapper projectMapper;
+    @Autowired
+    private FmwDetailService fmwDetailService;
+
     @Override
     public HttpRespMsg send(String fmwId, String timesheetDate, HttpServletRequest request) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
@@ -104,4 +115,106 @@ public class FinanceMonthlyWorktimeServiceImpl extends ServiceImpl<FinanceMonthl
 
         return httpRespMsg;
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public HttpRespMsg getByMonth(Integer companyId, String ymonth, HttpServletRequest request) {
+        //获取该月份的数据,如果没有自动生成
+        String token = request.getHeader("token");
+        User user = userMapper.selectById(token);
+        FinanceMonthlyWorktime financeMonthlyWorktime = financeMonthlyWorktimeMapper.selectOne(new LambdaQueryWrapper<FinanceMonthlyWorktime>().eq(FinanceMonthlyWorktime::getCompanyId, companyId).eq(FinanceMonthlyWorktime::getYmonth, ymonth));
+        if(null != financeMonthlyWorktime){
+            //生成数据
+            financeMonthlyWorktime = new FinanceMonthlyWorktime();
+            financeMonthlyWorktime.setCompanyId(companyId);
+            financeMonthlyWorktime.setYmonth(ymonth);
+            financeMonthlyWorktime.setStatus(0);
+            //数据日期就是当前日期
+            financeMonthlyWorktime.setTimesheetDate(LocalDate.now());
+            financeMonthlyWorktime.setUserId(user.getId());
+            financeMonthlyWorktimeMapper.insert(financeMonthlyWorktime);
+
+            //生成明细数据
+            //获取当月的第一天和最后一天
+            LocalDate firstDayOfMonth = LocalDate.parse(ymonth + "-01", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+            LocalDate lastDayOfMonth = firstDayOfMonth.withDayOfMonth(firstDayOfMonth.lengthOfMonth());
+            //查询日报数据
+            List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, user.getCompanyId()));
+            List<Project> projectList = projectMapper.selectList(new LambdaQueryWrapper<Project>().eq(Project::getCompanyId, user.getCompanyId()));
+            List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().select(User::getId, User::getName, User::getDepartmentId).eq(User::getCompanyId, user.getCompanyId()));
+            List<String> groupNameList = new ArrayList<>();
+            groupNameList.add("组装/维修工时");
+            groupNameList.add("调试工时");
+            groupNameList.add("等料工时");
+            List<Report> reportList = reportMapper.getReportProjectGroupDetailList(user.getCompanyId(), firstDayOfMonth, lastDayOfMonth, groupNameList);
+            List<Report> assistList = reportMapper.getReportProjectAssistTime(user.getCompanyId(), firstDayOfMonth, lastDayOfMonth, groupNameList);
+
+            System.out.println("reportSize==="+reportList.size());
+            List<FmwDetail> insertDataList = new ArrayList<>();
+            for (Report report : reportList) {
+                //在insertDataList中按照projectId, extraField4,extraField5进行匹配查找,有的话取出来,没有的话插入
+                Optional<FmwDetail> optional = insertDataList.stream().filter(f -> f.getProjectId().equals(report.getProjectId()) && f.getExtraField4().equals(report.getExtraField4()) && f.getExtraField5().equals(report.getExtraField5())).findFirst();
+                if (optional.isPresent()) {
+                    FmwDetail fmwDetail = optional.get();
+                    setFmwTime(fmwDetail, report);
+                } else {
+                    FmwDetail fmwDetail = new FmwDetail();
+                    fmwDetail.setFmwId(financeMonthlyWorktime.getId());
+                    fmwDetail.setProjectId(report.getProjectId());
+                    projectList.stream().filter(p->p.getId().equals(report.getProjectId())).findFirst().ifPresent(project -> {
+                        fmwDetail.setProjectCode(project.getProjectCode());
+                    });
+                    fmwDetail.setExtraField4(report.getExtraField4());
+                    fmwDetail.setExtraField5(report.getExtraField5());
+                    fmwDetail.setDeptId(report.getDeptId());
+                    departmentList.stream().filter(d->d.getDepartmentId().equals(report.getDeptId())).findFirst().ifPresent(d->{
+                        fmwDetail.setDeptCode(d.getDeptCode());
+                        fmwDetail.setDeptName(d.getDepartmentName());
+                    });
+                    setFmwTime(fmwDetail, report);
+                    //从assistList中获取协作工时
+                    Optional<Report> assistItemOp = assistList.stream().filter(f -> f.getProjectId().equals(report.getProjectId()) && f.getExtraField4().equals(report.getExtraField4()) && f.getExtraField5().equals(report.getExtraField5())).findFirst();
+                    if (assistItemOp.isPresent()) {
+                        fmwDetail.setAssistTime(assistItemOp.get().getWorkingTime());
+                    }
+                    insertDataList.add(fmwDetail);
+                }
+            }
+            System.out.println("插入数据大小=="+insertDataList.size());
+            if (insertDataList.size() > 0) {
+                fmwDetailService.saveBatch(insertDataList);
+            }
+        }
+        //查询数据
+        List<FmwDetail> details = fmwDetailMapper.selectList(new QueryWrapper<FmwDetail>().eq("fmw_id", financeMonthlyWorktime.getId()));
+        financeMonthlyWorktime.setDetailList(details);
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data = financeMonthlyWorktime;
+        return msg;
+    }
+
+    private void setFmwTime(FmwDetail fmwDetail, Report report) {
+        switch (report.getGroupName()) {
+            case "组装/维修工时":
+                fmwDetail.setMaintanceTime(report.getWorkingTime());
+                break;
+            case "调试工时":
+                fmwDetail.setDebugTime(report.getWorkingTime());
+                break;
+            case "等料工时":
+                fmwDetail.setWaitingTime(report.getWorkingTime());
+                break;
+        }
+    }
+
+    @Override
+    public HttpRespMsg setTimesheetDate(Integer id, String timesheetDate, HttpServletRequest request) {
+        FinanceMonthlyWorktime financeMonthlyWorktime = new FinanceMonthlyWorktime();
+        financeMonthlyWorktime.setId(id);
+        financeMonthlyWorktime.setTimesheetDate(LocalDate.parse(timesheetDate, DateTimeFormatter.ofPattern("yyyy-MM-dd")));
+        financeMonthlyWorktimeMapper.updateById(financeMonthlyWorktime);
+        return new HttpRespMsg();
+    }
+
+
 }

+ 4 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1911,6 +1911,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         projectSeparate.setId(id);
                         projectSeparateMapper.insert(projectSeparate);
                     }
+                    //项目管理专业版要自动生成任务分组
+                    if (company.getPackageProject() == 1) {
+                        taskGroupService.initGroup(companyId, id, user);
+                    }
                     OperationRecord operationRecord=new OperationRecord();
                     operationRecord.setProjectName(project.getProjectName());
                     operationRecord.setOperationTime(LocalDateTime.now());

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -4811,7 +4811,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, user.getCompanyId()));
         List<UserCustom> userCustomList = userCustomMapper.selectList(new LambdaQueryWrapper<UserCustom>().eq(UserCustom::getCompanyId, user.getCompanyId()));
-        List<UserFvTime> userFvTimeList = userFvTimeMapper.selectList(new LambdaQueryWrapper<UserFvTime>().between(UserFvTime::getWorkDate, startDate, endDate));
+        List<UserFvTime> userFvTimeList = userFvTimeMapper.selectList(new LambdaQueryWrapper<UserFvTime>().between(UserFvTime::getWorkDate, startDate, endDate).eq(UserFvTime::getCompanyId, user.getCompanyId()));
         List<Map<String, Object>> reportFillStatus = reportMapper.getReportFillStatus(startDate, endDate, userId);
         //针对景昱 5978 校验填报工时是否超过考勤
         if(user.getCompanyId().equals(5978)){

+ 55 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskGroupServiceImpl.java

@@ -200,6 +200,61 @@ public class TaskGroupServiceImpl extends ServiceImpl<TaskGroupMapper, TaskGroup
         return msg;
     }
 
+    @Override
+    public void initGroup(Integer companyId, Integer projectId, User user) {
+        List<GroupTemplate> groupTemplates = groupTemplateMapper.selectList(new QueryWrapper<GroupTemplate>().eq("company_id", user.getCompanyId()).eq("cre_with_pro", true));
+        if (groupTemplates.size()==0){
+            //创建默认分组
+            TaskGroup group = new TaskGroup();
+            group.setProjectId(projectId);
+            //group.setName("项目阶段");
+            group.setName(MessageUtils.message("entry.projectStage"));
+            save(group);
+        }else{
+            for (GroupTemplate groupTemplate : groupTemplates) {
+                TaskGroup group = new TaskGroup();
+                group.setProjectId(projectId);
+                group.setName(groupTemplate.getName());
+                save(group);
+                //从模板创建任务列表
+                Project project = projectMapper.selectById(projectId);
+                String inchargerId = project.getInchargerId();
+                User inchargerUser = userMapper.selectById(inchargerId);
+                List<GroupTmpstages> stages = groupTmpstagesMapper.selectList(new QueryWrapper<GroupTmpstages>().eq("template_id", groupTemplate.getId()));
+                List<Stages> batchList = new ArrayList<>();
+                stages.forEach(s->{
+                    Stages stageItem = new Stages();
+                    stageItem.setGroupId(group.getId());
+                    stageItem.setStagesName(s.getStagesName());
+                    stageItem.setSequence(s.getSequence());
+                    stageItem.setProjectId(projectId);
+                    batchList.add(stageItem);
+                });
+                stagesService.saveBatch(batchList);
+                //阶段的任务,里程碑,风险
+                List<GtemplateTask> gtemplateTaskList = gtemplateTaskMapper.selectList(
+                        new QueryWrapper<GtemplateTask>().eq("gtemplate_id", groupTemplate.getId())
+                                .orderByAsc("seq"));
+                if (gtemplateTaskList.size() > 0) {
+                    List<Task> taskList = new ArrayList<>();
+                    gtemplateTaskList.forEach(gt->{
+                        Task task = gt.toTask();
+                        task.setProjectId(projectId);
+                        task.setGroupId(group.getId());
+                        String sName = stages.stream().filter(s->s.getId().equals(gt.getTstagesId())).findFirst().get().getStagesName();
+                        Integer realStageId = batchList.stream().filter(bat->bat.getStagesName().equals(sName)).findFirst().get().getId();
+                        task.setStagesId(realStageId);
+                        task.setCreaterId(user.getId());
+                        task.setCreaterName(user.getName());
+                        task.setCreatorColor(user.getColor());
+                        taskList.add(task);
+                    });
+                    taskService.saveBatch(taskList);
+                }
+            }
+        }
+    }
+
     @Override
     @Transactional
     public HttpRespMsg setTemplate(User user,setTemplate setTemplate){

Файловите разлики са ограничени, защото са твърде много
+ 27 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml


+ 1 - 1
fhKeeper/formulahousekeeper/ops-platform/src/main/resources/application.yml

@@ -105,7 +105,7 @@ referer:
     - localhost
     - ttkuaiban.com
     - ops.ttkuaiban.com
-    - 47.101.180.183
+    - 1.94.62.58
     - mldworktime.ttkuaiban.com
 excludeUrls: /wxcorp/*,/wxcorp/*/*,/dingding/*,/error,/testClient,/corpWXAuth,/wx-corp-info/*,/clean/*,/innerRoles/*,/operation-record/*
 syncDDMembUrl: http://worktime.ttkuaiban.com/api/dingding/syncCorpMembs

BIN
fhKeeper/formulahousekeeper/webttkuaiban/src/main/resources/static/image/customerNew/demand.jpg