Browse Source

Merge remote-tracking branch 'origin/master' into master

yangyj 1 year ago
parent
commit
4b17eb25c0

+ 1 - 1
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/Task.java

@@ -91,7 +91,7 @@ public class Task extends BaseEntity {
     /**
      * 数据指向
      */
-    @ApiModelProperty("数据指向")
+    @ApiModelProperty("数据指向(计量系统指向的计量期id)")
     private String formDataId;
 
     /**

+ 3 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/TaskDetailVO.java

@@ -34,4 +34,7 @@ public class TaskDetailVO implements Serializable {
     @ApiModelProperty(value = "第一审批人id,第一审批人才会生成PDF")
     private Long opinionMan;
 
+    @ApiModelProperty(value = "表单数据")
+    private Map<String,Object> tableData;
+
 }

+ 25 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/config/ConfigFile.java

@@ -0,0 +1,25 @@
+package org.springblade.meter.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.lang.Nullable;
+
+import javax.sql.DataSource;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2024/5/14 10:31
+ **/
+@Configuration
+public class ConfigFile {
+    @Bean
+    public MyJdbcTemplate MyJdbcTemplate(@Nullable DataSource dataSource){
+        if(dataSource==null){
+            return new MyJdbcTemplate();
+        }else{
+            return new MyJdbcTemplate(dataSource);
+        }
+    }
+}
+

+ 52 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/config/MyJdbcTemplate.java

@@ -0,0 +1,52 @@
+package org.springblade.meter.config;
+
+import lombok.Data;
+import org.springframework.dao.DataAccessException;
+import org.springframework.dao.IncorrectResultSizeDataAccessException;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.jdbc.core.RowMapperResultSetExtractor;
+import org.springframework.lang.Nullable;
+import org.springframework.util.CollectionUtils;
+
+import javax.sql.DataSource;
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * @Param
+ * @Author wangwl
+ * @Date 2024/5/14 10:14
+ **/
+@Data
+public class MyJdbcTemplate extends JdbcTemplate {
+    public MyJdbcTemplate () {
+    }
+
+    public MyJdbcTemplate (DataSource dataSource) {
+        super(dataSource);
+    }
+
+    @Override
+    public <T> T queryForObject(String sql, RowMapper<T> rowMapper, Object... args) throws DataAccessException {
+        List<T> query ;
+        try {
+             query = super.query(sql, args, new RowMapperResultSetExtractor<>(rowMapper, 1));
+        }catch (Exception e){
+            return null;
+        }
+        return canReturnEmptyResultSet(query);
+    }
+
+
+    private static <T> T canReturnEmptyResultSet(@Nullable Collection<T> results) throws IncorrectResultSizeDataAccessException {
+        if (CollectionUtils.isEmpty(results)) {
+            return null;
+        } else if (results.size() > 1) {
+            throw new IncorrectResultSizeDataAccessException(1, results.size());
+        } else {
+            return results.iterator().next();
+        }
+    }
+
+}

+ 2 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractMeterPeriodController.java

@@ -35,6 +35,7 @@ import org.springblade.meter.entity.InterimPayCertificate;
 import org.springblade.meter.entity.MeterPeriod;
 import org.springblade.meter.service.IInterimPayCertificateService;
 import org.springblade.meter.vo.ContractMeterPeriodVO;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -78,6 +79,7 @@ public class ContractMeterPeriodController extends BladeController {
 	@PostMapping("/edit")
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "编辑合同计量期", notes = "传入合同段id与计量期集合")
+	@Transactional
 	public R edit(@Valid @RequestBody ContractMeterPeriodDTO dto) {
 
 		List<ContractMeterPeriod> list = dto.getList();

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

@@ -49,11 +49,16 @@ import org.springblade.feign.ArchiveFileTaskClient;
 import org.springblade.manager.entity.ContractInfo;
 import org.springblade.manager.entity.ContractRelationJlyz;
 import org.springblade.manager.feign.FormulaClient;
+import org.springblade.manager.feign.ProjectClient;
 import org.springblade.manager.vo.ReportMergeCellsConfig;
 import org.springblade.manager.vo.ReportResult;
+import org.springblade.meter.config.MyJdbcTemplate;
 import org.springblade.meter.dto.*;
 import org.springblade.meter.entity.*;
+import org.springblade.meter.mapper.ContractMeterPeriodMapper;
 import org.springblade.meter.mapper.MiddleMeterApplyMapper;
+import org.springblade.meter.mapper.MiddleMeterApplyTaskMapper;
+import org.springblade.meter.service.IContractMeterPeriodService;
 import org.springblade.meter.service.IInterimPayCertificateService;
 import org.springblade.meter.service.IMaterialStartStatementService;
 import org.springblade.meter.service.impl.*;
@@ -74,6 +79,7 @@ import java.lang.reflect.Method;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.Month;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -88,16 +94,21 @@ import java.util.stream.Collectors;
 @Api(value = "计量任务管理相关接口", tags = "计量任务管理相关接口")
 public class TaskController extends BladeController {
 
+
+    private final ProjectClient projectClient;
     private final JdbcTemplate jdbcTemplate;
+    private final MyJdbcTemplate myJdbcTemplate;
     private final BladeRedis bladeRedis;
     private final TaskClient taskClient;
     private final IUserClient iUserClient;
     private final ArchiveFileTaskClient archiveFileTaskClient;
     private final ContractMeterPeriodServiceImpl contractMeterPeriodService;
+    private final ContractMeterPeriodMapper contractMeterPeriodMapper;
     private final MeterPeriodServiceImpl periodService;
     private final MiddleMeterApplyServiceImpl middleMeterApplyService;
     private final InventoryFormApplyServiceImpl inventoryFormApplyService;
     private final MiddleMeterApplyServiceTaskImpl middleMeterApplyServiceTask;
+    private final MiddleMeterApplyTaskMapper middleMeterApplyTaskMapper;
     private final InventoryFormApplyServiceTaskImpl inventoryFormApplyServiceTask;
     private final MaterialMeterFormServiceImpl materialMeterFormService;
     private final MaterialMeterFormServiceTaskImpl materialMeterFormServiceTask;
@@ -107,6 +118,7 @@ public class TaskController extends BladeController {
     private final AttachmentFormServiceTaskImpl attachmentFormServiceTask;
     private final MiddleMeterApplyMapper middleMeterApplyMapper;
 
+
     private final ChangeTokenFormServiceImpl changeTokenFormService;
     private final ChangeTokenFormServiceTaskImpl changeTokenFormServiceTask;
     private final ChangeTokenMeterServiceImpl changeTokenMeterService;
@@ -1174,8 +1186,15 @@ public class TaskController extends BladeController {
             /*中间计量申请,返回值增加:上报总金额,本期进度款,审计意见*/
             if (task.getMeterTaskType() != null && task.getMeterTaskType() == 1){
                 //实时查询上报总金额
-                BigDecimal reportAllMoney = jdbcTemplate.queryForObject("select * from s_middle_meter_apply_task where is_deleted = 0 and task_id = " + task.getId(), BigDecimal.class);
-                vo.setReportAllMoney(reportAllMoney == null ? BigDecimal.ZERO : reportAllMoney);
+                BigDecimal reportAllMoney = middleMeterApplyTaskMapper.selectAllMoney(task.getId());
+                if (reportAllMoney == null){
+                    throw new ServiceException("上报金额不能为0");
+                }
+                ContractMeterPeriod period = contractMeterPeriodService.getById(task.getFormDataId());
+                if (period == null){
+                    throw new ServiceException("未获取到计量期信息");
+                }
+                vo.setReportAllMoney(reportAllMoney);
                 vo.setProgressMoney(task.getTaskCommonMoney() == null ? BigDecimal.ZERO : task.getTaskCommonMoney());
                 vo.setPdfUrl(task.getAttachmentPdfUrl());
                 //查看当前用户是否是第一人
@@ -1183,6 +1202,17 @@ public class TaskController extends BladeController {
                 if (currentUser.equals(firstUser)){
                     //是第一人,设置意见为1,并返回默认值字段
                     vo.setOpinionType(1);
+                    //todo 目前直接把key写死在代码里面,后面有空再去动态获取key
+                    Map<String,Object> tableData = new HashMap<>();
+                    tableData.put("key_18__3_1",projectClient.getById(task.getProjectId()).getProjectName());
+                    tableData.put("key_7__4_3",reportAllMoney);
+                    tableData.put("key_1__5_3",LocalDate.now());
+                    tableData.put("key_5__10_1",reportAllMoney);
+                    //获取本期之前所有计量期金额
+                    BigDecimal beforeMoney = contractMeterPeriodMapper.getBeforeMoney(period);
+                    tableData.put("key_14__11_1",beforeMoney == null ? "" : beforeMoney);
+                    tableData.put("key_10__11_3",beforeMoney == null ? reportAllMoney : beforeMoney.add(reportAllMoney));
+                    vo.setTableData(tableData);
                 }else {
                     //不是第一人,判断PDF是否生成,生成了类型为2,没有生成类型为3
                     if (StringUtils.isNotBlank(task.getAttachmentPdfUrl())){

+ 3 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMeterPeriodMapper.java

@@ -22,6 +22,7 @@ import org.springblade.meter.entity.ContractMeterPeriod;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.springblade.meter.vo.ContractMeterPeriodVO;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -40,4 +41,6 @@ public interface ContractMeterPeriodMapper extends BaseMapper<ContractMeterPerio
     List<ContractMeterPeriod> conditionPeriod(@Param("contractId") Long contractId);
 
     List<ContractMeterPeriodVO> allPeriod(@Param("contractId")Long contractId);
+
+    BigDecimal getBeforeMoney(@Param("period") ContractMeterPeriod period);
 }

+ 6 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractMeterPeriodMapper.xml

@@ -45,6 +45,12 @@
         where is_deleted = 0 and contract_id = #{contractId}
         ORDER BY sort
     </select>
+    <select id="getBeforeMoney" resultType="java.math.BigDecimal">
+        select sum(pay_money) from s_interim_pay_certificate
+        where is_deleted = 0  and contract_period_id in
+            (select id from s_contract_meter_period
+                       where  project_id = #{period.projectId} and contract_id = #{period.contractId} and approve_status = 2 and sort &lt; #{period.sort})
+    </select>
 
 
 </mapper>

+ 4 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyTaskMapper.java

@@ -1,8 +1,12 @@
 package org.springblade.meter.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.*;
 
+import java.math.BigDecimal;
+
 public interface MiddleMeterApplyTaskMapper extends BaseMapper<MiddleMeterApplyTask> {
 
+    BigDecimal selectAllMoney(@Param("id") Long id);
 }

+ 3 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MiddleMeterApplyTaskMapper.xml

@@ -2,4 +2,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.springblade.meter.mapper.MiddleMeterApplyTaskMapper">
 
+    <select id="selectAllMoney" resultType="java.math.BigDecimal">
+        select sum(meter_money) from s_middle_meter_apply_task where is_deleted = 0 and task_id = #{id}
+    </select>
 </mapper>