Bläddra i källkod

Merge branch 'zhuwei' into dev

zhuwei 1 dag sedan
förälder
incheckning
d48b2a6a1a

+ 1 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/entity/ElementFormulaMapping.java

@@ -25,6 +25,7 @@ public class ElementFormulaMapping extends BaseEntity {
     @Size(max = 20)
     private Long wbsId;
     private Long projectId;
+    // 公式级别 0=元素库级别  1=WBS级别 2=WBS 节点级别 10=项目级别 20=项目节点级别 35=节点参数级别
     private Integer scope;
     private Long paramId;
 

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/ITaskService.java

@@ -137,6 +137,6 @@ public interface ITaskService extends BaseService<Task> {
 
     void logSaveAgain(LogSaveAgainDto dto) throws Exception;
 
-    //
+    //一键重签
     R reSigningEVisaByUserIds(String ids, String userIds);
 }

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java

@@ -2343,7 +2343,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
         List<InformationQuery> queryList = jdbcTemplate.query("select id, e_visa_pdf_url, status from u_information_query where id in( " + ids + ") and is_deleted=0 and status in (1,2)", new BeanPropertyRowMapper<>(InformationQuery.class));
         String sqlqu = "update u_information_query set status=2,e_visa_pdf_url='' where id in( " + ids + ") and is_deleted=0 and status in (1,2)";
         String sqlForTask = "update u_task set status=2 where form_data_id in( " + ids2 + ") and status in(1,2) and is_deleted=0 ";
-        String sqlForTaskPall = "update u_task_parallel a INNER JOIN u_task b on a.process_instance_id = b.process_instance_id set a.is_resign = 1, a.`status`=2 , a.e_visa_status=1 ,a.e_visa_content='电签成功' where b.form_data_id in( " + ids2 + ") and b.status in(0,1,2) and b.is_deleted = 0 and a.`status` in(0,1)";
+        String sqlForTaskPall = "update u_task_parallel a INNER JOIN u_task b on a.process_instance_id = b.process_instance_id set a.is_resign = 1, a.`status`=2 , a.e_visa_status=1 ,a.e_visa_content='电签成功' where b.form_data_id in( " + ids2 + ") and b.status in(0,1,2) and b.is_deleted = 0 and a.`status` in(0,1,3)";
 
         String taskBtech = "insert into u_task_batch(id,task_parallel_id,json_data,create_user,create_dept,create_time,update_user,update_time,status,is_deleted,nick_name,sign_format,sign_type)  " +
                 " SELECT a.id,a.process_instance_id,json_object('approvalFileList',json_array(),'approvalType',b.approval_type,'comment','','flag','OK','formDataId',b.form_data_id,'parallelProcessInstanceId',a.parallel_process_instance_id,'pass',true,'taskId',b.id) as  json_data,a.task_user,a.create_dept,a.create_time,a.update_user,SYSDATE(),1 as status,0 as is_deleted,a.task_user_name as nick_name ,1 as sign_format,1 as sign_type from u_task_parallel a,u_task b where b.`status` in(1,2) and a.`status` in(2)  and   a.process_instance_id=b.process_instance_id " +

+ 25 - 0
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -478,6 +478,15 @@ public class CustomFunction {
            return "";
     }
 
+    //天气 - 气温
+    public static Object weathertem( Object dateObj,Map<String,Object> map){
+        if(dateObj!=null&&map!=null){
+            List<Object> date=obj2ListObj(dateObj);
+            return  date.stream().map(StringUtils::handleNull).filter(StringUtils::isNotEmpty).map(e->map.get(new DateTime(FormulaUtils.range2end(e)).toString(DatePattern.NORM_DATE_PATTERN))).collect(Collectors.toList());
+        }
+        return "";
+    }
+
     // 获取最大温度
     public static Object maxtembydate( Object dateObj,Map<String,Object> map){
         if(dateObj!=null&&map!=null){
@@ -496,7 +505,23 @@ public class CustomFunction {
         return "";
     }
 
+    // 获取星期几
+    public static Object weekbydate( Object dateObj,Map<String,Object> map){
+        if(dateObj!=null&&map!=null){
+            List<Object> date=obj2ListObj(dateObj);
+            return  date.stream().map(StringUtils::handleNull).filter(StringUtils::isNotEmpty).map(e->map.get(new DateTime(FormulaUtils.range2end(e)).toString(DatePattern.NORM_DATE_PATTERN))).collect(Collectors.toList());
+        }
+        return "";
+    }
 
+    // 获取最大温度
+    public static Object maxminbydate( Object dateObj,Map<String,Object> map){
+        if(dateObj!=null&&map!=null){
+            List<Object> date=obj2ListObj(dateObj);
+            return  date.stream().map(StringUtils::handleNull).filter(StringUtils::isNotEmpty).map(e->map.get(new DateTime(FormulaUtils.range2end(e)).toString(DatePattern.NORM_DATE_PATTERN))).collect(Collectors.toList());
+        }
+        return "";
+    }
 
     public static List<Object> obj2ListObj(Object input) {
         if (input == null) {

+ 48 - 21
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaServiceImpl.java

@@ -78,6 +78,7 @@ import java.io.*;
 import java.lang.reflect.Field;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -1237,8 +1238,21 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
         try {
             List<String> dateList = new ArrayList<>();
             tec.formDataList.forEach(e -> {
-                if (e.executable() && (e.getFormula().getFormula().contains(".weather(") || e.getFormula().getFormula().contains(".maxtembydate("))) {
-                    String code = RegexUtil.findResult("(?<=\\(E\\[')[^']+(?='\\],WEATHER\\))", e.getFormula().getFormula());
+                if (e.executable() && (e.getFormula().getFormula().contains(".weather(") //天气
+                        || e.getFormula().getFormula().contains(".maxtembydate(") // 最大气温
+                        || e.getFormula().getFormula().contains(".mintembydate(")  // 最小气温
+                        || e.getFormula().getFormula().contains(".maxminbydate(")  //最大最小气温
+                        || e.getFormula().getFormula().contains(".weathertem(")    // 气温/天气
+                        || e.getFormula().getFormula().contains(".weekbydate(")  // 日期计算周几
+                )) {
+                    String tyepData[] = new String[]{"WEATHER","MAXTEMBYDATE","MINTEMBYDATE","MAXMINBYDATE","WEATHERTEM","WEEKBYDATE"};
+                    String code ="";
+                    for (int i=0;i<tyepData.length;i++){
+                        code = RegexUtil.findResult("(?<=\\(E\\[')[^']+(?='\\],"+tyepData[i]+"\\))", e.getFormula().getFormula());
+                        if (code != null) {
+                            break;
+                        }
+                    }
                     if (code != null) {
                         FormData formData = tec.getFormDataMap().get(code);
                         if (formData != null && !formData.empty()) {
@@ -1249,38 +1263,51 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
                 }
             });
             if (dateList.size() > 0) {
-                List<Map<String, Object>> listMap = this.jdbcTemplate.queryForList(" select DATE(b.record_time) ds,b.weather,temp_high as maxtembydate,temp_low as mintembydate from m_project_contract_area a join u_weather_info b on a.id=contract_area_id where a.contract_id=" + tec.getContractId() + " and DATE(b.record_time) in('" + dateList.stream().distinct().collect(Collectors.joining("','")) + "')");
+                List<Map<String, Object>> listMap = this.jdbcTemplate.queryForList(" select DATE(b.record_time) ds,b.weather,temp_high as maxtembydate,temp_low as mintembydate,CONCAT_WS('~',temp_low,temp_high) as maxminbydate,CONCAT(b.weather,'、',temp_low,'℃~',temp_high,'℃') as weathertem from m_project_contract_area a join u_weather_info b on a.id=contract_area_id where a.contract_id=" + tec.getContractId() + " and DATE(b.record_time) in('" + dateList.stream().distinct().collect(Collectors.joining("','")) + "')");
+
                 // 天气
                 Map<String, String> map = new HashMap<>();
+                //最高气温
+                Map<String, String> map2 = new HashMap<>();
+                //最低气温
+                Map<String, String> map3 = new HashMap<>();
                 //星期几
                 Map<String, String> map4 = new HashMap<>();
+                //最高最低气温
+                Map<String, String> map5 = new HashMap<>();
+                //气温 天气
+                Map<String, String> map6 = new HashMap<>();
                 listMap.forEach(m -> {
                     String ds = Func.toStr(m.get("ds"));
                     map.put(ds, Func.toStr(m.get("weather")));
                     //将时间转化星期几
+                    if (StringUtils.isNotEmpty(ds)) {
+                        Date datetime = null;
+                        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+                        try {
+                            datetime = dateFormat.parse(ds);
+                        }catch (Exception e){
 
-
-
+                        }
+                        String[] weekDays = {"日", "一", "二", "三", "四", "五", "六"};
+                        Calendar calendar = Calendar.getInstance();
+                        calendar.setTime(datetime);
+                        String week = weekDays[calendar.get(Calendar.DAY_OF_WEEK) - 1];
+                        map4.put(ds, week);
+                    }else {
+                        map4.put(ds, "");
+                    }
+                    map2.put(ds, Func.toStr(m.get("maxtembydate")));
+                    map3.put(ds, Func.toStr(m.get("mintembydate")));
+                    map5.put(ds, Func.toStr(m.get("maxminbydate")));
+                    map6.put(ds, Func.toStr(m.get("weathertem")));
                 });
                 tec.constantMap.put("WEATHER", map);
-
-                // 最高气温
-                Map<String, String> map2 = new HashMap<>();
-                listMap.forEach(m -> {
-                    map2.put(Func.toStr(m.get("ds")), Func.toStr(m.get("maxtembydate")));
-                });
                 tec.constantMap.put("MAXTEMBYDATE", map2);
-
-                // 最低气温
-                Map<String, String> map3 = new HashMap<>();
-                listMap.forEach(m -> {
-                    map3.put(Func.toStr(m.get("ds")), Func.toStr(m.get("mintembydate")));
-                });
                 tec.constantMap.put("MINTEMBYDATE", map3);
-
-                //星期几
-                tec.constantMap.put("MINTEMBYDATE", map4 );
-
+                tec.constantMap.put("WEEKBYDATE", map4);
+                tec.constantMap.put("MAXMINBYDATE", map5);
+                tec.constantMap.put("WEATHERTEM", map6);
             }
         } catch (Exception e) {
             e.printStackTrace();

+ 14 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -3007,8 +3007,11 @@ public class TaskController extends BladeController {
             }
 
             /*副任务状态*/
-            updateTaskParallelStatus(task);
-
+            if(task.getApprovalType()==11){ //变更令  走流程不需要电签
+                updateTaskParallelStatusByBGL(task);
+            }else {
+                updateTaskParallelStatus(task);
+            }
             Set<String> aopParamsSet = new HashSet<>();
             for (TaskParallel taskParallel : taskParallels) {
                 String param = taskParallel.getTaskUser() + "," + task.getProjectId() + "," + task.getContractId();
@@ -3866,6 +3869,15 @@ public class TaskController extends BladeController {
         return this;
     }
 
+    private void updateTaskParallelStatusByBGL(Task task) {
+        TaskParallel taskParallelOne = jdbcTemplate.query("SELECT * FROM u_task_parallel WHERE status=1 and process_instance_id = '" + task.getProcessInstanceId() + "' AND task_user = " + SecureUtil.getUserId(), new BeanPropertyRowMapper<>(TaskParallel.class)).stream().findAny().orElse(null);
+        if (taskParallelOne != null && taskParallelOne.getStatus().equals(1)) {
+            String sql = "UPDATE u_task_parallel SET status = ? ,update_time = ? ,e_visa_status=1,e_visa_content='电签成功',initiative=2, create_time = SYSDATE()  WHERE id = ?";
+            Object[] param = {2, new Date(), taskParallelOne.getId()};
+            jdbcTemplate.update(sql, param);
+        }
+    }
+
     private void updateTaskParallelStatus(Task task) {
         TaskParallel taskParallelOne = jdbcTemplate.query("SELECT * FROM u_task_parallel WHERE status=1 and process_instance_id = '" + task.getProcessInstanceId() + "' AND task_user = " + SecureUtil.getUserId(), new BeanPropertyRowMapper<>(TaskParallel.class)).stream().findAny().orElse(null);
         if (taskParallelOne != null && taskParallelOne.getStatus().equals(1)) {