Explorar o código

填报及时率修改

yurk %!s(int64=2) %!d(string=hai) anos
pai
achega
033a20eff2

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

@@ -1006,5 +1006,11 @@ public class ProjectController {
     public HttpRespMsg removeDuplicateParticipators(Integer companyId, HttpServletRequest request){
         return projectService.removeDuplicateParticipators(companyId,request);
     }
+
+    //todo 同步项目相关数据
+    @RequestMapping("/synchronizationProject")
+    public HttpRespMsg synchronizationProject(String dataJson){
+        return projectService.synchronizationProject(dataJson);
+    }
 }
 

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

@@ -190,4 +190,6 @@ public interface ProjectService extends IService<Project> {
     HttpRespMsg fixParticipators(Integer companyId, HttpServletRequest request);
 
     HttpRespMsg removeDuplicateParticipators(Integer companyId, HttpServletRequest request);
+
+    HttpRespMsg synchronizationProject(String dataJson);
 }

+ 97 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -1,16 +1,27 @@
 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.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
 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.util.*;
+import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicNameValuePair;
+import org.apache.http.util.EntityUtils;
 import org.apache.poi.EncryptedDocumentException;
 import org.apache.poi.hssf.usermodel.HSSFCell;
 import org.apache.poi.hssf.usermodel.HSSFRow;
@@ -164,6 +175,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     OperationRecordService operationRecordService;
     @Resource
     ProjectBasecostService projectBasecostService;
+    @Resource
+    ThirdPartyInterfaceService thirdPartyInterfaceService;
+    @Resource
+    ProjectSeparateService projectSeparateService;
 
 
     @Resource
@@ -973,11 +988,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return m;
     }
 
-    public static void main(String[] args) {
-        String startDate = "2020-12-01";
-        String endDate = "2021-01-31";
-    }
-
     private List<Integer> getBranchDepartment(Integer departmentId, List<Department> departmentList) {
         List<Integer> list = new ArrayList<>();
         list.add(departmentId);
@@ -5298,6 +5308,10 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 }else{
                     divide=new BigDecimal(0);
                 }
+                if(divide.compareTo(new BigDecimal(1))==1){
+                    divide=new BigDecimal(1);
+                    log.error("填报及时率数据异常:==="+user.getName());
+                }
                 String number = dft.format(divide);
                 timelinessRateVO.setTimelinessRate(String.valueOf(number));
             }
@@ -6333,6 +6347,84 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         return msg;
     }
 
+    @Override
+    public HttpRespMsg synchronizationProject(String dataJson) {
+        JSONObject jsonObject = JSON.parseObject(dataJson);
+        JSONObject header = (JSONObject) jsonObject.get("header");
+        String token = String.valueOf(header.get("token"));
+        List<Project> projectList = JSON.parseArray(String.valueOf(jsonObject.get("projectArrays")), Project.class);
+        List<ProjectSeparate> projectSeparateList = JSON.parseArray(String.valueOf(jsonObject.get("projectSeparateArrays")), ProjectSeparate.class);
+        HttpRespMsg msg=new HttpRespMsg();
+        List<ThirdPartyInterface> thirdPartyInterfaceList = thirdPartyInterfaceService.list(new QueryWrapper<ThirdPartyInterface>().eq("token", token));
+        if(thirdPartyInterfaceList.size()==0){
+            msg.setError("token错误");
+            return msg;
+        }
+        ThirdPartyInterface thirdPartyInterface = thirdPartyInterfaceList.get(0);
+        if(LocalDateTime.now().isAfter(thirdPartyInterface.getExpireTime())){
+            msg.setError("token过期失效");
+            return msg;
+        }
+        List<Project> allProject = projectMapper.selectList(new QueryWrapper<Project>().eq("company_id", thirdPartyInterface.getCompanyId()));
+        String message="";
+        if(projectList!=null &&projectList.size()>0){
+            List<Project> changeProjectList=new ArrayList<>();
+            for (Project project : projectList) {
+                Optional<Project> first = allProject.stream().filter(ap -> ap.getProjectCode().equals(project.getProjectCode())).findFirst();
+                if(first.isPresent()){
+                    project.setId(first.get().getId());
+                    changeProjectList.add(project);
+                }
+            }
+            if(updateBatchById(changeProjectList)){
+                message+="成功更新"+changeProjectList.size()+"条项目数据";
+            }
+        }
+        if(projectSeparateList!=null&&projectSeparateList.size()>0){
+            if(projectSeparateService.updateBatchById(projectSeparateList)){
+                message+="成功更新"+projectSeparateList.size()+"条项目子表数据";
+            }
+        }
+        msg.data=message;
+        return msg;
+    }
+
+    public static void main(String[] args) {
+        Map params = new HashMap<>();
+        Map paramDataJson = new HashMap<>();
+        JSONArray projectArrays= new JSONArray();
+        Map header=new HashMap();
+        header.put("token","123456789");
+        paramDataJson.put("header",header);
+        JSONObject project=new JSONObject();
+        project.put("id",246);
+        project.put("projectName",1000);
+        projectArrays.add(project);
+        paramDataJson.put("projectArrays",projectArrays);
+        params.put("dataJson",paramDataJson);
+        //装填参数
+        List nvps = new ArrayList();
+        if(params!=null){
+            params.forEach((key, value) -> nvps.add(new BasicNameValuePair((String) key, JSONObject.toJSONString(value))));
+        }
+        System.out.println(nvps);
+        CloseableHttpResponse response;// 响应类
+        CloseableHttpClient httpClient = HttpClients.createDefault();
+        HttpPost httpPost=new HttpPost("http://localhost:10010/project/synchronizationProject");
+        httpPost.addHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
+        try {
+            httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
+            response = httpClient.execute(httpPost);
+            if (response != null && response.getEntity() != null) {
+                //返回信息
+                String resulString = EntityUtils.toString(response.getEntity());
+                //todo 这里处理返回信息
+                System.out.println("成功"+ resulString);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 
     private List<Department> getSubDepts(Department dp, List<Department> list) {
         List<Department> collect = list.stream().filter(l -> dp.getDepartmentId().equals(l.getSuperiorId())).collect(Collectors.toList());

+ 10 - 11
fhKeeper/formulahousekeeper/management-platform/src/main/resources/logback.xml

@@ -3,7 +3,7 @@
     <!-- 日志存放路径 ./表示当前运行目录-->
 	<property name="log.path" value="./" />
     <!-- 日志输出格式 -->
-	<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
+	<property name="log.pattern" value="%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
 
 	<!-- 控制台输出 -->
 	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
@@ -18,21 +18,21 @@
         <!-- 循环政策:基于时间创建日志文件 -->
 		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <!-- 日志文件名格式 -->
-			<fileNamePattern>${log.path}/workTime.%d{yyyy-MM-dd}.log</fileNamePattern>
-			<!-- 日志最大的历史 60天 -->
-			<maxHistory>2</maxHistory>
+			<fileNamePattern>${log.path}/workTime.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
+			<!-- 日志最大的历史 2天 -->
+			<maxHistory>7</maxHistory>
 		</rollingPolicy>
 		<encoder>
 			<pattern>${log.pattern}</pattern>
 		</encoder>
-		<filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <!-- 过滤的级别 -->
+<!--	<filter class="ch.qos.logback.classic.filter.LevelFilter">
+            &lt;!&ndash; 过滤的级别 &ndash;&gt;
             <level>DEBUG</level>
-            <!-- 匹配时的操作:接收(记录) -->
+            &lt;!&ndash; 匹配时的操作:接收(记录) &ndash;&gt;
             <onMatch>ACCEPT</onMatch>
-            <!-- 不匹配时的操作:拒绝(不记录) -->
+            &lt;!&ndash; 不匹配时的操作:拒绝(不记录) &ndash;&gt;
             <onMismatch>DENY</onMismatch>
-        </filter>
+        </filter>-->
 	</appender>
 	
 	<!--<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
@@ -49,7 +49,7 @@
         </encoder>
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
             &lt;!&ndash; 过滤的级别 &ndash;&gt;
-            <level>ERROR</level>
+            <level>DEBUG</level>
 			&lt;!&ndash; 匹配时的操作:接收(记录) &ndash;&gt;
             <onMatch>ACCEPT</onMatch>
 			&lt;!&ndash; 不匹配时的操作:拒绝(不记录) &ndash;&gt;
@@ -83,7 +83,6 @@
 	<!--系统操作日志-->
     <root level="info">
         <appender-ref ref="file_info" />
-        <!--<appender-ref ref="file_error" />-->
     </root>
 	
 	<!--系统用户操作日志-->