yangyj il y a 1 an
Parent
commit
10153b2977

+ 3 - 0
blade-service-api/blade-manager-api/src/main/java/org/springblade/manager/vo/SupervisionCertificate.java

@@ -1,12 +1,14 @@
 package org.springblade.manager.vo;
 
 import com.alibaba.fastjson.annotation.JSONField;
+import lombok.Data;
 
 /**
  * @author yangyj
  * @Date 2024/5/23 17:47
  * @description 监理服务费期中支付证书
  */
+@Data
 public class SupervisionCertificate implements  DataModel{
     public static final String ID="20350000000";
     public static final String TBN="SCert";
@@ -29,5 +31,6 @@ public class SupervisionCertificate implements  DataModel{
     private String currentAmount;
     @JSONField(name = "key_1",label="本期完成比例",ordinal = 1)
     private String currentRatio;
+    private String itemName;
 
 }

+ 11 - 1
blade-service/blade-manager/src/main/java/com/mixsmart/utils/CustomFunction.java

@@ -440,12 +440,17 @@ public class CustomFunction {
     }
 
 
+
     public static Object dateOffset(List<String> dateList,LinkedList<Integer> offSet){
             List<String> result = new ArrayList<>();
             if(ListUtils.isNotEmpty(dateList)&&ListUtils.isNotEmpty(offSet)){
                 for(int i=0;i<dateList.size();i++){
                     String d= dateList.get(i);
                     if(StringUtils.isNotEmpty(d)) {
+                        if(d.contains(",")){
+                            String[] arr=d.replaceAll("[\\[\\]\\s]+","").split(",");
+                            d=arr[arr.length-1];
+                        }
                         Integer n = StringUtils.handObj2Integer(offSet.size() > i ? offSet.get(i) : offSet.getLast());
                         DateTime dt = new DateTime(d);
                         dt.offset(DateField.HOUR_OF_DAY, 24 * n);
@@ -497,7 +502,12 @@ public class CustomFunction {
                 if( Func.isNotEmpty(ranges)) {
                    return ranges.stream().filter(Func::isNotEmpty).map(e->{
                         String[] s = Func.toStr(e).replaceAll("[\\[\\]\\s\\\\]+", "").split(",");
-                        return dateCp(s[0], s[1], isAsc);
+                        if(s.length>=2){
+                            return dateCp(s[0], s[1], isAsc);
+                        }else if(s.length==1){
+                            return s[0];
+                        }
+                        return "";
                     }).collect(Collectors.toList());
                 }
             } else{

+ 2 - 2
blade-service/blade-manager/src/main/java/com/mixsmart/utils/FormulaUtils.java

@@ -704,9 +704,9 @@ public class FormulaUtils {
                     return cell.getErrorCellValue();
                 case FORMULA:
                     try {
-                        return cell.getStringCellValue();
+                        return  cell.getStringCellValue();
                     } catch (IllegalStateException e) {
-                        return cell.getNumericCellValue();
+                        return "";
                     }
                 default:
                     cell.setCellType(CellType.STRING);

+ 42 - 1
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/ExecutorMeter.java

@@ -347,6 +347,24 @@ public class ExecutorMeter extends FormulaExecutor {
     @EqualsAndHashCode(callSuper = true)
     public  class SupervisionCertificateSp extends   BaseSpecial<SupervisionCertificate> implements Special{
 
+        private final LinkedHashMap<String,String> itemNamesMap=new LinkedHashMap<>();
+               /* Arrays.asList("正常监理服务费","其他费用","附加监理服务费","额外服务费","缺陷期监理服务费","小计","费用调整","合计","监理单位违约金","奖励","动员预付款","扣回动员预付款","实际支付金额");*/
+         {
+            itemNamesMap.put("正常监理服务费","100");
+             itemNamesMap.put("其他费用","");
+             itemNamesMap.put("附加监理服务费","");
+             itemNamesMap.put("额外服务费","");
+             itemNamesMap.put("缺陷期监理服务费","200");
+             itemNamesMap.put("小计","-1");
+             itemNamesMap.put("费用调整","");
+             itemNamesMap.put("合计","-1");
+             itemNamesMap.put("监理单位违约金","");
+             itemNamesMap.put("奖励","");
+             itemNamesMap.put("动员预付款","");
+             itemNamesMap.put("扣回动员预付款","");
+             itemNamesMap.put("实际支付金额","");
+         }
+
         @Override
         public boolean ready() {
             return true;
@@ -354,7 +372,30 @@ public class ExecutorMeter extends FormulaExecutor {
 
         @Override
         public void parse() {
-
+            builderFormDatas(SupervisionCertificate.class);
+            List<Payment> pre=tec.meterInfo.getPaymentListMap().get(MeterInfo.PRE);
+            List<Payment> cur=tec.meterInfo.getPaymentListMap().get(MeterInfo.CUR);
+            List<Payment> end=tec.meterInfo.getPaymentListMap().get(MeterInfo.END);
+            itemNamesMap.forEach((k,v)->{
+                SupervisionCertificate sc = new SupervisionCertificate();
+                sc.setItemName(k);
+                List<Payment> p = pre.stream().filter(e->getPrefix(e.getNumber()).equals("100")).collect(Collectors.toList());
+                List<Payment> c = cur.stream().filter(e->getPrefix(e.getNumber()).equals("100")).collect(Collectors.toList());
+                List<Payment> t = end.stream().filter(e->getPrefix(e.getNumber()).equals("100")).collect(Collectors.toList());
+                Payment sample=p.get(0);
+                sc.setPrice(sample.getPrice());
+                sc.setContractAmount(sample.getContractMoney());
+                /*本期*/
+                sc.setCurrentAmount(c.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
+                sc.setCurrentRatio(ratioFc.apply(sc.getCurrentAmount(),sc.getContractAmount()));
+                /*上期末*/
+                sc.setPreviousEndAmount(p.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
+                sc.setPreviousEndRatio(ratioFc.apply(sc.getPreviousEndAmount(),sc.getContractAmount()));
+                /*本期末*/
+                sc.setPeriodEndAmount(t.stream().map(e->BaseUtils.str2BigDecimal(e.getMoney())).reduce(BigDecimal.ZERO,BigDecimal::add).toString());
+                sc.setPeriodEndRatio(ratioFc.apply(sc.getPeriodEndAmount(),sc.getContractAmount()));
+            });
+            putOut();
         }
     }
     @Data

+ 0 - 11
blade-service/blade-manager/src/main/java/org/springblade/manager/formula/impl/TurnPointCalculator.java

@@ -1,11 +0,0 @@
-package org.springblade.manager.formula.impl;
-
-import org.springblade.manager.formula.ITurnPointCalculator;
-/**
- * @author yangyj
- * @Date 2022/9/6 11:51
- * @description TODO
- */
-public class TurnPointCalculator implements ITurnPointCalculator {
-
-}

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

@@ -1283,7 +1283,7 @@ public class FormulaServiceImpl extends BaseServiceImpl<FormulaMapper, Formula>
             }
             if (Func.isNotEmpty(inspectionList)) {
                 /*检查是否存在附表,不存在挂载*/
-                List<NodeTable> subTabList = tec.getTableAll().stream().filter(e -> e.getNodeName().contains("附表")).collect(Collectors.toList());
+                List<NodeTable> subTabList = tec.getTableAll().stream().filter(e -> e.getNodeName().contains("附表")&&(e.getTableType()==1||e.getTableType()==5)).collect(Collectors.toList());
                 if (subTabList.size() == 0) {
                     linkSub(subTabList,tec);
                 }

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

@@ -3197,16 +3197,20 @@ public class TaskController extends BladeController {
 
     // 添加电签任务列表
     public void addSignTaskBatch(Report report){
-        // 修改个人电签状态
-        String UPSql ="update u_task_parallel a set a.status=1,e_visa_status=0,e_visa_content='' where a.process_instance_id = (select b.process_instance_id from u_task b where  b.form_data_id="+report.getPeriodId()+" and b.meter_task_type="+(Func.toInt(report.getType())+1)+")";
-        String DeSql ="delete from u_task_batch where task_parallel_id = (select b.process_instance_id from u_task b where  b.form_data_id="+report.getPeriodId()+" and b.meter_task_type="+(Func.toInt(report.getType())+1)+")";
-        jdbcTemplate.execute(UPSql);
-        //删除以前存在的电签
-        jdbcTemplate.execute(DeSql);
-        String sql=" 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) "+
-                   " SELECT a.id,a.process_instance_id,json_object('approvalFileList',json_array(),'approvalType',4+b.meter_task_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,a.update_time,1 as status,0 as is_deleted,a.task_user_name as nick_name "+
-                   " from u_task_parallel a,u_task b where a.process_instance_id=b.process_instance_id and b.form_data_id="+report.getPeriodId()+" and b.meter_task_type="+(Func.toInt(report.getType())+1);
-        jdbcTemplate.execute(sql);
+        try {
+            // 修改个人电签状态
+            String UPSql = "update u_task_parallel a set a.status=1,e_visa_status=0,e_visa_content='' where a.process_instance_id = (select b.process_instance_id from u_task b where  b.form_data_id=" + report.getPeriodId() + " and b.meter_task_type=" + (Func.toInt(report.getType()) + 1) + ")";
+            String DeSql = "delete from u_task_batch where task_parallel_id = (select b.process_instance_id from u_task b where  b.form_data_id=" + report.getPeriodId() + " and b.meter_task_type=" + (Func.toInt(report.getType()) + 1) + ")";
+            jdbcTemplate.execute(UPSql);
+            //删除以前存在的电签
+            jdbcTemplate.execute(DeSql);
+            String sql = " 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) " +
+                    " SELECT a.id,a.process_instance_id,json_object('approvalFileList',json_array(),'approvalType',4+b.meter_task_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,a.update_time,1 as status,0 as is_deleted,a.task_user_name as nick_name " +
+                    " from u_task_parallel a,u_task b where a.process_instance_id=b.process_instance_id and b.form_data_id=" + report.getPeriodId() + " and b.meter_task_type=" + (Func.toInt(report.getType()) + 1);
+            jdbcTemplate.execute(sql);
+        }catch (Exception e){
+            StaticLog.error(e.getMessage());
+        }
     }