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

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

seyason преди 1 година
родител
ревизия
0f0457b3cd
променени са 20 файла, в които са добавени 355 реда и са изтрити 41 реда
  1. 2 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  2. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java
  3. 21 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportPushLogController.java
  4. 61 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ReportPushLog.java
  5. 7 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java
  6. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ReportPushLogMapper.java
  7. 16 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportPushLogService.java
  8. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  9. 20 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportPushLogServiceImpl.java
  10. 18 20
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  11. 97 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java
  12. 4 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/EmployeeTime.java
  13. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/Period.java
  14. 3 2
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportMapper.xml
  15. 19 0
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportPushLogMapper.xml
  16. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TimeTypeMapper.xml
  17. 19 6
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanProcedureTotalServiceImpl.java
  18. 2 2
      fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanServiceImpl.java
  19. 33 1
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/component/planComponent.vue
  20. 12 2
      fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/todayPlan/todayPlan.vue

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

@@ -1406,6 +1406,8 @@ public class ProjectController {
         return  projectService.getFunWorkContextList(id);
     }
 
+
+    //同步SAP项目数据到工时管家
     @RequestMapping("/syncProjectWithSap")
     @Transactional
     public HttpRespMsg syncProjectWithSap(String startDate,String endDate){

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

@@ -2166,7 +2166,7 @@ public class ReportController {
     }
 
 
-    //推送工时到sap
+    //推送工时管家工时考勤数据到SAP
     @RequestMapping("/pushProjectReportToSap")
     public HttpRespMsg pushProjectReportToSap(String startDate,String endDate,String userId){
         return reportService.pushProjectReportToSap(startDate,endDate,userId);

+ 21 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportPushLogController.java

@@ -0,0 +1,21 @@
+package com.management.platform.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-11-17
+ */
+@RestController
+@RequestMapping("/report-push-log")
+public class ReportPushLogController {
+
+}
+

+ 61 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/ReportPushLog.java

@@ -0,0 +1,61 @@
+package com.management.platform.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+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 2023-11-17
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class ReportPushLog extends Model<ReportPushLog> {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 推送日报id
+     */
+    @TableField("report_id")
+    private Integer reportId;
+
+    /**
+     * 推送时间
+     */
+    @TableField("push_time")
+    private LocalDateTime pushTime;
+
+    /**
+     * 推送目标系统
+     */
+    @TableField("target_system")
+    private String targetSystem;
+
+    /**
+     * 公司id
+     */
+    @TableField("company_id")
+    private Integer companyId;
+
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+}

+ 7 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/TimeType.java

@@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2023-11-16
+ * @since 2023-11-17
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -516,6 +516,12 @@ public class TimeType extends Model<TimeType> {
     @TableField("fill_month_on_day")
     private Integer fillMonthOnDay;
 
+    /**
+     * 同步对接sap系统 0-否 1-是
+     */
+    @TableField("sync_sap")
+    private Integer syncSap;
+
 
     @Override
     protected Serializable pkVal() {

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

@@ -0,0 +1,16 @@
+package com.management.platform.mapper;
+
+import com.management.platform.entity.ReportPushLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-11-17
+ */
+public interface ReportPushLogMapper extends BaseMapper<ReportPushLog> {
+
+}

+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ReportPushLogService.java

@@ -0,0 +1,16 @@
+package com.management.platform.service;
+
+import com.management.platform.entity.ReportPushLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-11-17
+ */
+public interface ReportPushLogService extends IService<ReportPushLog> {
+
+}

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

@@ -11262,6 +11262,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return msg;
     }
 
+    //同步SAP项目服务数据到工时管家
     private void syncServiceData(String startDate, String endDate, Integer companyId) {
         List<ReportExtraDegree> extraDegrees = reportExtraDegreeService.list(new QueryWrapper<ReportExtraDegree>().eq("company_id", companyId));
         //配置请求xml

+ 20 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportPushLogServiceImpl.java

@@ -0,0 +1,20 @@
+package com.management.platform.service.impl;
+
+import com.management.platform.entity.ReportPushLog;
+import com.management.platform.mapper.ReportPushLogMapper;
+import com.management.platform.service.ReportPushLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author Seyason
+ * @since 2023-11-17
+ */
+@Service
+public class ReportPushLogServiceImpl extends ServiceImpl<ReportPushLogMapper, ReportPushLog> implements ReportPushLogService {
+
+}

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

@@ -3,17 +3,16 @@ package com.management.platform.service.impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.management.platform.controller.ReportController;
 import com.management.platform.entity.*;
 import com.management.platform.entity.vo.*;
 import com.management.platform.mapper.*;
 import com.management.platform.service.*;
-import com.management.platform.task.SFTPAsyncUploader;
 import com.management.platform.util.*;
 import com.management.platform.webservice.po.*;
-import com.management.platform.webservice.po.Period;
+import com.management.platform.webservice.po.SapPeriod;
 import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
@@ -21,40 +20,28 @@ import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
 import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
 import org.apache.commons.io.FileUtils;
 import org.apache.poi.EncryptedDocumentException;
-import org.apache.poi.hssf.usermodel.*;
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.*;
-import org.apache.velocity.runtime.directive.contrib.For;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.web.client.RestTemplateBuilder;
 import org.springframework.http.*;
 import org.springframework.http.client.ClientHttpResponse;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
-import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.client.DefaultResponseErrorHandler;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
-import sun.net.www.http.HttpClient;
 
 import javax.annotation.Resource;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
 import javax.servlet.http.HttpServletRequest;
-import javax.swing.text.html.Option;
 import java.io.*;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
 import java.sql.Timestamp;
 import java.text.DateFormat;
 import java.text.DecimalFormat;
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.*;
 import java.time.format.DateTimeFormatter;
@@ -67,8 +54,6 @@ import java.util.concurrent.Executor;
 import java.util.concurrent.Executors;
 import java.util.stream.Collectors;
 
-import static org.springframework.boot.system.SystemProperties.get;
-
 /**
  * <p>
  * 服务实现类
@@ -217,6 +202,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     private TimeTypeService timeTypeService;
     @Resource
     private HttpServletRequest request;
+    @Resource
+    private ReportPushLogService reportPushLogService;
 
     @Value(value = "${upload.path}")
     private String path;
@@ -7056,14 +7043,17 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         List<Map<String,Object>> resultList=reportMapper.getPushProjectReportToSap(companyId,startDate,endDate,userId);
         //配置xml请求参数
-        //配置xml请求参数
         XmlRequestData xmlRequestData=new XmlRequestData();
         EmployeeTime employeeTime=new EmployeeTime();
         WorkDescriptionText workDescriptionText=new WorkDescriptionText();
         workDescriptionText.setLanguageCode("ZH");
-        Period datePeriod=new Period();
-        Period timePeriod=new Period();
+        SapPeriod datePeriod=new SapPeriod();
+        SapPeriod timePeriod=new SapPeriod();
         for (Map<String, Object> map : resultList) {
+            ReportPushLog one = reportPushLogService.getOne(new LambdaQueryWrapper<ReportPushLog>().eq(ReportPushLog::getCompanyId, companyId).eq(ReportPushLog::getReportId, map.get("ReportId")).eq(ReportPushLog::getTargetSystem,"SAP"));
+            if(one!=null){
+                continue;
+            }
             employeeTime.setEmployeeID(String.valueOf(map.get("EmployeeID")));
             employeeTime.setActionCode("01");
             if(map.get("StartDate")!=null){
@@ -7080,8 +7070,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             }
             employeeTime.setDatePeriod(datePeriod);
             employeeTime.setTimePeriod(timePeriod);
+            employeeTime.setItemTypeCode("CN0001");
             employeeTime.setDuration(map.get("Duration")==null?"0":String.valueOf(map.get("Duration")));
             employeeTime.setProjectElementID(String.valueOf(map.get("ProjectElementID")));
+            employeeTime.setServiceProductInternalID(String.valueOf(map.get("ServiceProductInternalID")));
             if(map.get("WorkDescriptionText")!=null){
                 workDescriptionText.setWorkDescriptionText(String.valueOf(map.get("WorkDescriptionText")));
                 employeeTime.setWorkDescriptionText(workDescriptionText);
@@ -7116,6 +7108,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             if(StringUtils.isEmpty(xmlResponseData.getEmployeeTime().getUUID())){
                 log.error("推送失败===》工号:"+employeeTime.getEmployeeID());
                 continue;
+            }else {
+                //推送成功 日报数据打上标记
+                ReportPushLog reportPushLog=new ReportPushLog();
+                reportPushLog.setCompanyId(companyId);
+                reportPushLog.setReportId(Integer.valueOf(String.valueOf(map.get("ReportId"))));
+                reportPushLog.setTargetSystem("SAP");
             }
         }
         return httpRespMsg;

+ 97 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -3,6 +3,7 @@ package com.management.platform.task;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.injector.methods.SelectById;
 import com.management.platform.controller.WeiXinCorpController;
@@ -15,6 +16,7 @@ import com.management.platform.service.impl.WxCorpInfoServiceImpl;
 import com.management.platform.util.*;
 import com.management.platform.webservice.po.*;
 import jdk.nashorn.internal.ir.ContinueNode;
+import lombok.extern.slf4j.Slf4j;
 import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
 import me.chanjar.weixin.mp.api.WxMpService;
 import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
@@ -36,6 +38,7 @@ import java.io.File;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.security.SecureRandom;
+import java.sql.Time;
 import java.sql.Timestamp;
 import java.text.DecimalFormat;
 import java.time.*;
@@ -60,6 +63,7 @@ import static org.apache.logging.log4j.message.ParameterizedMessage.format;
  */
 @EnableScheduling
 @Component
+@Slf4j
 public class TimingTask {
     //是否是开发环境
     @Value("${configEnv.isDev}")
@@ -127,6 +131,8 @@ public class TimingTask {
     @Resource
     private BusinessTripMapper businessTripMapper;
     @Resource
+    private ReportPushLogService reportPushLogService;
+    @Resource
     private SysConfigMapper sysConfigMapper;
     @Resource
     private ThirdPartyInterfaceMapper thirdPartyInterfaceMapper;
@@ -1580,4 +1586,95 @@ public class TimingTask {
         System.out.println(result);
         XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
     }
+
+    //每天凌晨 2:00 推送前2天审核通过的日报  工时管家---->SAP
+    @Scheduled(cron = "0 0 2 ? * *")
+    public void pushReportToSap(){
+        DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        List<TimeType> timeTypeList = timeTypeMapper.selectList(new QueryWrapper<TimeType>().eq("sync_sap",1));
+        LocalDate date=LocalDate.now();
+        for (TimeType timeType : timeTypeList) {
+            Integer companyId = timeType.getCompanyId();
+            List<Map<String, Object>> mapList = reportMapper.getPushProjectReportToSap(companyId, date.minusDays(2).format(df), date.format(df), null);
+            List<ReportPushLog> addList=new ArrayList<>();
+            //配置xml请求参数
+            XmlRequestData xmlRequestData=new XmlRequestData();
+            EmployeeTime employeeTime=new EmployeeTime();
+            WorkDescriptionText workDescriptionText=new WorkDescriptionText();
+            workDescriptionText.setLanguageCode("ZH");
+            SapPeriod datePeriod=new SapPeriod();
+            SapPeriod timePeriod=new SapPeriod();
+            for (Map<String, Object> map : mapList) {
+                ReportPushLog one = reportPushLogService.getOne(new LambdaQueryWrapper<ReportPushLog>().eq(ReportPushLog::getCompanyId, companyId).eq(ReportPushLog::getReportId, map.get("ReportId")).eq(ReportPushLog::getTargetSystem,"SAP"));
+                if(one!=null){
+                    continue;
+                }
+                employeeTime.setEmployeeID(String.valueOf(map.get("EmployeeID")));
+                employeeTime.setActionCode("01");
+                if(map.get("StartDate")!=null){
+                    datePeriod.setStartDate(String.valueOf(map.get("StartDate")));
+                }
+                if(map.get("EndDate")!=null){
+                    datePeriod.setEndDate(String.valueOf(map.get("EndDate")));
+                }
+                if(map.get("StartTime")!=null){
+                    timePeriod.setStartTime(String.valueOf(map.get("StartTime")));
+                }
+                if(map.get("EndTime")!=null){
+                    timePeriod.setEndTime(String.valueOf(map.get("EndTime")));
+                }
+                employeeTime.setDatePeriod(datePeriod);
+                employeeTime.setTimePeriod(timePeriod);
+                employeeTime.setItemTypeCode("CN0001");
+                employeeTime.setDuration(map.get("Duration")==null?"0":String.valueOf(map.get("Duration")));
+                employeeTime.setProjectElementID(String.valueOf(map.get("ProjectElementID")));
+                employeeTime.setServiceProductInternalID(String.valueOf(map.get("ServiceProductInternalID")));
+                if(map.get("WorkDescriptionText")!=null){
+                    workDescriptionText.setWorkDescriptionText(String.valueOf(map.get("WorkDescriptionText")));
+                    employeeTime.setWorkDescriptionText(workDescriptionText);
+                }
+                xmlRequestData.setEmployeeTime(employeeTime);
+                String xml = CommonUtils.convertToXml(xmlRequestData);
+                System.out.println(xml);
+                xml=xml.substring(xml.indexOf("<XMLDATA>")+9,xml.lastIndexOf("</XMLDATA>"));
+                StringBuffer sb = new StringBuffer();
+                sb.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:glob=\"http://sap.com/xi/SAPGlobal20/Global\">\n" +
+                        "   <soapenv:Header/>\n" +
+                        "   <soapenv:Body>\n" +
+                        "      <glob:EmployeeTimeAsBundleMaintainRequest_sync>\n");
+                sb.append(xml);
+                sb.append("      </glob:EmployeeTimeAsBundleMaintainRequest_sync>\n" +
+                        "   </soapenv:Body>\n" +
+                        "</soapenv:Envelope>");
+                System.out.println(sb.toString());
+                String result = "";
+                try {
+                    result = WebServiceUtils.requestByXml("https://my602728.sapbyd.cn/sap/bc/srt/scs/sap/queryprojectin?sap-vhost=my602728.sapbyd.cn", sb.toString(), 0, "_BYDHOST", "Welcome1");
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+                if(!StringUtils.isEmpty(result)) {
+                    result = result.substring(result.indexOf("<soap-env:Body>")+15, result.lastIndexOf("</soap-env:Body>"));
+                    result = result.substring(result.indexOf(">")+1, result.lastIndexOf("</n0:EmployeeTimeAsBundleMaintainConfirmation_sync>"));
+                    result="<XMLDATA>"+result+"</XMLDATA>";
+                }
+                System.out.println(result);
+                XmlResponseData xmlResponseData = (XmlResponseData) CommonUtils.convertXmlStrToObject(XmlResponseData.class, result);
+                if(StringUtils.isEmpty(xmlResponseData.getEmployeeTime().getUUID())){
+                    log.error("推送失败===》工号:"+employeeTime.getEmployeeID());
+                    continue;
+                }else {
+                    //推送成功 日报数据打上标记
+                    ReportPushLog reportPushLog=new ReportPushLog();
+                    reportPushLog.setCompanyId(companyId);
+                    reportPushLog.setReportId(Integer.valueOf(String.valueOf(map.get("ReportId"))));
+                    reportPushLog.setTargetSystem("SAP");
+                    addList.add(reportPushLog);
+                }
+            }
+            if(addList.size()>0){
+                reportPushLogService.saveBatch(addList);
+            }
+        }
+    }
 }

+ 4 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/EmployeeTime.java

@@ -10,8 +10,8 @@ public class EmployeeTime {
 
     private String employeeID;
     private String itemTypeCode;
-    private Period datePeriod;
-    private Period timePeriod;
+    private SapPeriod datePeriod;
+    private SapPeriod timePeriod;
     private String duration;
     private String projectElementID;
     private String serviceProductInternalID;
@@ -33,12 +33,12 @@ public class EmployeeTime {
 
 
     @XmlElement(name = "DatePeriod")
-    public Period getDatePeriod() {
+    public SapPeriod getDatePeriod() {
         return datePeriod;
     }
 
     @XmlElement(name = "TimePeriod")
-    public Period getTimePeriod() {
+    public SapPeriod getTimePeriod() {
         return timePeriod;
     }
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/webservice/po/Period.java

@@ -5,7 +5,7 @@ import lombok.Data;
 import javax.xml.bind.annotation.XmlElement;
 
 @Data
-public class Period {
+public class SapPeriod {
 
     private String startDate;
     private String endDate;

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

@@ -950,7 +950,7 @@
     </select>
 
     <select id="getPushProjectReportToSap" resultType="java.util.Map">
-        select 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,tg.task_group_code as ProjectElementID,
+        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,tg.task_group_code as ProjectElementID,
         red.code as ServiceProductInternalID,r.content as WorkDescriptionText
         from report r
         left join user u on u.id=r.creator_id
@@ -958,7 +958,8 @@
         left join task t on t.id=r.task_id
         left join task_group tg on tg.id=t.group_id
         left join report_extra_degree red on red.id=r.degree_id
-        where r.company_id=#{companyId}
+        where r.state=1
+        and r.company_id=#{companyId}
         <if test="startDate!=null and startDate!='' and endDate!=null and endDate!=''">
             and r.create_date between #{startDate} and #{endDate}
         </if>

+ 19 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ReportPushLogMapper.xml

@@ -0,0 +1,19 @@
+<?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.ReportPushLogMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.management.platform.entity.ReportPushLog">
+        <id column="id" property="id" />
+        <result column="report_id" property="reportId" />
+        <result column="push_time" property="pushTime" />
+        <result column="target_system" property="targetSystem" />
+        <result column="company_id" property="companyId" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, report_id, push_time, target_system, company_id
+    </sql>
+
+</mapper>

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


+ 19 - 6
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanProcedureTotalServiceImpl.java

@@ -106,17 +106,30 @@ public class PlanProcedureTotalServiceImpl extends ServiceImpl<PlanProcedureTota
             if(planSteelStampNumber.getSteelStampNumberEnd().equals(planSteelStampNumber.getSteelStampNumberStart())){
                 list.add(planSteelStampNumber.getSteelStampNumberStart());
             }else {
-                if(!planSteelStampNumber.getSteelStampNumberStart().matches("\\d+")||!planSteelStampNumber.getSteelStampNumberEnd().matches("\\d+")){
+                //获取公有部分
+                char[] chars = planSteelStampNumber.getSteelStampNumberStart().toCharArray();
+                char[] chars2 = planSteelStampNumber.getSteelStampNumberEnd().toCharArray();
+                int indexFor=0;
+                for (int i = 0; i < chars.length; i++) {
+                    if(chars[i]!=chars2[i]){
+                        indexFor+=i;
+                        break;
+                    }
+                }
+                String allHasString=planSteelStampNumber.getSteelStampNumberStart().substring(0,indexFor);
+                String start=planSteelStampNumber.getSteelStampNumberStart().substring(indexFor);
+                String end=planSteelStampNumber.getSteelStampNumberEnd().substring(indexFor);
+                //判断是否都是纯数字
+                if(!start.matches("\\d+")||!end.matches("\\d+")){
                     list.add(planSteelStampNumber.getSteelStampNumberStart());
                     list.add(planSteelStampNumber.getSteelStampNumberEnd());
                 }else {
-                    int index=Integer.valueOf(planSteelStampNumber.getSteelStampNumberStart());
-                    list.add(String.valueOf(index));
-                    list.add(String.valueOf(planSteelStampNumber.getSteelStampNumberEnd()));
-                    while (Integer.valueOf(planSteelStampNumber.getSteelStampNumberEnd())>index){
-                        list.add(String.valueOf(index));
+                    int index=Integer.valueOf(start);
+                    while (Integer.valueOf(end)>index){
+                        list.add(allHasString+String.valueOf(index));
                         index++;
                     }
+                    list.add(allHasString+end);
                 }
             }
         }

+ 2 - 2
fhKeeper/formulahousekeeper/management-workshop/src/main/java/com/management/platform/service/impl/PlanServiceImpl.java

@@ -130,10 +130,10 @@ public class PlanServiceImpl extends ServiceImpl<PlanMapper, Plan> implements Pl
         }else {
             LocalDate now = LocalDate.now();
             if(planType==0&&isMob==1){
-                queryWrapper.and(wrapper->wrapper.eq(Plan::getStartDate,now).eq(Plan::getHideState,0).or().inSql(Plan::getId,"select ppt1.plan_id \n" +
+                queryWrapper.and(wrapper->wrapper.eq(Plan::getStartDate,now).or().inSql(Plan::getId,"select ppt1.plan_id \n" +
                         "from  plan_procedure_total ppt1\n" +
                         "left join prod_procedure_team  ppt on ppt.plan_procedure_id=ppt1.id\n" +
-                        "where ppt.progress<100"));
+                        "where ppt.progress<100")).eq(Plan::getHideState,0);
             }else {
                 queryWrapper.eq(Plan::getStartDate,(planType==0||planType==2)?now:now.plusDays(1));
             }

+ 33 - 1
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/component/planComponent.vue

@@ -41,6 +41,9 @@
                   <div>每辆数量:</div><span class="textBeyondHiding">{{ item.product.vehicleNumber }}</span>
                 </div>
                 <div class="PlanItemBtn">
+                  <span class="text" @click="hidePlan(item.id,item.hideState)">
+                    {{ jisuanDate(item.startDate)>30 ? '隐藏' : ''}}
+                  </span>
                   <van-button type="info" size="small" @click="toDistribution(item)">派工单</van-button>
                 </div>
               </div>
@@ -109,6 +112,32 @@ export default {
           productName: item.productName,
         }
       })
+    },
+    jisuanDate(startDate){
+      let date1 = new Date(startDate);
+      let date2 = new Date();
+      date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());
+      date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());
+      const diff = date2.getTime() - date1.getTime(); //目标时间减去当前时间
+      const diffDate = diff / (24 * 60 * 60 * 1000);
+      return diffDate;
+    },
+    hidePlan(id,state){
+      this.$axios.post(
+          "/plan/hidePlan",
+            {
+              id:id,
+              state:state==0?1:0
+            },
+        ).then(res => {
+          if (res.code == "ok") {
+             this.$toast.success('隐藏成功');
+             this.$emit('planClick','')
+          } else {
+            this.$toast.clear();
+            this.$toast.fail(res.msg);
+          }
+        }).catch(err => { this.$toast.clear(); })
     }
   },
 };
@@ -219,8 +248,11 @@ export default {
         .PlanItemBtn {
           width: 100%;
           display: flex;
-          justify-content: flex-end;
+          justify-content: space-between;
           margin: 12px 0 0 0;
+          .text {
+            color: #1989fa;
+          }
         }
       }
     }

+ 12 - 2
fhKeeper/formulahousekeeper/timesheet-workshop-h5/src/views/planView/todayPlan/todayPlan.vue

@@ -2,7 +2,7 @@
   <div class="flexCoum">
     <van-nav-bar title="今日计划" left-text="返回" @click-left="back" fixed left-arrow />
     <div class="todayPlan flexCoum-box">
-      <PlanComponent :titleText="'今日计划'" :planList="planList" v-if="planList.length > 0"></PlanComponent>
+      <PlanComponent :titleText="'今日计划'" :planList="planList" v-if="planList.length > 0" @planClick="getPlanList"></PlanComponent>
       <van-empty description="暂无数据" v-else />
     </div>
   </div>
@@ -31,6 +31,11 @@ export default {
       this.$router.go(-1);
     },
     getPlanList() {
+      this.$toast.loading({
+        duration: 0, // 持续展示 toast
+        forbidClick: true,
+        message: '加载中...',
+      });
       this.$axios.post('/plan/list', {
         pageIndex: 0,
         pageSize: 10000,
@@ -41,7 +46,12 @@ export default {
       .then(res => {
         if (res.code == "ok") {
           res.data.records.forEach(item => { item.flg = false })
-          this.planList = res.data.records;
+          // this.planList = res.data.records;
+          this.planList = []
+          setTimeout(() => {
+            this.$set(this, 'planList', res.data.records)
+          }, 100)
+          this.$toast.clear();
         } else {
           this.$toast.clear();
           this.$toast.fail(res.msg);