zhuwei 7 miesięcy temu
rodzic
commit
e1d3f4eaf9

+ 2 - 2
blade-common/src/main/java/org/springblade/common/utils/AsyncConfigurer.java

@@ -15,7 +15,7 @@ public class AsyncConfigurer {
     /**
      * cpu 核心数量
      */
-    public static final int cpuNum = 3 ;//Runtime.getRuntime().availableProcessors();
+    public static final int cpuNum = 2 ;//Runtime.getRuntime().availableProcessors();
 
     /**
      * 线程池配置
@@ -24,7 +24,7 @@ public class AsyncConfigurer {
     @Bean("taskExecutor1")
     public ThreadPoolExecutor getAsyncExecutor() {
         return new ThreadPoolMonitor(cpuNum
-                , 5
+                , 10
                 , 180
                 , TimeUnit.SECONDS
                 , new LinkedBlockingQueue<>(2000)

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

@@ -61,7 +61,7 @@ public class ExecutorInit extends FormulaExecutor {
         delay.add(addBaseInfo());
         /*计量期信息*/
         delay.add(addPeriodInfo());
-        MeterApproveOpinion approve=approveOpinionFc.apply(tec.getPeriodId());
+        MeterApproveOpinion approve= approveOpinionFc.apply(tec.getPeriodId());
         if(approve!=null) {
             tec.meterInfo.setApproveOpinion(approve);
             delay.add(approve);

+ 0 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IFormulaDao.java

@@ -1,13 +1,11 @@
 package org.springblade.manager.service;
 
-import org.springblade.manager.formula.impl.ExecutorMeter;
 import org.springblade.manager.vo.*;
 import org.springblade.meter.entity.ChangeTokenForm;
 import org.springblade.meter.entity.InterimPayCertificateItem;
 
 import java.util.List;
 import java.util.Map;
-import java.util.function.BiFunction;
 import java.util.function.Function;
 
 public interface IFormulaDao {

+ 1 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/service/IWbsParamService.java

@@ -24,6 +24,7 @@ public interface IWbsParamService extends BaseService<WbsParam> {
      * @Author yangyj
      **/
     String createFileTitle(WbsTreeContract wbsTreeContract);
+
     String createFileTitle(Long pkeyId);
 
     /**

+ 3 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/FormulaDaoImpl.java

@@ -127,8 +127,9 @@ public class FormulaDaoImpl implements IFormulaDao {
 
     @Override
     public Function<Long, List<Material>> getMaterialFormFc() {
-        return contractId->{
-            String sql="select a.certificate,a.material_arrive_number,a.contract_material_name  formMaterialName,b.material_name materialName,b.unit,a.price,b.price price_base,a.meter_amount meterAmount,meter_money sum,a.material_source source,material_conform  materialConform,a.storage_place storagePlace,a.storage_status storageStatus,a.storage_conform storageConform,a.remark,c.sort,c.id period_id from s_material_meter_form a left join s_contract_material b on a.contract_material_id = b.id join s_meter_period c  on a.meter_period_id=c.id where a.contract_id="+contractId+"  and a.is_deleted=0 ";
+        //and a.contract_id="+contractId+"
+        return periodId ->{
+            String sql="select a.certificate,a.material_arrive_number,a.contract_material_name  formMaterialName,b.material_name materialName,b.unit,a.price,b.price price_base,a.meter_amount meterAmount,meter_money sum,a.material_source source,material_conform  materialConform,a.storage_place storagePlace,a.storage_status storageStatus,a.storage_conform storageConform,a.remark,c.sort,c.id period_id from s_material_meter_form a left join s_contract_material b on a.contract_material_id = b.id join s_meter_period c  on a.meter_period_id=c.id where a.meter_period_id="+periodId+" and a.is_deleted=0 ";
             return  getEntityList(sql,Material.class);
         };
     }

+ 5 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/WbsParamServiceImpl.java

@@ -105,7 +105,7 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
 
     public WbsTreePrivate wtpId(Long pkeyId){
         WbsTreeContract wtc = this.treeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId,pkeyId));
-        int loop=0;
+        /*int loop=0;
         while (wtc.getOldId()!=null&&loop<10){
             loop++;
             WbsTreeContract tmp = this.treeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getId,wtc.getOldId()).eq(WbsTreeContract::getProjectId,wtc.getProjectId()).last(" limit 1 "));
@@ -118,8 +118,10 @@ public class WbsParamServiceImpl extends BaseServiceImpl<WbsParamMapper, WbsPara
             }else{
                 wtc=tmp;
             }
-        }
-        return this.wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getId,wtc.getId()).eq(WbsTreePrivate::getProjectId,wtc.getProjectId()).last(" limit 1 "));
+        }*/
+        return this.wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId,wtc.getIsTypePrivatePid()));
+
+      //  return this.wbsTreePrivateMapper.selectOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getId,wtc.getId()).eq(WbsTreePrivate::getProjectId,wtc.getProjectId()).last(" limit 1 "));
     }
 
     @Override

+ 91 - 22
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/TaskController.java

@@ -1040,7 +1040,7 @@ public class TaskController extends BladeController {
         int current = dto.getCurrent();
         int size = dto.getSize();
         List<Object> params = new ArrayList<>();
-        StringBuilder sqlString = new StringBuilder("SELECT * FROM u_task WHERE 1=1 AND is_deleted = 0 AND approval_type = 5"); //approval_type = 5 计量任务
+        StringBuilder sqlString = new StringBuilder("SELECT * FROM u_task WHERE 1=1 AND is_deleted = 0 AND approval_type in (5,6,7) "); //approval_type = 5 计量任务
 
         ContractInfo contractInfo = jdbcTemplate.queryForObject("select contract_type from m_contract_info where id = " + dto.getContractId(), new BeanPropertyRowMapper<>(ContractInfo.class));
         if (contractInfo != null && Arrays.asList(1, 4).contains(contractInfo.getContractType())) {
@@ -1064,7 +1064,7 @@ public class TaskController extends BladeController {
             params.add(dto.getTypeValue());
         }
         if (ObjectUtil.isNotEmpty(dto.getStatusValue())) {
-            if(dto.getStatusValue() .equals(4) ){//可审批----先查询出所有待审批的 然后根据条件进行过滤出任务已经到当前登陆人的任务为可审批
+            if(dto.getStatusValue() .equals(4) ){//----先查询出所有待审批的 然后根据条件进行过滤出任务已经到当前登陆人的任务为可审批
                 sqlString.append(" AND status = 1");
             }else {
                 sqlString.append(" AND status = ?");
@@ -2682,7 +2682,7 @@ public class TaskController extends BladeController {
 
             //单独保存意见单
             if (task.getMeterTaskType() != null && Arrays.asList(1, 2, 3).contains(task.getMeterTaskType())) {
-                this.saveOpinion(dto);
+                this.saveOpinion(dto,taskParallels.size());
             }
 
             //如果要生成审计意见单
@@ -2778,7 +2778,7 @@ public class TaskController extends BladeController {
             //
             if (reportId != null && StringUtils.isNotEmpty(reportId) && (task.getMeterTaskType() == 3 || task.getMeterTaskType() == 1 || task.getMeterTaskType() == 2)) {
                 // taskType 10 代表任务查看pdf
-                meterPdfInfo(reportId + "", task.getMeterTaskType() - 1, taskType);
+                meterPdfInfo22(reportId + "", task.getMeterTaskType() - 1, taskType);
             }
 
             taskMeterPdfInfo2(task.getId(),reportId,task.getMeterTaskType() - 1, taskType);
@@ -2866,13 +2866,17 @@ public class TaskController extends BladeController {
     }
 
 
-    private void saveOpinion(TaskApproveDTO dto) {
+    private void saveOpinion(TaskApproveDTO dto,int xcount) {
         MeterApproveOpinion opinion = dto.getMeterApproveOpinion();
         //获取最新的意见单
         MeterApproveOpinion oldOpinion = opinionMapper.selectById(opinion.getId());
-        if (opinion != null) {
+        if (opinion != null) { //董事长意见
             if (StringUtils.isBlank(opinion.getChiefExecutive())) {
-                opinion.setChiefExecutive(null);
+                if(xcount<=1){
+                    opinion.setChiefExecutive("同意");
+                }else{
+                    opinion.setChiefExecutive(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2888,7 +2892,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getContractDept())) {
-                opinion.setContractDept(null);
+                if(xcount<=1){ //合同部意见
+                    opinion.setContractDept("拟同意");
+                }else{
+                    opinion.setContractDept(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2904,7 +2912,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getProjectBuild())) {
-                opinion.setProjectBuild(null);
+                if(xcount<=1){ //工程建设意见
+                    opinion.setProjectBuild("拟同意");
+                }else{
+                    opinion.setProjectBuild(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2920,7 +2932,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getGeneralManager())) {
-                opinion.setGeneralManager(null);
+                if(xcount<=1){ //总经理意见
+                    opinion.setGeneralManager("拟同意");
+                }else{
+                    opinion.setGeneralManager(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2936,7 +2952,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getChiefSupervisor())) {
-                opinion.setChiefSupervisor(null);
+                if(xcount<=1){//总监理工程师意见
+                    opinion.setChiefSupervisor("拟同意");
+                }else{
+                    opinion.setChiefSupervisor(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2952,7 +2972,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getSafetyManager())) {
-                opinion.setSafetyManager(null);
+                if(xcount<=1){//安全管理部意见
+                    opinion.setSafetyManager("拟同意");
+                }else{
+                    opinion.setSafetyManager(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2968,7 +2992,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getContractDeptLeader())) {
-                opinion.setContractDeptLeader(null);
+                if(xcount<=1){ //合同部主管意见
+                    opinion.setContractDeptLeader("拟同意");
+                }else{
+                    opinion.setContractDeptLeader(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -2984,7 +3012,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getProjectBuildLeader())) {
-                opinion.setProjectBuildLeader(null);
+                if(xcount<=1){//项目施工部主管意见
+                    opinion.setProjectBuildLeader("拟同意");
+                }else{
+                    opinion.setProjectBuildLeader(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3000,7 +3032,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getSafetyManagerLeader())) {
-                opinion.setSafetyManagerLeader(null);
+                if(xcount<=1){ //安全管理部主管意见
+                    opinion.setSafetyManagerLeader("拟同意");
+                }else{
+                    opinion.setSafetyManagerLeader(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3016,7 +3052,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getSupervisorAudit())) {
-                opinion.setSupervisorAudit(null);
+                if(xcount<=1){ //监理工程师意见
+                    opinion.setSupervisorAudit("拟同意");
+                }else{
+                    opinion.setSupervisorAudit(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3032,7 +3072,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getMeterEngineer())) {
-                opinion.setMeterEngineer(null);
+                if(xcount<=1){//计量工程师意见
+                    opinion.setMeterEngineer("拟同意");
+                }else{
+                    opinion.setMeterEngineer(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3048,7 +3092,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getProjectManager())) {
-                opinion.setProjectManager(null);
+                if(xcount<=1){ //项目经理意见
+                    opinion.setProjectManager("拟同意");
+                }else{
+                    opinion.setProjectManager(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3064,7 +3112,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getContractSupervisorEngineer())) {
-                opinion.setContractSupervisorEngineer(null);
+                if(xcount<=1){//合同监理工程师意见
+                    opinion.setContractSupervisorEngineer("拟同意");
+                }else{
+                    opinion.setContractSupervisorEngineer(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3080,7 +3132,11 @@ public class TaskController extends BladeController {
             }
 
             if (StringUtils.isBlank(opinion.getOwnerDelegate())) {
-                opinion.setOwnerDelegate(null);
+                if(xcount<=1){ //业主代表意见
+                    opinion.setOwnerDelegate("拟同意");
+                }else{
+                    opinion.setOwnerDelegate(null);
+                }
             } else {
                 //如果存在数据则判断之前是否填写总监理工程师,填写了则不管,没填写这次填写了,则设置用户id名称时间
                 if (oldOpinion != null) {
@@ -3778,6 +3834,7 @@ public class TaskController extends BladeController {
     //
 
 
+    @Async
     public void taskMeterPdfInfo2(@RequestParam Long taskId, @RequestParam String reportId, @RequestParam Integer type, @RequestParam Integer taskType) {
         try {
             Task task = jdbcTemplate.query("SELECT * FROM u_task WHERE id = ?", new Object[]{taskId}, new BeanPropertyRowMapper<>(Task.class)).stream().findAny().orElse(null);
@@ -3797,7 +3854,7 @@ public class TaskController extends BladeController {
                 }
             } else {
                 if(Func.isEmpty(reportId) || reportId==null){
-                    sql = "select * from s_material_start_statement where is_deleted=0 and contract_period_id = "+task.getFormDataId()+"";
+                    sql = "select * from s_material_start_statement where is_deleted=0 and meter_period_id = "+task.getFormDataId()+"";
                 }else{
                     sql = "select * from s_material_start_statement where is_deleted=0 and id = "+reportId+"";
                 }
@@ -3888,6 +3945,18 @@ public class TaskController extends BladeController {
         return calculate(reportId, type, taskType);
     }
 
+    @Async
+    public R meterPdfInfo22(@RequestParam String reportId, @RequestParam Integer type, @RequestParam Integer taskType) {
+        /*加锁*/
+        String redisValue = bladeRedis.get("blade:meter::meterPdfInfo:reportId-" + reportId);
+        if (StringUtils.isNotBlank(redisValue) && redisValue.equals("1")) {
+            throw new ServiceException("重新计算中,请等待");
+        }
+        bladeRedis.set("blade:meter::meterPdfInfo:reportId-" + reportId, "1");
+        bladeRedis.expire("blade:meter::meterPdfInfo:reportId-" + reportId, 5);
+        return calculate(reportId, type, taskType);
+    }
+
     public R<String> calculate(String reportId, Integer type, Integer taskType) {
         try {
             if (BaseUtils.isNumber(reportId) && BaseUtils.isNumber(type)) {
@@ -4413,7 +4482,7 @@ public class TaskController extends BladeController {
             if(Func.isEmpty(mapList) || mapList.size()==0) {
                 // 修改个人电签状态
                 String UPSql = "update u_task_parallel a set a.e_visa_status=null,e_visa_content=null where a.process_instance_id = (select b.process_instance_id from u_task b where  b.`status` in(1,2) and b.form_data_id=" + report.getPeriodId() + ") ";
-                String UPSqlJL = " update u_task_parallel a set a.e_visa_status=1,e_visa_content='电签成功' where sort in( SELECT a.fixed_flow_branch_sort from u_task b,u_fixed_flow_link a where b.`status` in(1,2) and b.form_data_id='" + report.getPeriodId() + "' and a.fixed_flow_id=b.fixed_flow_id and a.flow_task_type=2 ) and a.process_instance_id in(SELECT process_instance_id from u_task b where b.`status` in(1,2) and b.form_data_id='" + report.getPeriodId() + "')";
+                String UPSqlJL = " update u_task_parallel a set a.e_visa_status=1,e_visa_content='电签成功',initiative=2 where sort in( SELECT a.fixed_flow_branch_sort from u_task b,u_fixed_flow_link a where b.`status` in(1,2) and b.form_data_id='" + report.getPeriodId() + "' and a.fixed_flow_id=b.fixed_flow_id and a.flow_task_type=2 ) and a.process_instance_id in(SELECT process_instance_id from u_task b where b.`status` in(1,2) and b.form_data_id='" + report.getPeriodId() + "')";
                 String DeSql = "delete from u_task_batch where task_parallel_id in(select b.process_instance_id from u_task b where b.`status` in(1,2) and b.form_data_id=" + report.getPeriodId() + ")";
                 //删除以前存在的电签
                 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,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,a.update_time,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,u_fixed_flow_link c where b.`status` in(1,2) and  a.process_instance_id=b.process_instance_id and c.flow_task_type!=2 and a.sort = c.fixed_flow_branch_sort and c.fixed_flow_id=b.fixed_flow_id and b.form_data_id= '" + report.getPeriodId() + "'";

+ 1 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialMeterFormMapper.xml

@@ -52,7 +52,7 @@
         ))
         when approve_status = 2 then '已审批'
         else '已废除' end as approveStatusName,
-        ( SELECT id FROM u_task c WHERE a.meter_period_id = c.form_data_id ) AS taskId
+        ( SELECT id FROM u_task c WHERE a.meter_period_id = c.form_data_id and c.`status` in(1,2) ) AS taskId
         from s_material_meter_form a
         where contract_id = #{contractId} and is_deleted = 0
         <if test="meterPeriodId!=null and meterPeriodId!=''">

+ 2 - 2
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialStartStatementMapper.xml

@@ -22,10 +22,10 @@
         <result column="repayment_cause" property="repaymentCause"/>
         <result column="calculate_date" property="calculateDate"/>
         <result column="sort" property="sort"/>
-        <result column="raw_url" property="rawUrl"/>
+        <result column="pre_pdf_url" property="prePdfUrl"/>
     </resultMap>
     <select id="page2" resultType="org.springblade.meter.vo.MaterialStartStatementVO">
-        select *,
+        select IFNULL(pre_pdf_url,raw_url) as pre_pdf_url,mss.*,
                (select id from u_task where form_data_id = mss.meter_period_id and is_deleted = 0 and status in (1,2)) as taskId
         from s_material_start_statement mss
         where contract_id = #{statement.contractId} and type = #{statement.type} and is_deleted = 0