浏览代码

Merge remote-tracking branch 'origin/master'

liuyc 1 年之前
父节点
当前提交
b23beaf463
共有 38 个文件被更改,包括 489 次插入127 次删除
  1. 1 1
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 1 1
      blade-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java
  3. 2 1
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MeterTreeContractDTO.java
  4. 0 3
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormMeter.java
  5. 5 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MaterialStartStatement.java
  6. 77 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractFromVO.java
  7. 1 1
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterTreeContractVO.java
  8. 3 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/StartPayMeterFormVO.java
  9. 57 0
      blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ZeroChangeVO.java
  10. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskBatchMapper.xml
  11. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/service/impl/TaskServiceImpl.java
  12. 1 1
      blade-service/blade-business/src/main/java/org/springblade/business/utils/FunctionMain.java
  13. 2 2
      blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVisaServiceImpl.java
  14. 4 2
      blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java
  15. 2 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java
  16. 14 45
      blade-service/blade-manager/src/main/java/org/springblade/manager/utils/test.java
  17. 34 4
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ChangeTokenFormController.java
  18. 21 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractInventoryFormController.java
  19. 23 5
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InventoryFormMeterController.java
  20. 6 10
      blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterTreeController.java
  21. 8 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.java
  22. 22 2
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.xml
  23. 9 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.java
  24. 10 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.xml
  25. 2 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InventoryFormApplyMapper.xml
  26. 3 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InventoryFormMeterMapper.java
  27. 3 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InventoryFormMeterMapper.xml
  28. 1 3
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/MaterialStartStatementMapper.xml
  29. 5 3
      blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/StartPayMeterFormMapper.xml
  30. 12 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IChangeTokenFormService.java
  31. 5 4
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IContractInventoryFormService.java
  32. 5 1
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInventoryFormMeterService.java
  33. 47 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ChangeTokenFormServiceImpl.java
  34. 12 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractInventoryFormServiceImpl.java
  35. 28 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InventoryFormMeterServiceImpl.java
  36. 4 0
      blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MaterialMeterFormServiceImpl.java
  37. 55 30
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
  38. 2 0
      blade-service/blade-user/src/main/java/org/springblade/system/user/util/AesInfoUtil.java

+ 1 - 1
blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java

@@ -110,7 +110,7 @@ public interface LauncherConstant {
     /**
      * elk dev 地址
      */
-    String ELK_DEV_ADDR = "127.0.0.1:9000";
+    String ELK_DEV_ADDR = "192.168.0.119:9000";
 
     /**
      * elk prod 地址

+ 1 - 1
blade-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java

@@ -43,7 +43,7 @@ public class LauncherServiceImpl implements LauncherService {
         PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "false");
 
         // 开启elk日志
-        // PropsUtil.setProperty(props, "blade.log.elk.destination", LauncherConstant.elkAddr(profile));
+        //PropsUtil.setProperty(props, "blade.log.elk.destination", LauncherConstant.elkAddr(profile));
 
         // seata注册地址
         // PropsUtil.setProperty(props, "seata.service.grouplist.default", LauncherConstant.seataAddr(profile));

+ 2 - 1
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/dto/MeterTreeContractDTO.java

@@ -3,6 +3,7 @@ package org.springblade.meter.dto;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springblade.meter.entity.MeterTreeContract;
+import org.springblade.meter.vo.ContractFromVO;
 
 import java.util.List;
 
@@ -13,6 +14,6 @@ import java.util.List;
 public class MeterTreeContractDTO extends MeterTreeContract {
 
     @ApiModelProperty(value = "分解清单列表详情")
-    private List<Object> decompositionList; //TODO 此处Obj替换为分解清单Bean对象
+    private List<ContractFromVO> decompositionList; //TODO 此处Obj替换为分解清单Bean对象
 
 }

+ 0 - 3
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/InventoryFormMeter.java

@@ -17,9 +17,6 @@
 package org.springblade.meter.entity;
 
 import com.baomidou.mybatisplus.annotation.TableName;
-
-import java.io.Serializable;
-
 import io.swagger.annotations.ApiModelProperty;
 import org.springblade.core.mp.base.BaseEntity;
 import lombok.Data;

+ 5 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/entity/MaterialStartStatement.java

@@ -54,6 +54,11 @@ public class MaterialStartStatement extends BaseEntity {
      */
     @ApiModelProperty(value = "计量期id,s_meter_period")
     private Long meterPeriodId;
+    /**
+     * 计量期编号
+     */
+    @ApiModelProperty(value = "计量期编号")
+    private String periodNumber;
     /**
      * 1材料2开工
      */

+ 77 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ContractFromVO.java

@@ -0,0 +1,77 @@
+package org.springblade.meter.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springblade.core.tool.node.INode;
+
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Param
+ * @Author zhuw
+ * @Date 2023/11/29 15:25
+ **/
+@Data
+public class ContractFromVO {
+
+    /**
+     * 主键ID
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long id;
+
+    /**
+     * 清单编号
+     */
+    @ApiModelProperty(value = "清单编号")
+    @ExcelProperty("清单编号")
+    private String formNumber;
+    /**
+     * 清单名称
+     */
+    @ApiModelProperty(value = "清单名称")
+    @ExcelProperty("清单名称")
+    private String formName;
+
+    /**
+     * 当前单价
+     */
+    @ApiModelProperty(value = "当前单价")
+    @ExcelIgnore
+    private BigDecimal currentPrice;
+
+    /**
+     * 合同数量
+     */
+    @ApiModelProperty(value = "合同数量")
+    @ExcelProperty("数量")
+    private Integer contractTotal;
+
+    /**
+     * 变更后数量
+     */
+    @ApiModelProperty(value = "变更后数量")
+    @ExcelIgnore
+    private Integer changeTotal;
+
+    /**
+     * 已分解量
+     */
+    @ApiModelProperty(value = "已分解量")
+    @ExcelIgnore
+    private Integer poseNum;
+
+    /**
+     * 是否增补
+     */
+    @ApiModelProperty(value = "是否增补")
+    @ExcelIgnore
+    private Integer isSupplement;
+}

+ 1 - 1
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/MeterTreeContractVO.java

@@ -13,6 +13,6 @@ import java.util.List;
 public class MeterTreeContractVO extends MeterTreeContract {
 
     @ApiModelProperty(value = "分解清单列表详情")
-    private List<Object> decompositionList; //TODO 此处Obj替换为分解清单Bean对象
+    private List<ContractFromVO> decompositionList; //TODO 此处Obj替换为分解清单Bean对象
 
 }

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

@@ -35,6 +35,9 @@ import java.util.List;
 public class StartPayMeterFormVO extends StartPayMeterForm {
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty(value = "期号")
+	private String periodNumber;
+
 	@ApiModelProperty(value = "审批状态名称")
 	private String approveStatusName;
 

+ 57 - 0
blade-service-api/blade-meter-api/src/main/java/org/springblade/meter/vo/ZeroChangeVO.java

@@ -0,0 +1,57 @@
+package org.springblade.meter.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * @Param   零号变更视图类
+ * @Author wangwl
+ * @Date 2023/12/7 14:21
+ **/
+@Data
+public class ZeroChangeVO {
+
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "清单编号")
+    private String formNumber;
+
+    @ApiModelProperty(value = "清单名称")
+    private String formName;
+
+    @ApiModelProperty(value = "当前单价")
+    private BigDecimal currentPrice;
+
+    @ApiModelProperty(value = "合同数量")
+    private Integer contractTotal;
+
+    @ApiModelProperty(value = "合同金额")
+    private BigDecimal contractMoney;
+
+    @ApiModelProperty(value = "生成变更时划分数量")
+    private Integer buildChangeTotal;
+
+    @ApiModelProperty(value = "现划分数量")
+    private Integer currentChangeTotal;
+
+    @ApiModelProperty(value = "修正量")
+    private Integer updateTotal;
+
+    @ApiModelProperty(value = "修正金额")
+    private BigDecimal updateMoney;
+
+    @ApiModelProperty(value = "核实量")
+    private Integer verifyTotal;
+
+    @ApiModelProperty(value = "核实金额")
+    private BigDecimal verifyMoney;
+
+    @ApiModelProperty(value = "状态")
+    private Integer statusName;
+
+}

+ 1 - 1
blade-service/blade-business/src/main/java/org/springblade/business/mapper/TaskBatchMapper.xml

@@ -26,7 +26,7 @@
     </delete>
 
     <select id="queryDataInfo" resultMap="taskBatchResultMap">
-        SELECT * from u_task_batch where is_deleted not in(2,4) LIMIT 100
+--         SELECT * from u_task_batch where is_deleted not in(2,4) LIMIT 100
     </select>
 
 </mapper>

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

@@ -576,7 +576,7 @@ public class TaskServiceImpl extends BaseServiceImpl<TaskMapper, Task> implement
     }
 
 
-    @Scheduled(cron = "0 */1 * * * ?")
+   // @Scheduled(cron = "0 */1 * * * ?")
     public void SignInfo() {
         //执行代码
         logger.debug("扫描开始");

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

@@ -91,7 +91,7 @@ public class FunctionMain {
 
     public static void getToken() {
         HttpClient httpClient = HttpClientBuilder.create().build();
-        HttpPost httpPost = new HttpPost("http://localhost/blade-auth/oauth/token");
+        HttpPost httpPost = new HttpPost("http://localhost:8090/blade-auth/oauth/token");
         httpPost.setHeader("Authorization", "Basic c2FiZXI6c2FiZXJfc2VjcmV0");
         httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
         httpPost.setHeader("Tenant-Id", "000000");

+ 2 - 2
blade-service/blade-e-visa/src/main/java/org/springblade/evisa/service/impl/EVisaServiceImpl.java

@@ -542,7 +542,7 @@ public class EVisaServiceImpl implements EVisaService {
      */
     public String eVisaCustom(org.springblade.evisa.vo.TaskArchiveDTO taskArchiveDTO) {
         //type=1表示任务审批自定义签章,type=2表示认证电签签章(不涉及审批任务)
-        if (taskArchiveDTO.getSealStrategy().size() > 0 && taskArchiveDTO.getType() == 1) {
+        if (taskArchiveDTO.getSealStrategy()!=null && taskArchiveDTO.getSealStrategy().size() > 0 && taskArchiveDTO.getType() == 1) {
             //获取档案任务
             Task task = jdbcTemplate.queryForObject("select form_data_id from u_task where id = " + taskArchiveDTO.getTaskId(), new BeanPropertyRowMapper<>(Task.class));
             if (task != null) {
@@ -611,7 +611,7 @@ public class EVisaServiceImpl implements EVisaService {
                 }
             }
             return "";
-        } else if (taskArchiveDTO.getSealStrategy().size() > 0 && taskArchiveDTO.getType() == 2) {
+        } else if (taskArchiveDTO.getSealStrategy()!=null && taskArchiveDTO.getSealStrategy().size() > 0 && taskArchiveDTO.getType() == 2) {
             //此时的taskArchiveDTO.taskId=档案数据业务id(档案认证不涉及审批流任务)
             //获取档案任务的文件信息(这里根据id再查询一次,入参的时候不想重新构造入参的dto了)
             ArchiveFile archiveFile = jdbcTemplate.queryForObject("select pdf_file_url,e_visa_file from u_archive_file where id = " + taskArchiveDTO.getTaskId(), new BeanPropertyRowMapper<>(ArchiveFile.class));

+ 4 - 2
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -318,9 +318,11 @@ public class ExcelTabController extends BladeController {
         ExcelInfoUtils.excelInfo(file.getInputStream(), exceUrl, thmlUrl, "1");
         // 上传excel文件
         BladeFile bladeFile = newIOSSClient.uploadFile(file.getOriginalFilename(), exceUrl);
-        // 解析原始excel
 
-        //  BladeFile bladeFileR = newIOSSClient.uploadFileByInputStream(file);
+        if(bladeFile==null || ObjectUtil.isEmpty(bladeFile)){
+            return R.fail("oss上传失败,请校验oss配置是否正确");
+        }
+        // 解析原始excel
         detail.setExtension(file.getOriginalFilename());
         detail.setFileUrl(bladeFile.getLink());
         detail.setFileType(3); // 表示为清表信息  1 表示祖节点  2 表示为节点信息 3 表示清表

+ 2 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -1675,13 +1675,10 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
                             String myData = DataInfo.get(val) + "";
                             if ((myData.indexOf("T") >= 0 && myData.indexOf("-") >= 0) || (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0)) {
-
                                 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
                                 sdf.setTimeZone(TimeZone.getTimeZone("GTM+8"));
                                 SimpleDateFormat formatStr = new SimpleDateFormat("yyyy年MM月dd日");
-
                                 if (myData.indexOf(",") >= 0 && myData.indexOf("]") >= 0) {
-
                                     myData = myData.replace("[", "").replace("]", "").replaceAll("'", "");
                                     String[] dataVal = myData.split(",");
                                     Date Start_dataStr = new Date();
@@ -1842,7 +1839,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
         FileOutputStream outputStream = new FileOutputStream(excelPath);
         workbook.write(outputStream);
 
-        FileUtils.excel2pdf(excelPath, pdfPath);
+      //  FileUtils.excel2pdf(excelPath, pdfPath);
+        FileUtils.excelToPdf(excelPath, pdfPath);
 
         BladeFile bladeFile = newIOSSClient.uploadFile(pkeyId + ".pdf", pdfPath);
 

+ 14 - 45
blade-service/blade-manager/src/main/java/org/springblade/manager/utils/test.java

@@ -1,55 +1,24 @@
 package org.springblade.manager.utils;
 
-
-
-
-
-import com.spire.xls.CellRange;
-import com.spire.xls.Workbook;
-import com.spire.xls.Worksheet;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.nodes.Element;
-import org.jsoup.select.Elements;
-import org.springblade.core.tool.utils.IoUtil;
-import org.springblade.core.tool.utils.ResourceUtil;
+import cn.hutool.http.useragent.UserAgentUtil;
+import cn.hutool.jwt.JWT;
+import cn.hutool.jwt.JWTUtil;
+import io.jsonwebtoken.Claims;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.utils.Charsets;
+import org.springblade.core.tool.utils.StringPool;
 
 import java.io.*;
+import java.util.Base64;
 
 public class test {
+    public static void main11(String[] args) throws IOException {
+     String token ="bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRfaWQiOiIwMDAwMDAiLCJ1c2VyX25hbWUiOiJwZW5nY3QiLCJyZWFsX25hbWUiOiJQQ1QiLCJhdmF0YXIiOiJodHRwczovL2JsYWRleC1jaG9uZ3FpbmctaW5mby5vc3MtY24taGFuZ3pob3UuYWxpeXVuY3MuY29tLy91cGxvYWQvMjAyMjA2MTYvOGVkMzdhMTU2ZjJiMTc3ZDY5MTgxYzg3Njg5MjczOWYuanBnIiwiYXV0aG9yaXRpZXMiOlsiYWRtaW5pc3RyYXRvciJdLCJjbGllbnRfaWQiOiJjbGllbnQiLCJyb2xlX25hbWUiOiJhZG1pbmlzdHJhdG9yIiwibGljZW5zZSI6InBvd2VyZWQgYnkgYmxhZGV4IiwicG9zdF9pZCI6IjE1MzcyNjAzOTA3NzI1OTI2NDEiLCJ1c2VyX2lkIjoiMTUzNjk4NTA5NDU3MTgyMzEwNSIsInJvbGVfaWQiOiIxMTIzNTk4ODE2NzM4Njc1MjAxIiwicGhvbmUiOiIxODU4MDE0NzU1MCIsInNjb3BlIjpbImFsbCJdLCJuaWNrX25hbWUiOiJQQ1QiLCJvYXV0aF9pZCI6IiIsImRldGFpbCI6eyJ0eXBlIjoid2ViIn0sImV4cCI6MTcwMTMzNTM1OCwiZGVwdF9pZCI6IjE1MzY5ODMwNTYzNjIzODEzMTMiLCJqdGkiOiIzOGE2MDA4Yi01MzQ2LTQ5YjktOGU0OC1hOTNmYjNlNjYyMGYiLCJhY2NvdW50IjoicGVuZ2N0In0._IvCSHGZY8P74XcPWnRw7D46zWORsPCRKkB0HQgxjU0";
 
-    public static void main1(String[] args) throws IOException {
-     //   String excel="/Users/hongchuangyanfa/Downloads/JL1036隧道锚喷支护施工记录表.xlsx";
-        String excel="/Users/hongchuangyanfa/Downloads/养护表格/ZJY6.11.2植筋检验表.xlsx";
-        String poiPath="/Users/hongchuangyanfa/Desktop/pdf/poi.pdf";
-        String pdfPath22="/Users/hongchuangyanfa/Desktop/pdf/poi222.pdf";
-        String pdfPathhtml="/Users/hongchuangyanfa/Desktop/pdf/poi222.html";
-        Workbook workbook2 = new Workbook();
-        workbook2.loadFromFile(excel);
-        //设置转换后的PDF页面高宽适应工作表的内容大小
-        workbook2.getConverterSetting().setSheetFitToPage(true);
-        Worksheet sheet = workbook2.getWorksheets().get(0);
-
-        sheet.saveToHtml(pdfPathhtml);
-
-        File file1 = ResourceUtil.getFile(pdfPathhtml);
-        String htmlString = IoUtil.readToString(new FileInputStream(file1));
-        Document doc = Jsoup.parse(htmlString);
-        Element table = doc.select("table").first();
-        Elements trs = table.select("tr");
-        Elements cols = table.select("Col");
-
-        sheet.deleteRow(trs.size(),sheet.getRows().length - trs.size());
-        sheet.deleteColumn(cols.size(),sheet.getColumns().length - cols.size());
-
-        System.out.println(trs.size());
-        System.out.println(cols.size());
-
-        System.out.println(sheet.getRows().length);
-        System.out.println(sheet.getColumns().length);
-
-
-        ////16384*/
+        byte[] decoded = Base64.getDecoder().decode(token);
+        String token2 = new String(decoded, Charsets.UTF_8_NAME);
+        int index = token2.indexOf(StringPool.COLON);
+        System.out.println("ccd");
     }
 
 }

+ 34 - 4
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ChangeTokenFormController.java

@@ -16,9 +16,7 @@
  */
 package org.springblade.meter.controller;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
@@ -27,6 +25,7 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.meter.vo.ZeroChangeVO;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.RequestParam;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -34,6 +33,8 @@ import org.springblade.meter.entity.ChangeTokenForm;
 import org.springblade.meter.service.IChangeTokenFormService;
 import org.springblade.core.boot.ctrl.BladeController;
 
+import java.util.List;
+
 /**
  * 变更令表 控制器
  *
@@ -43,11 +44,40 @@ import org.springblade.core.boot.ctrl.BladeController;
 @RestController
 @AllArgsConstructor
 @RequestMapping("/changeTokenForm")
-@Api(value = "变更令表", tags = "变更令表接口")
+@Api(value = "变更管理", tags = "变更管理接口")
 public class ChangeTokenFormController extends BladeController {
 
 	private final IChangeTokenFormService changeTokenFormService;
 
+	/**
+	 * 一键生成零号变更
+	 */
+	@GetMapping("/buildZeroChange")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "一键生成零号变更", notes = "传入合同段id")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true)
+	})
+	public R buildZeroChange(Long contractId) {
+		changeTokenFormService.buildZeroChange(contractId);
+		return R.success("生成成功");
+	}
+
+	/**
+	 * 获取零号变更
+	 */
+	@GetMapping("/getZeroChange")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "获取节点下的零号变更", notes = "传入合同段id,节点id")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "contractId", value = "合同id", required = true),
+			@ApiImplicitParam(name = "nodeId", value = "节点id", required = true)
+	})
+	public R<List<ZeroChangeVO>> getZeroChange(Long contractId, Long nodeId) {
+		List<ZeroChangeVO> vos = changeTokenFormService.getZeroChange(contractId,nodeId);
+		return R.data(vos);
+	}
+
 	/**
 	 * 详情
 	 */

+ 21 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/ContractInventoryFormController.java

@@ -25,6 +25,8 @@ import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.meter.vo.ContractFromVO;
 import org.springblade.meter.vo.ContractInventoryFormVO;
 import org.springblade.meter.vo.ContractInventoryFormVO2;
 import org.springblade.meter.vo.FormTreeVO;
@@ -176,5 +178,24 @@ public class ContractInventoryFormController extends BladeController {
 		return R.data("https://bladex-chongqing-info.oss-cn-hangzhou.aliyuncs.com//upload/20231201/853cebb7e9c89c982dd15f842fed42a3.xls");
 	}
 
+
+
+	/**
+	 * 分解获取合同段清单列表
+	 */
+	@GetMapping("getContrInFormAllByConId")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "获取合同工程清单表", notes = "返回获取合同工程清单表列表")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "contractId", value = "", required = true),
+			@ApiImplicitParam(name = "formNum", value = "formNum", required = true)
+	})
+	public R<List<ContractFromVO>> getFormTree(Long contractId, String formNum){
+		if(contractId!=null && ObjectUtil.isEmpty(contractId)){
+			return R.fail("contractId不能为空");
+		}
+		List<ContractFromVO> treeAll = contractInventoryFormService.getContrFormAllByContrId(contractId,formNum);
+		return R.data(treeAll);
+	}
 	
 }

+ 23 - 5
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/InventoryFormMeterController.java

@@ -16,13 +16,12 @@
  */
 package org.springblade.meter.controller;
 
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.*;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
 import lombok.AllArgsConstructor;
 import javax.validation.Valid;
 
+import org.apache.commons.lang.StringUtils;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
@@ -43,7 +42,7 @@ import org.springblade.core.boot.ctrl.BladeController;
 @RestController
 @AllArgsConstructor
 @RequestMapping("/inventoryFormMeter")
-@Api(value = "工程清单与合同计量单元	中间表", tags = "工程清单与合同计量单元	中间表接口")
+@Api(value = "工程清单与合同计量单元中间表", tags = "工程清单与合同计量单元中间表接口")
 public class InventoryFormMeterController extends BladeController {
 
 	private final IInventoryFormMeterService inventoryFormMeterService;
@@ -113,5 +112,24 @@ public class InventoryFormMeterController extends BladeController {
 		return R.status(inventoryFormMeterService.deleteLogic(Func.toLongList(ids)));
 	}
 
-	
+
+	/**
+	 * 添加同合计量 清单
+	 */
+	@PostMapping("/saveInvenFormMeter")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "添加同合计量 清单", notes = "传入")
+	@ApiImplicitParams(value = {
+			@ApiImplicitParam(name = "meterId", value = "合同计量单元id", required = true),
+			@ApiImplicitParam(name = "formIds", value = "合同工程清单ids,多个以,分割", required = true)
+	})
+	public R inventoryFormMeterService(String meterId,String formIds) {
+		if(meterId==null & StringUtils.isEmpty(meterId)){
+			R.fail("计量单元meterId不能为null");
+		}
+		if(formIds!=null & StringUtils.isNotEmpty(formIds)){
+			R.fail("合同工程清单formIds不能为null");
+		}
+		return inventoryFormMeterService.inventoryFormMeterService(meterId,formIds);
+	}
 }

+ 6 - 10
blade-service/blade-meter/src/main/java/org/springblade/meter/controller/MeterTreeController.java

@@ -25,14 +25,8 @@ import org.springblade.meter.entity.MeterTreeContract;
 import org.springblade.meter.entity.MeterTreeProject;
 import org.springblade.meter.entity.MeterTreeSystem;
 import org.springblade.meter.entity.MeterTreeTemplateInfo;
-import org.springblade.meter.service.MeterTreeContractService;
-import org.springblade.meter.service.MeterTreeProjectService;
-import org.springblade.meter.service.MeterTreeSystemService;
-import org.springblade.meter.service.MeterTreeTemplateInfoService;
-import org.springblade.meter.vo.MeterTreeContractTreeVO;
-import org.springblade.meter.vo.MeterTreeContractVO;
-import org.springblade.meter.vo.MeterTreeProjectTreeVO;
-import org.springblade.meter.vo.MeterTreeSystemTreeVO;
+import org.springblade.meter.service.*;
+import org.springblade.meter.vo.*;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
@@ -53,6 +47,7 @@ public class MeterTreeController extends BladeController {
     private final MeterTreeSystemService meterTreeSystemService;
     private final MeterTreeProjectService meterTreeProjectService;
     private final MeterTreeContractService meterTreeContractService;
+    private final IContractInventoryFormService contractInventoryFormService;
 
     @GetMapping("/template/detail")
     @ApiOperationSupport(order = 1)
@@ -564,9 +559,10 @@ public class MeterTreeController extends BladeController {
         if (basicInfo != null) {
             MeterTreeContractVO vo = new MeterTreeContractVO();
             BeanUtil.copyProperties(basicInfo, vo);
-
             //TODO 此处为分解列表信息,查询赋值
-            vo.setDecompositionList(null);
+            List<ContractFromVO> contrFormAllByContrId = contractInventoryFormService.getContrFormAllByContrId(basicInfo.getContractId(), "");
+
+            vo.setDecompositionList(contrFormAllByContrId);
             return R.data(vo);
         }
         return R.data(null);

+ 8 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ChangeTokenFormMapper.java

@@ -16,8 +16,13 @@
  */
 package org.springblade.meter.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.ChangeTokenForm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.entity.ContractInventoryForm;
+import org.springblade.meter.vo.ZeroChangeVO;
+
+import java.util.List;
 
 /**
  * 变更令表 Mapper 接口
@@ -28,4 +33,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 public interface ChangeTokenFormMapper extends BaseMapper<ChangeTokenForm> {
 
 
+    List<ContractInventoryForm> getAllForm(@Param("contractId") Long contractId);
+
+    List<ZeroChangeVO> getZeroChange(@Param("contractId") Long contractId,@Param("nodeId") Long nodeId);
 }

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

@@ -30,8 +30,28 @@
         <result column="approve_status" property="approveStatus"/>
         <result column="command_status" property="commandStatus"/>
     </resultMap>
-
-
+    <select id="getAllForm" resultType="org.springblade.meter.entity.ContractInventoryForm">
+        select cif.id,
+               IFNULL((select sum(build_picture_total) from s_inventory_form_meter ifm
+                where ifm.contract_id = #{contractId} and ifm.is_deleted = 0 and ifm.contract_form_id = cif.id),0) as build_change_total
+        from s_contract_inventory_form cif
+        where contract_id = #{contractId} and is_deleted = 0 and is_form_node = 1
+    </select>
+    <select id="getZeroChange" resultType="org.springblade.meter.vo.ZeroChangeVO">
+        select id,form_number,form_name,current_price,contract_total,contract_money,
+               build_change_total,
+               IFNULL((select sum(build_picture_total) from s_inventory_form_meter ifm
+                       where ifm.contract_id = #{contractId} and ifm.is_deleted = 0 and ifm.contract_form_id = cif.id),0) as currentChangeTotal
+        from s_contract_inventory_form cif
+        where contract_id = #{contractId} and is_deleted = 0 and is_form_node = 1
+          and id in(SELECT contract_form_id FROM s_inventory_form_meter
+                        WHERE contract_id = #{contractId} and is_deleted = 0
+                        and contract_meter_id in ( SELECT id FROM s_meter_tree_contract mtc WHERE contract_id = #{contractId} and is_deleted = 0
+                                    and (mtc.id = #{nodeId} or FIND_IN_SET(#{nodeId}, ancestor) > 0)
+                                                    )
+                        GROUP BY contract_form_id
+              )
+    </select>
 
 
 </mapper>

+ 9 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.java

@@ -19,6 +19,7 @@ package org.springblade.meter.mapper;
 import org.apache.ibatis.annotations.Param;
 import org.springblade.meter.entity.ContractInventoryForm;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.springblade.meter.vo.ContractFromVO;
 import org.springblade.meter.vo.ContractInventoryFormVO;
 import org.springblade.meter.vo.ContractInventoryFormVO2;
 import org.springblade.meter.vo.FormTreeVO;
@@ -46,4 +47,12 @@ public interface ContractInventoryFormMapper extends BaseMapper<ContractInventor
     void updateNode(@Param("id") Long id,@Param("contractId") Long contractId);
 
     List<ContractInventoryFormVO2> getChildNode(@Param("contractId") Long contractId, @Param("parentId") Long parentId);
+
+    /**
+     * 获取合同工程清单表
+     * @param contractId
+     * @param formNum
+     * @return
+     */
+    List<ContractFromVO> getContrFormAllByContrId(@Param("contractId") Long contractId, @Param("formNum") String formNum);
 }

+ 10 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/ContractInventoryFormMapper.xml

@@ -78,5 +78,15 @@
         order by sort
     </select>
 
+    <select id="getContrFormAllByContrId" resultType="org.springblade.meter.vo.ContractFromVO">
+        select id,form_number,form_name,current_price,contract_total,change_total,
+        (SELECT count(1) from s_inventory_form_meter a where is_deleted=0 and a.contract_id=u.contract_id and a.contract_form_id=u.id) as poseNum,is_supplement
+        from s_contract_inventory_form u
+        where contract_id = #{contractId} and is_deleted = 0
+        <if test="formNum != null and formNum != ''">
+            and u.form_number like concat('%',#{formNum},'%')
+        </if>
+        order by sort
+    </select>
 
 </mapper>

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

@@ -19,6 +19,7 @@
         <result column="current_meter_total" property="currentMeterTotal"/>
     </resultMap>
 
+    <select id="dadainfo" >
 
-
+    </select>
 </mapper>

+ 3 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/InventoryFormMeterMapper.java

@@ -16,7 +16,8 @@
  */
 package org.springblade.meter.mapper;
 
-import org.apache.ibatis.annotations.Param;
+import feign.Param;
+import org.springblade.meter.entity.ContractInventoryForm;
 import org.springblade.meter.entity.InventoryFormMeter;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -32,4 +33,5 @@ public interface InventoryFormMeterMapper extends BaseMapper<InventoryFormMeter>
 
 
     List<Long> getNodeAllForm(@Param("nodeId") Long nodeId);
+    ContractInventoryForm dadainfo(@Param("forid") long forid);
 }

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

@@ -24,5 +24,8 @@
         where contract_meter_id = #{nodeId} and is_deleted = 0
     </select>
 
+    <select id="dadainfo" resultType="org.springblade.meter.entity.ContractInventoryForm">
+        select * from s_contract_inventory_form where id=#{forid} ;
+    </select>
 
 </mapper>

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

@@ -24,9 +24,7 @@
         <result column="sort" property="sort"/>
     </resultMap>
     <select id="page2" resultType="org.springblade.meter.entity.MaterialStartStatement">
-        select id,meter_period_id,statement_name,repayment_cause,
-               (select period_name from s_meter_period smp where smp.id = mss.statement_period) as statement_period,
-               (select form_print_date from s_meter_period smp where smp.id = mss.statement_period) as print_date
+        select *
         from s_material_start_statement mss
         where contract_id = #{statement.contractId} and type = #{statement.type} and is_deleted = 0
         order by sort

+ 5 - 3
blade-service/blade-meter/src/main/java/org/springblade/meter/mapper/StartPayMeterFormMapper.xml

@@ -24,17 +24,19 @@
     </resultMap>
     <select id="meterPage" resultType="org.springblade.meter.vo.StartPayMeterFormVO">
         select *,
+               (select period_number from s_meter_period smp where smp.id = spmf.meter_period_id) as periodNumber,
             CASE when approve_status = 0 then '未上报' when approve_status = 1 then '待审批' when approve_status = 2 then '已审批'
             else '已废除' end as approveStatusName
-        from s_start_pay_meter_form
+        from s_start_pay_meter_form spmf
         where contract_id = #{contractId} and is_deleted = 0
         <if test="meterPeriodId!=null and meterPeriodId!=''">
             and meter_period_id = #{meterPeriodId}
         </if>
     </select>
     <select id="detail" resultType="org.springblade.meter.vo.StartPayMeterFormVO">
-        select *
-        from s_start_pay_meter_form
+        select *,
+               (select period_number from s_meter_period smp where smp.id = spmf.meter_period_id) as periodNumber
+        from s_start_pay_meter_form spmf
         where id = #{id}
     </select>
 

+ 12 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IChangeTokenFormService.java

@@ -18,6 +18,9 @@ package org.springblade.meter.service;
 
 import org.springblade.meter.entity.ChangeTokenForm;
 import org.springblade.core.mp.base.BaseService;
+import org.springblade.meter.vo.ZeroChangeVO;
+
+import java.util.List;
 
 /**
  * 变更令表 服务类
@@ -28,4 +31,13 @@ import org.springblade.core.mp.base.BaseService;
 public interface IChangeTokenFormService extends BaseService<ChangeTokenForm> {
 
 
+    /**
+     * 一键生成零号变更
+     */
+    void buildZeroChange(Long contractId);
+
+    /**
+     * 获取零号变更
+     */
+    List<ZeroChangeVO> getZeroChange(Long contractId, Long nodeId);
 }

+ 5 - 4
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IContractInventoryFormService.java

@@ -19,10 +19,7 @@ package org.springblade.meter.service;
 import org.springblade.core.tool.api.R;
 import org.springblade.meter.entity.ContractInventoryForm;
 import org.springblade.core.mp.base.BaseService;
-import org.springblade.meter.vo.ContractInventoryFormVO;
-import org.springblade.meter.vo.ContractInventoryFormVO2;
-import org.springblade.meter.vo.FormTreeVO;
-import org.springblade.meter.vo.InventoryFormDetailVO;
+import org.springblade.meter.vo.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -53,4 +50,8 @@ public interface IContractInventoryFormService extends BaseService<ContractInven
     void delete(Long id,Long contractId);
 
     List<ContractInventoryFormVO2> lazyTree(Long projectId, Long contractId, Long parentId);
+
+    //获取合同工程清单表
+    List<ContractFromVO> getContrFormAllByContrId(Long contractId, String formNum);
+
 }

+ 5 - 1
blade-service/blade-meter/src/main/java/org/springblade/meter/service/IInventoryFormMeterService.java

@@ -16,6 +16,7 @@
  */
 package org.springblade.meter.service;
 
+import org.springblade.core.tool.api.R;
 import org.springblade.meter.entity.InventoryFormMeter;
 import org.springblade.core.mp.base.BaseService;
 
@@ -33,5 +34,8 @@ public interface IInventoryFormMeterService extends BaseService<InventoryFormMet
     List<Long> getNodeAllForm(Long nodeId);
 
 
-
+    /**
+     * 添加同合计量 清单
+     */
+    R inventoryFormMeterService(String meterId, String formIds);
 }

+ 47 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ChangeTokenFormServiceImpl.java

@@ -16,12 +16,20 @@
  */
 package org.springblade.meter.service.impl;
 
+import lombok.AllArgsConstructor;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.meter.entity.ChangeTokenForm;
+import org.springblade.meter.entity.ContractInventoryForm;
 import org.springblade.meter.mapper.ChangeTokenFormMapper;
 import org.springblade.meter.service.IChangeTokenFormService;
 import org.springblade.core.mp.base.BaseServiceImpl;
+import org.springblade.meter.service.IContractInventoryFormService;
+import org.springblade.meter.vo.ZeroChangeVO;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.List;
+
 /**
  * 变更令表 服务实现类
  *
@@ -29,8 +37,47 @@ import org.springframework.stereotype.Service;
  * @since 2023-11-29
  */
 @Service
+@AllArgsConstructor
 public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormMapper, ChangeTokenForm> implements IChangeTokenFormService {
 
+    private final IContractInventoryFormService contractInventoryFormService;
+
 
+    /**
+     * 一键生成零号变更  统计每个清单节点当前分解量,设置进清单的划分数量
+     */
+    @Override
+    public void buildZeroChange(Long contractId) {
+        //联表查询清单表和中间表
+        List<ContractInventoryForm> list = baseMapper.getAllForm(contractId);
+        if (list.size() == 0){
+            throw new ServiceException("生成失败,当前合同段还没有清单");
+        }
+        //修改清单表的划分数量
+        contractInventoryFormService.updateBatchById(list);
+    }
 
+    /**
+     * 获取零号变更
+     */
+    @Override
+    public List<ZeroChangeVO> getZeroChange(Long contractId, Long nodeId) {
+        //获取当前节点下所有分解的清单,还要统计当前分解量
+        List<ZeroChangeVO> vos = baseMapper.getZeroChange(contractId,nodeId);
+        if (vos.size() == 0){
+            return vos;
+        }
+        //计算修正量,核实量
+        for (ZeroChangeVO vo : vos) {
+            //修正量=现划分量—合同数量
+            vo.setUpdateTotal(vo.getCurrentChangeTotal() - vo.getContractTotal());
+            //修正金额=现行单价*修正量
+            vo.setUpdateMoney(vo.getCurrentPrice().multiply(new BigDecimal(vo.getUpdateTotal())));
+            //核实量=先划分数量
+            vo.setVerifyTotal(vo.getCurrentChangeTotal());
+            //核实金额=核实量*现行单价
+            vo.setVerifyMoney(vo.getCurrentPrice().multiply(new BigDecimal(vo.getVerifyTotal())));
+        }
+        return vos;
+    }
 }

+ 12 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/ContractInventoryFormServiceImpl.java

@@ -36,6 +36,7 @@ import org.springblade.meter.service.IContractInventoryFormService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.meter.service.IInventoryFormMeterService;
 import org.springblade.meter.utils.ForestNodeMerger;
+import org.springblade.meter.vo.ContractFromVO;
 import org.springblade.meter.vo.ContractInventoryFormVO;
 import org.springblade.meter.vo.ContractInventoryFormVO2;
 import org.springblade.meter.vo.FormTreeVO;
@@ -467,6 +468,17 @@ public class ContractInventoryFormServiceImpl extends BaseServiceImpl<ContractIn
         return  vos;
     }
 
+    /**
+     * 获取合同工程清单表
+     * @param contractId
+     * @param formNum
+     * @return
+     */
+    @Override
+    public List<ContractFromVO> getContrFormAllByContrId(Long contractId, String formNum) {
+        return  baseMapper.getContrFormAllByContrId(contractId,formNum);
+    }
+
     /**
      * 判断当前节点是否已经分解或变更过,变更过返回true
      */

+ 28 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/InventoryFormMeterServiceImpl.java

@@ -16,6 +16,11 @@
  */
 package org.springblade.meter.service.impl;
 
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
+import org.springblade.meter.entity.ContractInventoryForm;
 import org.springblade.meter.entity.InventoryFormMeter;
 import org.springblade.meter.mapper.InventoryFormMeterMapper;
 import org.springblade.meter.service.IInventoryFormMeterService;
@@ -38,4 +43,27 @@ public class InventoryFormMeterServiceImpl extends BaseServiceImpl<InventoryForm
     public List<Long> getNodeAllForm(Long nodeId) {
         return baseMapper.getNodeAllForm(nodeId);
     }
+    /**
+     * 添加同合计量 清单
+     */
+    @Override
+    public R inventoryFormMeterService(String meterId, String formIds) {
+        List<Long> longList = Func.toLongList(formIds);
+        for(Long forid:longList){
+            InventoryFormMeter inventoryFormMeter = baseMapper.selectOne(Wrappers.<InventoryFormMeter>query().lambda()
+                    .eq(InventoryFormMeter::getContractMeterId, meterId)
+                    .eq(InventoryFormMeter::getContractFormId, forid));
+            if(inventoryFormMeter==null && ObjectUtil.isEmpty(inventoryFormMeter)){
+                ContractInventoryForm inventoryForm = baseMapper.dadainfo(forid);
+                InventoryFormMeter data =new InventoryFormMeter();
+                data.setContractId(inventoryForm.getContractId());
+                data.setProjectId(inventoryForm.getProjectId());
+                data.setContractFormId(forid);
+                data.setContractMeterId(Func.toLong(meterId));
+                data.setBuildPictureTotal(0);
+                baseMapper.insert(data);
+            }
+        }
+        return R.success("成功");
+    }
 }

+ 4 - 0
blade-service/blade-meter/src/main/java/org/springblade/meter/service/impl/MaterialMeterFormServiceImpl.java

@@ -69,6 +69,8 @@ public class MaterialMeterFormServiceImpl extends BaseServiceImpl<MaterialMeterF
         List<AttachmentForm> fileList = dto.getFileList();
         if (fileList != null && fileList.size() != 0) {
             for (AttachmentForm file : fileList) {
+                file.setProjectId(dto.getProjectId());
+                file.setContractId(dto.getContractId());
                 file.setMasterId(id);
             }
             attachmentFormService.saveBatch(fileList);
@@ -118,6 +120,8 @@ public class MaterialMeterFormServiceImpl extends BaseServiceImpl<MaterialMeterF
         List<AttachmentForm> fileList = dto.getFileList();
         if (fileList != null && fileList.size() != 0) {
             for (AttachmentForm file : fileList) {
+                file.setProjectId(dto.getProjectId());
+                file.setContractId(dto.getContractId());
                 file.setMasterId(form.getId());
             }
             attachmentFormService.saveBatch(fileList);

+ 55 - 30
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

@@ -17,13 +17,17 @@
 package org.springblade.system.user.controller;
 
 
+import cn.hutool.jwt.JWT;
+import cn.hutool.jwt.JWTUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.common.utils.MD5Utils;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import io.jsonwebtoken.Claims;
 import io.swagger.annotations.*;
 import lombok.AllArgsConstructor;
 import org.apache.http.Consts;
@@ -31,6 +35,7 @@ import org.apache.http.HttpResponse;
 import org.apache.http.NameValuePair;
 import org.apache.http.client.HttpClient;
 import org.apache.http.client.entity.UrlEncodedFormEntity;
+import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.message.BasicNameValuePair;
@@ -423,58 +428,78 @@ public class UserController {
         return R.success("操作成功");
     }
 
-
     /**
      * token验证登录
      */
     @PostMapping("/loginByToken")
     @ApiOperationSupport(order = 20)
     @ApiOperation(value = "token验证加密", notes = "token验证登录")
-    public R loginByToken(String token, String account, String timestamp) {
-        if (StringUtil.isBlank(token)) {
-            return R.fail("请输出token");
-        }
-        if (StringUtil.isBlank(account)) {
-            return R.fail("请输出account");
-        }
-        if (StringUtil.isBlank(timestamp)) {
-            return R.fail("请输出timestamp");
+    public R loginByToken(String  token) {
+      //  this.loginByToken2(token);
+        token = "bearer "+token;
+        HttpClient httpClient = HttpClientBuilder.create().build();
+        HttpGet httpPost = new HttpGet("http://47.110.251.215:8090/blade-auth/oauth/user-info");
+        httpPost.setHeader("Authorization", token); //这个需要 client:
+        List<NameValuePair> params = new ArrayList<NameValuePair>();
+
+        try {
+            HttpResponse httpResponse = httpClient.execute(httpPost);
+            InputStream inputStream = httpResponse.getEntity().getContent();
+            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+            byte[] buffer = new byte[1024];
+            int index = 0;
+            while ((index = inputStream.read(buffer)) != -1) {
+                outputStream.write(buffer, 0, index);
+            }
+            JSONObject jsonObject = JSON.parseObject(outputStream.toString());
+            if(jsonObject!=null && ObjectUtil.isNotEmpty(jsonObject)){
+                JSONObject data = jsonObject.getJSONObject("data");
+                String name = data.getString("name");
+                return this.loginByToken2(name);
+            }else{
+                return R.fail("token解析用户失败");
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            return R.success("操作失败");
         }
 
-        //解析tokne
-        String tokenInfo = AesInfoUtil.decrypt(token, null);
-        if (tokenInfo != null && tokenInfo.length() >= 20) {
-            JSONObject tokenUser = JSON.parseObject(tokenInfo);
-            String tokenPw = tokenUser.getString("password");
+    }
 
-            String tokenAccount = tokenUser.getString("account");
+    @PostMapping("/loginByToken2")
+    @ApiOperationSupport(order = 20)
+    @ApiOperation(value = "token验证加密", notes = "token验证登录")
+    public R loginByToken2(String account) {
+        if (StringUtil.isBlank(account)) {
+            return R.fail("请输出token");
+        }
 
-            String tokenTimestamp = tokenUser.getString("timestamp");
-            if (!account.equals(account)) {
-                return R.fail("token解析用户和account不一致");
-            }
+        if (account != null) {
             QueryWrapper<User> queryWrapper = new QueryWrapper<>();
-            queryWrapper.eq("account", tokenAccount);
+            queryWrapper.eq("account", account);
             // queryWrapper.eq("password", tokenPw);
             queryWrapper.eq("sys_type", 2);
             User userInfo = userService.getOne(queryWrapper);
             if (userInfo == null) {
                 return R.fail("用户名或密码错误");
             }
-            //获取用户list
+            String tenId =userInfo.getTenantId();
+            String pass = userInfo.getPlaintextPassword();
+            String md5Pass =MD5Utils.md5Hex(pass,"UTF-8");
+            System.out.println("密码"+ md5Pass);
+
             HttpClient httpClient = HttpClientBuilder.create().build();
-            HttpPost httpPost = new HttpPost("http://172.31.222.127:8090/blade-auth/oauth/token");
-            httpPost.setHeader("Authorization", "Basic Y2xpZW50OmNsaWVudF9zZWNyZXQ="); //这个需要 client:
+            HttpPost httpPost = new HttpPost("http://47.110.251.215:8090/blade-auth/oauth/token");
+            httpPost.setHeader("Authorization", "Basic YXJjaGl2ZXM6YXJjaGl2ZXNfc2VjcmV0");
             httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
             httpPost.setHeader("Tenant-Id", "000000");
             List<NameValuePair> params = new ArrayList<NameValuePair>();
             params.add(new BasicNameValuePair("grant_type", "password"));
-            params.add(new BasicNameValuePair("username", userInfo.getAccount()));
-            params.add(new BasicNameValuePair("password", "e10adc3949ba59abbe56e057f20f883e"));
+            params.add(new BasicNameValuePair("username", account));
+            params.add(new BasicNameValuePair("password", md5Pass));
             params.add(new BasicNameValuePair("scope", "all"));
             params.add(new BasicNameValuePair("tenantId", "000000"));
             httpPost.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8));
-
             try {
                 HttpResponse httpResponse = httpClient.execute(httpPost);
                 InputStream inputStream = httpResponse.getEntity().getContent();
@@ -484,15 +509,15 @@ public class UserController {
                 while ((index = inputStream.read(buffer)) != -1) {
                     outputStream.write(buffer, 0, index);
                 }
-                System.out.println(JSON.parseObject(outputStream.toString()));
+                System.out.println("\n");
                 return R.data(JSON.parseObject(outputStream.toString()));
             } catch (IOException e) {
                 e.printStackTrace();
-                return R.success("操作失败");
             }
         } else {
-            return R.fail("请确认token是否有误");
+            return R.fail("请确认account是否有误");
         }
+        return R.fail("");
     }
 
     /**

+ 2 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/util/AesInfoUtil.java

@@ -1,6 +1,7 @@
 package org.springblade.system.user.util;
 
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.common.utils.MD5Utils;
 import org.apache.commons.codec.binary.Base64;
 import org.apache.http.HttpEntity;
 import org.apache.http.client.methods.CloseableHttpResponse;
@@ -178,4 +179,5 @@ public class AesInfoUtil {
         response.close();
         return body;
     }
+
 }