Jelajahi Sumber

Merge branch 'master' of http://47.100.37.243:10191/wutt/manHourHousekeeper

Lijy 1 tahun lalu
induk
melakukan
9ded3a8ed3
16 mengubah file dengan 472 tambahan dan 35 penghapusan
  1. 6 7
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/LeaveSheetController.java
  2. 41 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/LeaveSheetFvController.java
  3. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  4. 158 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/LeaveSheetFv.java
  5. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/LeaveSheetFvMapper.java
  6. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportMapper.java
  7. 19 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/LeaveSheetFvService.java
  8. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportService.java
  9. 144 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/LeaveSheetFvServiceImpl.java
  10. 29 6
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  11. 8 11
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java
  12. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/DockWithMLD.java
  13. 35 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/LeaveSheetFvMapper.xml
  14. 5 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  15. TEMPAT SAMPAH
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/多项目任务模板.xlsx
  16. 5 3
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

+ 6 - 7
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/LeaveSheetController.java

@@ -157,11 +157,7 @@ public class LeaveSheetController {
         JSONObject jsonObject=new JSONObject();
         DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
         DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        //需要修改************************************************  日期
-        LocalDateTime yesterday = LocalDateTime.now().minusDays(2);
-        String startDate = dtf.format(yesterday);
-        String endDate = dtf.format(yesterday.plusDays(30));
-        jsonObject.put("workDate",startDate);
+        String startDate = dtf.format(LocalDateTime.now());
         jsonObject.put("gmtFinished",startDate);
         String jsonString = jsonObject.toJSONString();
         TimeType allDay = timeTypeMapper.selectOne(new QueryWrapper<TimeType>().eq("company_id", companyId));
@@ -183,7 +179,7 @@ public class LeaveSheetController {
             User user=optional.get();
             /*System.out.println("泛微同步人员请假数据----"+user.getName());*/
             if(companyId.equals(user.getCompanyId())){
-                LeaveSheet leaveSheet=new LeaveSheet();
+                LeaveSheet leaveSheet = new LeaveSheet();
                 leaveSheet.setCompanyId(user.getCompanyId());
                 leaveSheet.setStatus(0);
                 leaveSheet.setOwnerId(user.getId());
@@ -235,9 +231,12 @@ public class LeaveSheetController {
             }
         }
         if(leaveSheetList.size()>0){
-            leaveSheetService.saveOrUpdateBatch(leaveSheetList);
+            leaveSheetService.remove(new QueryWrapper<LeaveSheet>().eq("company_id",companyId));
+            leaveSheetService.saveBatch(leaveSheetList);
         }
         return msg;
     }
+
+
 }
 

+ 41 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/LeaveSheetFvController.java

@@ -0,0 +1,41 @@
+package com.management.platform.controller;
+
+
+import com.management.platform.service.LeaveSheetFvService;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-29
+ */
+@RestController
+@RequestMapping("/leave-sheet-fv")
+public class LeaveSheetFvController {
+
+    @Resource
+    LeaveSheetFvService leaveSheetFvService;
+
+    @RequestMapping("/syncData")
+    public HttpRespMsg syncData(String startDate, String endDate, Integer companyId) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        httpRespMsg.data = leaveSheetFvService.syncData(startDate, endDate, companyId);
+        return httpRespMsg;
+    }
+
+    @RequestMapping("/testAdd")
+    public HttpRespMsg testAdd(Integer companyId) {
+        HttpRespMsg httpRespMsg = new HttpRespMsg();
+        leaveSheetFvService.testAdd(companyId);
+        return httpRespMsg;
+    }
+}
+

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

@@ -2363,8 +2363,8 @@ public class ReportController {
 
     //todo:推送工时管家工时考勤数据到SAP
     @RequestMapping("/pushProjectReportToSap")
-    public HttpRespMsg pushProjectReportToSap(String pushDate){
-        return reportService.pushProjectReportToSap(pushDate);
+    public HttpRespMsg pushProjectReportToSap(String pushDate,Integer reportId){
+        return reportService.pushProjectReportToSap(pushDate,reportId);
     }
 
     //todo:查询已推送到SAP的工时管家工时考勤数据 并撤销推送

+ 158 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/LeaveSheetFv.java

@@ -0,0 +1,158 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import java.time.LocalDate;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-29
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class LeaveSheetFv extends Model<LeaveSheetFv> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+    /**
+     * 填报人id
+     */
+    @TableField("owner_id")
+    private String ownerId;
+
+    /**
+     * 填报人姓名
+     */
+    @TableField("owner_name")
+    private String ownerName;
+
+    /**
+     * 开始日期
+     */
+    @TableField("start_date")
+    private LocalDate startDate;
+
+    /**
+     * 结束日期
+     */
+    @TableField("end_date")
+    private LocalDate endDate;
+
+    /**
+     * 假期类型:0-事假,1-病假,2-年假,3-产假
+     */
+    @TableField("leave_type")
+    private Integer leaveType;
+
+    /**
+     * 0-审核通过,1-待审核,2-驳回,3-已撤回
+     */
+    @TableField("status")
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    @TableField("remark")
+    private String remark;
+
+    /**
+     * 录入人
+     */
+    @TableField("operator_id")
+    private String operatorId;
+
+    /**
+     * 请假时长
+     */
+    @TableField("time_hours")
+    private Float timeHours;
+
+    /**
+     * 请假天数
+     */
+    @TableField("time_days")
+    private Float timeDays;
+
+    /**
+     * 时间
+     */
+    @TableField("indate")
+    private LocalDateTime indate;
+
+    /**
+     * 0-按天,1-按小时
+     */
+    @TableField("time_type")
+    private Integer timeType;
+
+    /**
+     * 手机号
+     */
+    @TableField("tel")
+    private String tel;
+
+    /**
+     * 审核人id
+     */
+    @TableField("auditor_id")
+    private String auditorId;
+
+    /**
+     * 审核人姓名
+     */
+    @TableField("auditor_name")
+    private String auditorName;
+
+    /**
+     * 1-部门审核,2-指定人员审核
+     */
+    @TableField("auditor_type")
+    private Integer auditorType;
+
+    /**
+     * 钉钉审批实例procInst_id
+     */
+    @TableField("procinst_id")
+    private String procinstId;
+
+    /**
+     * 钉钉审批实例的审批通过时间
+     */
+    @TableField("gmt_finished")
+    private String gmtFinished;
+
+    /**
+     * 当前审核节点id
+     */
+    @TableField("cur_audit_setting_id")
+    private Integer curAuditSettingId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/LeaveSheetFvMapper.java

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.LeaveSheetFv;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-29
+ */
+public interface LeaveSheetFvMapper extends BaseMapper<LeaveSheetFv> {
+
+}

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

@@ -181,7 +181,7 @@ public interface ReportMapper extends BaseMapper<Report> {
 
     List<Map<String, Object>> getCcReportByDate(@Param("date") String date, @Param("id") String id, @Param("state") Integer state);
 
-    List<Map<String, Object>> getPushProjectReportToSap(Integer companyId, String startDate, String endDate,String userId);
+    List<Map<String, Object>> getPushProjectReportToSap(Integer companyId, String startDate, String endDate,String userId,Integer reportId);
 
     List<Report> getSumWorkingTime(ArrayList<Integer> deptIds, String startDate, String endDate);
 
@@ -189,7 +189,7 @@ public interface ReportMapper extends BaseMapper<Report> {
 
     Double getReallWorkingTimeByProjectAndGroup(Integer projectId, Integer taskGroupId);
 
-    List<Map<String, Object>> getProjectPlanData(Integer companyId,@Param("list") List<Integer> projectIds, String startDate, String endDate);
+    List<Map<String, Object>> getProjectPlanData(Integer companyId,@Param("list") List<Integer> taskIds, String startDate, String endDate);
 
     List<String> getUserIds(ArrayList<Integer> deptIds, String startDate, String endDate);
 

+ 19 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/LeaveSheetFvService.java

@@ -0,0 +1,19 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.LeaveSheetFv;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-29
+ */
+public interface LeaveSheetFvService extends IService<LeaveSheetFv> {
+
+    Integer syncData(String startDate, String endDate, Integer companyId);
+
+    void testAdd(Integer companyId);
+}

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

@@ -132,7 +132,7 @@ public interface ReportService extends IService<Report> {
 
     HttpRespMsg getWeeklyFillReportData(String targetDate, HttpServletRequest request);
 
-    HttpRespMsg pushProjectReportToSap(String yearMonth);
+    HttpRespMsg pushProjectReportToSap(String pushDate,Integer reportId);
 
     HttpRespMsg getReportById(Integer reportId, HttpServletRequest request);
 

+ 144 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/LeaveSheetFvServiceImpl.java

@@ -0,0 +1,144 @@
+package com.management.platform.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.*;
+import com.management.platform.mapper.LeaveSheetFvMapper;
+import com.management.platform.mapper.TimeTypeMapper;
+import com.management.platform.mapper.UserMapper;
+import com.management.platform.service.LeaveSheetFvService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.management.platform.util.DockWithMLD;
+import com.management.platform.util.HttpRespMsg;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.time.Duration;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2024-01-29
+ */
+@Service
+@Transactional
+public class LeaveSheetFvServiceImpl extends ServiceImpl<LeaveSheetFvMapper, LeaveSheetFv> implements LeaveSheetFvService {
+
+    @Resource
+    LeaveSheetFvMapper leaveSheetFvMapper;
+    @Resource
+    TimeTypeMapper timeTypeMapper;
+    @Resource
+    UserMapper userMapper;
+
+    @Override
+    public Integer syncData(String startDate, String endDate, Integer companyId) {
+        TimeType comTimeType = timeTypeMapper.selectById(companyId);
+        DockWithMLD dockWithMLD=new DockWithMLD();
+        JSONObject jsonObject=new JSONObject();
+        DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        List<LeaveSheetFv> oldLeaveSheetList = list(new QueryWrapper<LeaveSheetFv>().eq("company_id", companyId));
+        jsonObject.put("workDate",startDate);
+        jsonObject.put("gmtFinished",endDate);
+        String jsonString = jsonObject.toJSONString();
+        List<LeaveSheetFv> leaveSheetList=new ArrayList<>();
+
+        List<User> allUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
+        //Todo: 获取请假数据
+        HttpRespMsg leaveRecordMsg = dockWithMLD.getResult("http://10.1.10.51:20175/api/cube/restful/interface/getModeDataPageList/getLeaveRecord", jsonString);
+        List<Map<String,Object>> leaveRecordList= (List<Map<String, Object>>) leaveRecordMsg.data;
+        System.out.println("原始数据条数:"+leaveRecordList.size());
+        for (Map<String, Object> map : leaveRecordList) {
+            Optional<User> optional=allUserList.stream().filter(al->al.getJobNumber()!=null&&al.getJobNumber().equals(map.get("rybh"))).findFirst();
+            if(!optional.isPresent()){
+                continue;
+            }
+            User user=optional.get();
+            LeaveSheetFv leaveSheet=new LeaveSheetFv();
+            leaveSheet.setCompanyId(user.getCompanyId());
+            leaveSheet.setStatus(0);
+            leaveSheet.setOwnerId(user.getId());
+            leaveSheet.setOwnerName(user.getName());
+            leaveSheet.setStartDate(LocalDate.parse(String.valueOf(map.get("startDate")),dtf1));
+            leaveSheet.setEndDate(LocalDate.parse(String.valueOf(map.get("endDate")),dtf1));
+            Integer timeType=null;
+            switch (String.valueOf(map.get("timeType"))){
+                case "小时":timeType=1;
+                    break;
+                case "天":timeType=0;
+                    break;
+            }
+            leaveSheet.setTimeType(timeType);
+            leaveSheet.setTimeDays(Float.parseFloat(((String) map.get("timeDays")).equals("")?"0.00":((String) map.get("timeDays"))));
+            if (timeType == 0){
+                leaveSheet.setTimeHours(leaveSheet.getTimeDays()*comTimeType.getAllday());
+            }else {
+                leaveSheet.setTimeHours(Float.parseFloat(((String) map.get("timeHours")).equals("")?"0.00":((String) map.get("timeHours"))));
+            }
+            Integer leaveType;
+            switch (String.valueOf(map.get("leaveType"))){
+                case "事假":leaveType=0;
+                    break;
+                case "病假":leaveType=1;
+                    break;
+                case "年假":leaveType=2;
+                    break;
+                case "产假":leaveType=3;
+                    break;
+                case "婚假":leaveType=4;
+                    break;
+                case "丧假":leaveType=5;
+                    break;
+                case "调休":leaveType=6;
+                    break;
+                case "陪产假":leaveType=7;
+                    break;
+                default:leaveType=8;
+            }
+            leaveSheet.setLeaveType(leaveType);
+            leaveSheet.setProcinstId(String.valueOf(map.get("id")));
+            leaveSheet.setGmtFinished(String.valueOf(map.get("gmtFinished")));
+            leaveSheetList.add(leaveSheet);
+        }
+        if(leaveSheetList.size()>0){
+            //删掉该公司的所有请假数据
+            System.out.println("删除老数据");
+            leaveSheetFvMapper.delete(new QueryWrapper<LeaveSheetFv>().eq("company_id",companyId));
+            //再重新插入
+            saveBatch(leaveSheetList);
+        }
+        System.out.println("请假数据同步完成,共获取到"+leaveSheetList.size()+"条数据");
+        return new Integer(leaveSheetList.size());
+    }
+
+    @Override
+    public void testAdd(Integer companyId) {
+        LeaveSheetFv leaveSheetFv=new LeaveSheetFv();
+        leaveSheetFv.setCompanyId(companyId);
+        leaveSheetFv.setOwnerId("1");
+        leaveSheetFv.setOwnerName("张三");
+        leaveSheetFv.setStartDate(LocalDate.of(2024,1,1));
+        leaveSheetFv.setEndDate(LocalDate.of(2024,1,2));
+        leaveSheetFv.setTimeType(0);
+        leaveSheetFv.setTimeDays(1.0f);
+        leaveSheetFv.setTimeHours(8.0f);
+        leaveSheetFv.setLeaveType(0);
+        leaveSheetFv.setProcinstId("1");
+        leaveSheetFv.setGmtFinished(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+        leaveSheetFvMapper.insert(leaveSheetFv);
+    }
+}

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

@@ -5514,7 +5514,30 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
                 //是否启用自定义的维度了
                 if (timeType.getCustomDegreeActive() == 1) {
-                    item.add(map.get("degreeName") != null?map.get("degreeName").toString():"");
+                    if (timeType.getCustomDegreeMultiple()) {
+                        //多选的自定义维度
+                        List<ReportExtraDegree> extraDegreeList = reportExtraDegreeMapper.selectList(new QueryWrapper<ReportExtraDegree>().eq("company_id", companyId));
+                        String degreeIds = (String) map.get("multiDegrId");
+                        String degreeNames = "";
+                        if (!StringUtils.isEmpty(degreeIds)) {
+                            degreeIds = degreeIds.replace("@", ",");
+                            JSONArray array = JSONArray.parseArray(degreeIds);
+                            for (int i=0;i<array.size(); i++) {
+                                Integer id = array.getInteger(i);
+                                Optional<ReportExtraDegree> first = extraDegreeList.stream().filter(d -> d.getId().equals(id)).findFirst();
+                                if (first.isPresent()) {
+                                    ReportExtraDegree degree = first.get();
+                                    degreeNames += degree.getName() + ",";
+                                }
+                            }
+                            if (degreeNames.length() > 0) {
+                                degreeNames = degreeNames.substring(0, degreeNames.length()-1);
+                            }
+                        }
+                        item.add(degreeNames);
+                    } else {
+                        item.add(map.get("degreeName") != null?map.get("degreeName").toString():"");
+                    }
                 }
                 //是否启用了自定义数值
                 if (timeType.getCustomDataActive() == 1) {
@@ -7672,19 +7695,19 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
 
     @Override
-    public HttpRespMsg pushProjectReportToSap(String pushDate) {
+    public HttpRespMsg pushProjectReportToSap(String pushDate,Integer reportId) {
         HttpRespMsg httpRespMsg =new HttpRespMsg();
         LocalDateTime localDateTime=LocalDateTime.now();
         User user = userMapper.selectById(request.getHeader("token"));
         Integer companyId = user.getCompanyId();
-        List<Map<String,Object>> resultList=reportMapper.getPushProjectReportToSap(companyId,pushDate,pushDate,null);
+        List<Map<String,Object>> resultList=reportMapper.getPushProjectReportToSap(companyId,pushDate,pushDate,null,reportId);
         //过滤服务code为空的数据
         resultList=resultList.stream().filter(r->r.get("ProjectElementID")!=null && !StringUtils.isEmpty(String.valueOf(r.get("ProjectElementID")))).collect(Collectors.toList());
-        List<Integer> projectIds = resultList.stream().map(r -> Integer.valueOf(String.valueOf(r.get("ProjectId")))).distinct().collect(Collectors.toList());
-        projectIds.add(-1);
+        List<Integer> taskIds = resultList.stream().map(r -> Integer.valueOf(String.valueOf(r.get("TaskId")))).distinct().collect(Collectors.toList());
+        taskIds.add(-1);
         //提前推送项目工时(工时管家相关项目任务分组阶段下任务作为SAP服务 预算工时数据推送到SAP)
         //只推送需要推送日报参与的部分就可以了
-        List<Map<String, Object>> pushProjectPlanHour = reportMapper.getProjectPlanData(companyId,projectIds,null,null);
+        List<Map<String, Object>> pushProjectPlanHour = reportMapper.getProjectPlanData(companyId,taskIds,null,null);
         ExecutorService executor = Executors.newFixedThreadPool(1);
         /*execute()让线程池中的线程来执行业务,每次调用都会将一个线程加入到就绪队列*/
         List<Map<String, Object>> finalResultList = resultList;

+ 8 - 11
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -516,18 +516,15 @@ public class TimingTask {
                     leaveSheet.setLeaveType(leaveType);
                     leaveSheet.setProcinstId(String.valueOf(map.get("id")));
                     leaveSheet.setGmtFinished(String.valueOf(map.get("gmtFinished")));
-                    //看看是否已经存在:同一个人,同一段时间,同样的请假时长则视为同一条记录
-                    Optional<LeaveSheet> first = oldLeaveSheetList.stream().filter(ol -> ol.getStartDate().isEqual(leaveSheet.getStartDate())&&ol.getEndDate().isEqual(leaveSheet.getEndDate())&& ol.getOwnerId().equals(leaveSheet.getOwnerId())&&ol.getTimeHours().equals(leaveSheet.getTimeHours())).findFirst();
-                    if(first.isPresent()){
-                        leaveSheet.setId(first.get().getId());
-                    }
                     leaveSheetList.add(leaveSheet);
                 }
             }
             if(leaveSheetList.size()>0){
-                leaveSheetService.saveOrUpdateBatch(leaveSheetList);
+                //删除老数据
+                leaveSheetMapper.delete(new QueryWrapper<LeaveSheet>().eq("company_id",compId));
+                leaveSheetService.saveBatch(leaveSheetList);
             }
-            System.out.println(leaveRecordList);
+            System.out.println("定时任务:共同步到"+leaveRecordList.size()+"条请假数据");
             //Todo: 获取出差数据
             HttpRespMsg travelRecordMsg = dockWithMLD.getResult("http://10.1.10.51:20175/api/cube/restful/interface/getModeDataPageList/getTravelRecord", jsonString);
             List<Map<String,Object>> travelRecordList= (List<Map<String, Object>>) travelRecordMsg.data;
@@ -1701,12 +1698,12 @@ public class TimingTask {
         for (TimeType timeType : timeTypeList) {
             Integer companyId = timeType.getCompanyId();
             //提前推送项目工时(工时管家相关项目任务分组阶段下任务作为SAP服务 预算工时数据推送到SAP)
-            List<Map<String, Object>> mapList = reportMapper.getPushProjectReportToSap(companyId,df.format(date.minusDays(1)),df.format(date.minusDays(1)), null);
+            List<Map<String, Object>> mapList = reportMapper.getPushProjectReportToSap(companyId,df.format(date.minusDays(1)),df.format(date.minusDays(1)), null,null);
             //过滤服务code为空的数据
             mapList=mapList.stream().filter(r->r.get("ProjectElementID")!=null && !StringUtils.isEmpty(String.valueOf(r.get("ProjectElementID")))).collect(Collectors.toList());
-            List<Integer> projectIds = mapList.stream().map(r -> Integer.valueOf(String.valueOf(r.get("ProjectId")))).distinct().collect(Collectors.toList());
-            projectIds.add(-1);
-            List<Map<String, Object>> pushProjectPlanHour = reportMapper.getProjectPlanData(companyId,projectIds,null,null);
+            List<Integer> taskIds = mapList.stream().map(r -> Integer.valueOf(String.valueOf(r.get("TaskId")))).distinct().collect(Collectors.toList());
+            taskIds.add(-1);
+            List<Map<String, Object>> pushProjectPlanHour = reportMapper.getProjectPlanData(companyId,taskIds,null,null);
             //多加一个作为预算工时推送
             ExecutorService executor = Executors.newFixedThreadPool(1);
             List<Map<String, Object>> finalMapList = mapList;

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/util/DockWithMLD.java

@@ -112,7 +112,7 @@ public class DockWithMLD {
                 }
                 httpRespMsg.data=resultList;
                 //todo 这里处理返回信息
-                System.out.println("成功"+ resulString);
+                System.out.println("成功"+ (resulString.length()>100?resulString.substring(0,100)+"...":resulString));
             }else{
                 System.out.println("获取数据失败,请查看日志"+currentDate+" "+currentTime);
             }

+ 35 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/LeaveSheetFvMapper.xml

@@ -0,0 +1,35 @@
+<?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.management.platform.mapper.LeaveSheetFvMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.LeaveSheetFv">
+        <id column="id" property="id" />
+        <result column="company_id" property="companyId" />
+        <result column="owner_id" property="ownerId" />
+        <result column="owner_name" property="ownerName" />
+        <result column="start_date" property="startDate" />
+        <result column="end_date" property="endDate" />
+        <result column="leave_type" property="leaveType" />
+        <result column="status" property="status" />
+        <result column="remark" property="remark" />
+        <result column="operator_id" property="operatorId" />
+        <result column="time_hours" property="timeHours" />
+        <result column="time_days" property="timeDays" />
+        <result column="indate" property="indate" />
+        <result column="time_type" property="timeType" />
+        <result column="tel" property="tel" />
+        <result column="auditor_id" property="auditorId" />
+        <result column="auditor_name" property="auditorName" />
+        <result column="auditor_type" property="auditorType" />
+        <result column="procinst_id" property="procinstId" />
+        <result column="gmt_finished" property="gmtFinished" />
+        <result column="cur_audit_setting_id" property="curAuditSettingId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, company_id, owner_id, owner_name, start_date, end_date, leave_type, status, remark, operator_id, time_hours, time_days, indate, time_type, tel, auditor_id, auditor_name, auditor_type, procinst_id, gmt_finished, cur_audit_setting_id
+    </sql>
+
+</mapper>

+ 5 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml

@@ -976,7 +976,7 @@
     <select id="getPushProjectReportToSap" resultType="java.util.Map">
         select r.id as ReportId, u.job_number as EmployeeID,r.create_date as StartDate,r.create_date as EndDate,r.start_time as StartTime,r.end_time as EndTime,
         r.working_time as Duration,t.sap_task_code as ProjectElementID,
-        sps.service_code as ServiceProductInternalID,r.content as WorkDescriptionText,p.id as ProjectId
+        sps.service_code as ServiceProductInternalID,r.content as WorkDescriptionText,t.id as TaskId
         from report r
         left join user u on u.id=r.creator_id
         left join department d on u.department_id=d.department_id
@@ -992,6 +992,9 @@
         <if test="userId!=null and userId!=''">
             and r.creator_id=#{userId}
         </if>
+        <if test="reportId!=null">
+            and r.id=#{reportId}
+        </if>
     </select>
 
     <select id="getSumWorkingTime" resultType="com.management.platform.entity.Report">
@@ -1031,7 +1034,7 @@
         and t.plan_hours is not null
         and te.service_id is not null
         and u.job_number is not null
-        and p.id in
+        and t.id in
         <foreach collection="list" open="(" separator="," close=")" item="item">
             #{item}
         </foreach>

TEMPAT SAMPAH
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/多项目任务模板.xlsx


+ 5 - 3
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -257,6 +257,7 @@
 
                                                     <!--每个项目上单独审核 -->
                                                     <span style="float:right;">
+                                                        <el-button type="primary" size="small" v-if="item2.state == 1&&user.companyId==3092&&user.timeType.pushReportData == 1 && permissions.reportPush" :underline="false" @click="pushWorkTime(item2.id)">{{'推送'}}</el-button>
                                                         <el-button v-if="item2.state == 0 && (((permissions.projectReportReview || user.id == item2.projectAuditorId) && item2.isDeptAudit==0 && item2.projectAuditState==0) || (item2.isDeptAudit==1 && item2.auditDeptManagerid == user.id))" type="primary" :loading="logining" 
                                                         size="small" @click="approve(item1.id, item2)">{{$t('btn.through')}}</el-button>
                                                         <el-button v-if="item2.state == 0 && (((permissions.projectReportReview ||user.id == item2.projectAuditorId) && item2.isDeptAudit==0 && item2.projectAuditState==0) || (item2.isDeptAudit==1 && item2.auditDeptManagerid == user.id))" type="danger" :loading="logining" 
@@ -3560,13 +3561,13 @@
                 this.selectProject(itemDomain, newIndex);
             },
 
-    pushWorkTime(){
+    pushWorkTime(reportId){
         let url=''
         if(this.user.timeType.syncSap == 1){
             url='/report/pushProjectReportToSap'
             let day = (this.choseDay+1) > 9 ? "-" + (this.choseDay + 1) : "-0" + (this.choseDay + 1);
             var pushDate = this.date + day;
-            this.$confirm('确认推送'+pushDate+'的工时?', '提示', {
+            this.$confirm(reportId?'确认推送当前工时?':('确认推送'+pushDate+'的工时?'), '提示', {
           confirmButtonText: '确定',
           cancelButtonText: '取消',
           type: 'info'
@@ -3578,7 +3579,8 @@
                 background: 'rgba(0, 0, 0, 0.7)'
             });
             this.http.post(url,{
-                pushDate: pushDate
+                pushDate: pushDate,
+                reportId: reportId
             },res => {
                 loading.close();
                 if(res.code == 'ok'){