瀏覽代碼

移动端报告验证&&个贷模板插入二维码

wucl 1 年之前
父節點
當前提交
5b8989ae36
共有 29 個文件被更改,包括 248 次插入34 次删除
  1. 15 3
      biz-base/src/main/java/com/dayou/controller/BusinessProductionController.java
  2. 1 0
      biz-base/src/main/resources/application-local.yml
  3. 1 0
      biz-base/src/main/resources/application-prod.yml
  4. 1 0
      biz-base/src/main/resources/application-test.yml
  5. 二進制
      biz-base/src/main/resources/docs/personal/house_final_report.docx
  6. 二進制
      biz-base/src/main/resources/docs/personal/house_statement.docx
  7. 二進制
      biz-base/src/main/resources/docs/personal/immovable_final_report.docx
  8. 二進制
      biz-base/src/main/resources/docs/personal/immovable_statement.docx
  9. 二進制
      biz-base/src/main/resources/docs/personal/land_final_report.docx
  10. 二進制
      biz-base/src/main/resources/docs/personal/land_statement.docx
  11. 10 0
      common/src/main/java/com/dayou/configuration/DfsConfig.java
  12. 0 3
      common/src/main/java/com/dayou/utils/IpUtils.java
  13. 19 1
      common/src/main/java/com/dayou/utils/POIWordUtil.java
  14. 7 2
      common/src/main/java/com/dayou/utils/QRCodeUtil.java
  15. 2 0
      dao/src/main/java/com/dayou/mapper/MajorProductionMapper.java
  16. 3 0
      dao/src/main/java/com/dayou/mapper/PersonalTargetMapper.java
  17. 14 0
      dao/src/main/resources/mapper/MajorProductionMapper.xml
  18. 15 0
      dao/src/main/resources/mapper/PersonalTargetMapper.xml
  19. 1 0
      domain/src/main/java/com/dayou/common/Constants.java
  20. 5 0
      domain/src/main/java/com/dayou/entity/MajorProduction.java
  21. 5 0
      domain/src/main/java/com/dayou/entity/PersonalTarget.java
  22. 26 0
      domain/src/main/java/com/dayou/vo/ProdValidateVO.java
  23. 9 0
      service/src/main/java/com/dayou/service/IBusinessProductionService.java
  24. 72 4
      service/src/main/java/com/dayou/service/impl/BusinessProductionServiceImpl.java
  25. 12 12
      service/src/main/java/com/dayou/service/impl/MajorProductionServiceImpl.java
  26. 5 1
      service/src/main/java/com/dayou/service/impl/PersonalProductionServiceImpl.java
  27. 16 6
      service/src/main/java/com/dayou/service/impl/PersonalServiceImpl.java
  28. 1 1
      service/src/main/java/com/dayou/workflow/handler/PersonalNodeHandler.java
  29. 8 1
      sql/update_sql.sql

+ 15 - 3
biz-base/src/main/java/com/dayou/controller/BusinessProductionController.java

@@ -1,11 +1,14 @@
 package com.dayou.controller;
 
+import com.dayou.annotation.IgnoreAuth;
 import com.dayou.common.RestResponse;
+import com.dayou.configuration.DfsConfig;
 import com.dayou.dto.NameUrlDTO;
 import com.dayou.dto.OrderProductionsBag;
 import com.dayou.dto.OrderReportDTO;
 import com.dayou.dto.ReportDTO;
 import com.dayou.service.*;
+import com.dayou.vo.ProdValidateVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -22,7 +25,7 @@ import java.util.List;
 @RestController
 @RequestMapping("businessProduction")
 @Slf4j
-public class BusinessProductionController {
+public class BusinessProductionController{
 
     @Autowired
     private IMajorProductionService majorProductionService;
@@ -33,8 +36,7 @@ public class BusinessProductionController {
     @Autowired
     private IPersonalProductionService personalProductionService;
 
-    @Autowired
-    private IFinanceClaimService financeClaimService;
+
 
     @Autowired
     private IPersonalService personalService;
@@ -118,4 +120,14 @@ public class BusinessProductionController {
         Boolean ret = personalService.personalAllotRealAmount(claimOrders);
         return RestResponse.data(ret);
     }
+
+    /**
+     * 产品验证接口
+     */
+    @IgnoreAuth
+    @GetMapping("/validate/{businessType}/{businessId}")
+    public RestResponse<ProdValidateVO> validateProd(@PathVariable("businessType") String businessType, @PathVariable("businessId") Long businessId){
+        ProdValidateVO validateVO = businessProductionService.validateProd(businessType,businessId);
+        return RestResponse.data(validateVO);
+    }
 }

+ 1 - 0
biz-base/src/main/resources/application-local.yml

@@ -23,6 +23,7 @@ dfs:
   domain: E:\local-upload
   domainName: https://kps.scdayou.com/dfs
   code: E:\local-upload\code
+  domainRoot: localhost
 
 advice:
   file:

+ 1 - 0
biz-base/src/main/resources/application-prod.yml

@@ -23,6 +23,7 @@ dfs:
   domain: /dfs
   domainName: https://kps.scdayou.com/dfs
   code: /code
+  domainRoot: https://kps.scdayou.com/admin
 
 
 #系统配置

+ 1 - 0
biz-base/src/main/resources/application-test.yml

@@ -23,6 +23,7 @@ dfs:
   domain: /test
   domainName: https://kps.scdayou.com/dfs
   code: /code
+  domainRoot: http://kps.scdayou.com:81/admin-test
 
 #系统配置
 system:

二進制
biz-base/src/main/resources/docs/personal/house_final_report.docx


二進制
biz-base/src/main/resources/docs/personal/house_statement.docx


二進制
biz-base/src/main/resources/docs/personal/immovable_final_report.docx


二進制
biz-base/src/main/resources/docs/personal/immovable_statement.docx


二進制
biz-base/src/main/resources/docs/personal/land_final_report.docx


二進制
biz-base/src/main/resources/docs/personal/land_statement.docx


+ 10 - 0
common/src/main/java/com/dayou/configuration/DfsConfig.java

@@ -28,6 +28,8 @@ public class DfsConfig
 
     private String code;
 
+    private String domainRoot;
+
     //生产环境建议用nginx绑定域名映射
 
 
@@ -61,4 +63,12 @@ public class DfsConfig
     public void setDomain(String domain) {
         this.domain = domain;
     }
+
+    public String getDomainRoot() {
+        return domainRoot;
+    }
+
+    public void setDomainRoot(String domainRoot) {
+        this.domainRoot = domainRoot;
+    }
 }

+ 0 - 3
common/src/main/java/com/dayou/utils/IpUtils.java

@@ -222,7 +222,4 @@ public class IpUtils {
         }
     }
 
-    public static void main(String[] args) {
-        JSONObject addresses = getAddresses("220.165.249.18");
-    }
 }

+ 19 - 1
common/src/main/java/com/dayou/utils/POIWordUtil.java

@@ -1,8 +1,13 @@
 package com.dayou.utils;
 
 import cn.hutool.core.util.StrUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
+import org.apache.poi.util.Units;
 import org.apache.poi.xwpf.usermodel.*;
 
+import java.io.FileInputStream;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -14,6 +19,7 @@ import java.util.Set;
  * @since: 2024/3/18
  * created with IntelliJ IDEA.
  */
+@Slf4j
 public class POIWordUtil {
 
     public static void replaceWord(XWPFDocument document, Map<String,Object> textMap){
@@ -57,7 +63,19 @@ public class POIWordUtil {
                     for (XWPFParagraph paragraph :paragraphs){
                         List<XWPFRun> runs = paragraph.getRuns();
                         for (XWPFRun run : runs){
-                            run.setText(changeValue(run.toString(),textMap),0);
+                            if ("${validateCode}".equals(run.toString())){
+                                String path = (String) textMap.get("validateCode");
+                                try {
+                                    run.setText("",0);
+                                    XWPFPicture picture = run.addPicture(new FileInputStream("/opt" + path), XWPFDocument.PICTURE_TYPE_PNG, "电子二维码", Units.toEMU(120), Units.toEMU(120));
+                                    picture.getCTPicture().getSpPr().getXfrm().getOff().setY(Units.toEMU(120));
+                                    paragraph.setAlignment(ParagraphAlignment.HIGH_KASHIDA);
+                                } catch (Exception e) {
+                                    log.error("validateCode insert error!!!");
+                                }
+                            }else{
+                                run.setText(changeValue(run.toString(),textMap),0);
+                            }
                         }
                     }
                 }

+ 7 - 2
common/src/main/java/com/dayou/utils/QRCodeUtil.java

@@ -1,5 +1,7 @@
 package com.dayou.utils;
 
+import com.dayou.configuration.DfsConfig;
+import com.dayou.enums.MainBusinessEnum;
 import com.google.zxing.BarcodeFormat;
 import com.google.zxing.EncodeHintType;
 import com.google.zxing.MultiFormatWriter;
@@ -8,6 +10,7 @@ import com.google.zxing.client.j2se.MatrixToImageWriter;
 import com.google.zxing.common.BitMatrix;
 import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import java.io.File;
 import java.io.IOException;
@@ -23,6 +26,7 @@ import java.util.Hashtable;
 @Slf4j
 public class QRCodeUtil {
 
+
     /**
      * 生成二维码输出到指定的文件
      *
@@ -39,11 +43,12 @@ public class QRCodeUtil {
         MatrixToImageWriter.writeToFile(bitMatrix,"png",file);
     }
 
+
 //    public static void main(String[] args) {
 //        try {
-//            String dateIndexFileName = FileUploadUtils.createDateIndexFileName("1244794520864821248.png");
+//            String dateIndexFileName = FileUploadUtils.createDateIndexFileName("validate_code.png");
 //            File absoluteFile = FileUploadUtils.getAbsoluteFile("G:\\code\\", dateIndexFileName);
-//            write("1244794520864821248",200,absoluteFile);
+//            write("http://localhost:9518/#/prod/validate?businessType=PERSONAL_BUSINESS&targetId=1",200,absoluteFile);
 //        } catch (IOException e) {
 //            throw new RuntimeException(e);
 //        } catch (WriterException e) {

+ 2 - 0
dao/src/main/java/com/dayou/mapper/MajorProductionMapper.java

@@ -35,4 +35,6 @@ public interface MajorProductionMapper extends CustomBaseMapper<MajorProduction>
     void updateSaveFileInfo(@Param("productionIds") List<Long> productionIds);
 
     Page<MajorProductionPerformanceVO> performanceAllotPage(Page page, @Param("vo") MajorProductionPerformanceVO vo,@Param("currentUserId") Long currentUserId);
+
+    ProdValidateVO validateProd(@Param("id") Long id);
 }

+ 3 - 0
dao/src/main/java/com/dayou/mapper/PersonalTargetMapper.java

@@ -2,6 +2,8 @@ package com.dayou.mapper;
 
 import com.dayou.entity.PersonalTarget;
 import com.dayou.dao.CustomBaseMapper;
+import com.dayou.vo.ProdValidateVO;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +15,5 @@ import com.dayou.dao.CustomBaseMapper;
  */
 public interface PersonalTargetMapper extends CustomBaseMapper<PersonalTarget> {
 
+    ProdValidateVO validateProd(@Param("id") Long id);
 }

+ 14 - 0
dao/src/main/resources/mapper/MajorProductionMapper.xml

@@ -377,4 +377,18 @@
           and m.department_id in (select distinct department_id from post where name='评估部经理' and  id in (select post_id from user_post where user_id = #{currentUserId}))
         order by isAllot ASC;
     </select>
+
+    <select id="validateProd" parameterType="java.lang.Long" resultType="com.dayou.vo.ProdValidateVO">
+        SELECT
+            mp.evaluate_acreage as acreage,
+            ROUND(mp.evaluate_amount/10000,2) as amount,
+            mp.name AS productionName,
+            mp.report_no AS productionNo ,
+            mp.client_name as bailor
+        FROM
+            major_production mp
+        WHERE
+            mp.id = #{id}
+          AND mp.deleted = 0
+    </select>
  </mapper>

+ 15 - 0
dao/src/main/resources/mapper/PersonalTargetMapper.xml

@@ -29,4 +29,19 @@
         personal_id, location, amount, price, house_certificate, land_certificate, immovable_certificate, entity_info, background_info, selling_ability
     </sql>
 
+    <select id="validateProd" parameterType="java.lang.Long" resultType="com.dayou.vo.ProdValidateVO">
+        SELECT
+            pt.acreage,
+            ROUND(pt.amount/10000,2) AS amount,
+            p.location AS productionName,
+            p.order_id AS productionNo ,
+            CONCAT_WS('、',p.bailorA,p.bailorB) as bailor
+        FROM
+            personal_target pt
+                LEFT JOIN personal p ON p.id = pt.personal_id
+        WHERE
+            pt.personal_id = #{id}
+          AND pt.deleted = 0
+          and p.deleted =0
+    </select>
 </mapper>

+ 1 - 0
domain/src/main/java/com/dayou/common/Constants.java

@@ -145,4 +145,5 @@ public interface Constants {
 
     String DOCX = ".docx";
 
+    String PROD_VALIDATE_URI= "/#/prod/validate";
 }

+ 5 - 0
domain/src/main/java/com/dayou/entity/MajorProduction.java

@@ -127,6 +127,11 @@ public class MajorProduction extends BaseEntity {
     private String qrCode;
 
     /**
+     * 验证二维码路经
+     */
+    private String validateCode;
+
+    /**
      *库存状态(0:已入库  1:已出库)
      */
     private Boolean repertoryState;

+ 5 - 0
domain/src/main/java/com/dayou/entity/PersonalTarget.java

@@ -107,4 +107,9 @@ public class PersonalTarget extends BaseEntity {
      */
     private String feedback;
 
+    /**
+     * 验证二维码路经
+     */
+    private String validateCode;
+
 }

+ 26 - 0
domain/src/main/java/com/dayou/vo/ProdValidateVO.java

@@ -0,0 +1,26 @@
+package com.dayou.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ * 类说明:
+ *
+ * @author: wucl
+ * @since: 2024/4/15
+ * created with IntelliJ IDEA.
+ */
+@Data
+public class ProdValidateVO {
+
+    private String productionNo;
+
+    private String bailor;
+
+    private String productionName;
+
+    private BigDecimal acreage;
+
+    private BigDecimal amount;
+}

+ 9 - 0
service/src/main/java/com/dayou/service/IBusinessProductionService.java

@@ -1,5 +1,8 @@
 package com.dayou.service;
 
+import com.dayou.enums.MainBusinessEnum;
+import com.dayou.vo.ProdValidateVO;
+
 /**
  * 类说明:
  *
@@ -10,4 +13,10 @@ package com.dayou.service;
 public interface IBusinessProductionService{
 
     Boolean addPublicStamp(String filePath);
+
+    ProdValidateVO validateProd(String businessType, Long businessId);
+
+    String doCreateValidateCode(MainBusinessEnum businessEnum,Long businessId,String reportNo);
+
+    String doCreateNormalCode(String production,String reportNo);
 }

+ 72 - 4
service/src/main/java/com/dayou/service/impl/BusinessProductionServiceImpl.java

@@ -1,17 +1,29 @@
 package com.dayou.service.impl;
 
 import cn.hutool.core.util.StrUtil;
+import com.dayou.configuration.DfsConfig;
+import com.dayou.enums.MainBusinessEnum;
+import com.dayou.mapper.MajorProductionMapper;
+import com.dayou.mapper.PersonalTargetMapper;
 import com.dayou.service.IBusinessProductionService;
+import com.dayou.service.IPersonalTargetService;
+import com.dayou.utils.FileUploadUtils;
 import com.dayou.utils.PersonalUtils;
+import com.dayou.utils.QRCodeUtil;
+import com.dayou.vo.ProdValidateVO;
+import com.google.zxing.WriterException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ResourceLoaderAware;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.ResourceLoader;
 import org.springframework.stereotype.Service;
 
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
+
+import static com.dayou.common.Constants.PNG;
+import static com.dayou.common.Constants.PROD_VALIDATE_URI;
+import static com.dayou.enums.MainBusinessEnum.PERSONAL_BUSINESS;
 
 /**
  * 类说明:
@@ -20,11 +32,21 @@ import java.io.InputStream;
  * @since: 2024/4/1
  * created with IntelliJ IDEA.
  */
+@Slf4j
 @Service
 public class BusinessProductionServiceImpl implements IBusinessProductionService, ResourceLoaderAware {
 
     private ResourceLoader resourceLoader;
 
+    @Autowired
+    private PersonalTargetMapper personalTargetMapper;
+
+    @Autowired
+    private MajorProductionMapper majorProductionMapper;
+
+    @Autowired
+    private DfsConfig dfsConfig;
+
     @Override
     public void setResourceLoader(ResourceLoader resourceLoader) {
         this.resourceLoader = resourceLoader;
@@ -47,4 +69,50 @@ public class BusinessProductionServiceImpl implements IBusinessProductionService
         }
         return Boolean.FALSE;
     }
+
+    @Override
+    public ProdValidateVO validateProd(String businessType, Long businessId) {
+        ProdValidateVO prodValidateVO = null;
+        if (MainBusinessEnum.PERSONAL_BUSINESS.name().equals(businessType)){
+            prodValidateVO = personalTargetMapper.validateProd(businessId);
+        }
+        if (MainBusinessEnum.MAJOR_BUSINESS.name().equals(businessType)){
+            prodValidateVO = majorProductionMapper.validateProd(businessId);
+        }
+        return prodValidateVO;
+    }
+
+    @Override
+    public String doCreateValidateCode(MainBusinessEnum businessEnum, Long businessId,String reportNo) {
+        try {
+            String domainRoot = dfsConfig.getDomainRoot();
+            String validateUrl = new StringBuffer(domainRoot).append(PROD_VALIDATE_URI).append("?").append("businessType=")
+                    .append(businessEnum.name()).append("&").append("targetId=").append(businessId).toString();
+            String baseDir = dfsConfig.getPath()+dfsConfig.getCode();
+            String dateIndexFileName = FileUploadUtils.createDateIndexFileName(reportNo+"_validate" + PNG);
+            File absoluteFile = FileUploadUtils.getAbsoluteFile(baseDir, dateIndexFileName);
+            QRCodeUtil.write(validateUrl,200,absoluteFile);
+            return dfsConfig.getDomain() + dfsConfig.getCode() + dateIndexFileName;
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        } catch (WriterException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @Override
+    public String doCreateNormalCode(String production,String reportNo) {
+        try {
+            String baseDir = dfsConfig.getPath()+dfsConfig.getCode();
+            String dateIndexFileName = FileUploadUtils.createDateIndexFileName(reportNo + PNG);
+            File absoluteFile = FileUploadUtils.getAbsoluteFile(baseDir, dateIndexFileName);
+            String flog = production.substring(0, 1);
+            QRCodeUtil.write(reportNo+flog,200,absoluteFile);
+            return dfsConfig.getDomain() + dfsConfig.getCode() + dateIndexFileName;
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        } catch (WriterException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }

+ 12 - 12
service/src/main/java/com/dayou/service/impl/MajorProductionServiceImpl.java

@@ -101,6 +101,9 @@ public class MajorProductionServiceImpl extends ServiceImpl<MajorProductionMappe
     @Autowired
     private IMajorProductionService majorProductionService;
 
+    @Autowired
+    private IBusinessProductionService businessProductionService;
+
 
     @Override
     @SuppressWarnings("unchecked")
@@ -160,18 +163,15 @@ public class MajorProductionServiceImpl extends ServiceImpl<MajorProductionMappe
                 }
             }
         }
-        String baseDir = dfsConfig.getPath()+dfsConfig.getCode();
-        String dateIndexFileName = FileUploadUtils.createDateIndexFileName(reportNo + PNG);
-        try {
-            File absoluteFile = FileUploadUtils.getAbsoluteFile(baseDir, dateIndexFileName);
-            String flog = taskData.getProduction().substring(0, 1);
-            QRCodeUtil.write(reportNo+flog,200,absoluteFile);
-            String url = dfsConfig.getDomain() + dfsConfig.getCode() + dateIndexFileName;
-            taskData.setQrCode(url);
-        } catch (Exception e) {
-            log.error("二维码生成失败.[{}]",reportNo);
-        }
-        return  this.save(taskData);
+        //创建普通二维码
+        taskData.setQrCode(businessProductionService.doCreateNormalCode(taskData.getProduction(),reportNo));
+
+        this.save(taskData);
+
+        //创建验证二维码
+        return this.update(new LambdaUpdateWrapper<MajorProduction>().set(MajorProduction::getValidateCode,
+                businessProductionService.doCreateValidateCode(MainBusinessEnum.MAJOR_BUSINESS,taskData.getId(),taskData.getReportNo()))
+                    .eq(BaseEntity::getId,taskData.getId()));
     }
 
     @Override

+ 5 - 1
service/src/main/java/com/dayou/service/impl/PersonalProductionServiceImpl.java

@@ -145,6 +145,7 @@ public class PersonalProductionServiceImpl extends ServiceImpl<PersonalProductio
         textMap.put("nAcreage",target.getAcreage());
         textMap.put("nPrice",((BigDecimal)target.getPrice()).setScale(0, RoundingMode.HALF_UP));
         textMap.put("nAmount",target.getAmount());
+        textMap.put("validateCode",target.getValidateCode());
         addEnvironment(bg,textMap);
 
         PersonalCalculate calculate = personalCalculateMapper.getByTargetId(target.getId());
@@ -495,7 +496,10 @@ public class PersonalProductionServiceImpl extends ServiceImpl<PersonalProductio
         }
         else if (tag ==3){
             productionType = ProductionEnum.FINAL.name();
-        }else {
+        }else if (tag ==4){
+            productionType = ProductionEnum.LETTER.name();
+        }
+        else {
             return Boolean.FALSE;
         }
         pp = this.getOne(new LambdaQueryWrapper<PersonalProduction>().eq(PersonalProduction::getTargetId, targetId).eq(PersonalProduction::getProduction, productionType).eq(BaseEntity::getDeleted, Boolean.FALSE));

+ 16 - 6
service/src/main/java/com/dayou/service/impl/PersonalServiceImpl.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.dayou.common.BaseEntity;
+import com.dayou.configuration.DfsConfig;
 import com.dayou.dto.*;
 import com.dayou.entity.*;
 import com.dayou.enums.CertificateEnum;
@@ -23,6 +24,7 @@ import com.dayou.service.workflow.IWorkFlowService;
 import com.dayou.service.workflow.IWorkNodeService;
 import com.dayou.service.workflow.IWorkNodeTaskService;
 import com.dayou.utils.LoginContext;
+import com.dayou.utils.QRCodeUtil;
 import com.dayou.vo.PersonalVO;
 import com.dayou.vo.TaskTodoVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +42,8 @@ import java.util.stream.Collectors;
 import org.springframework.transaction.annotation.Transactional;
 
 import static com.dayou.common.Constants.PERSONAL_INWARD;
+import static com.dayou.common.Constants.PROD_VALIDATE_URI;
+import static com.dayou.enums.MainBusinessEnum.PERSONAL_BUSINESS;
 
 /**
  * <p>
@@ -100,6 +104,10 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
     @Autowired
     private IWorkNodeService workNodeService;
 
+    @Autowired
+    private IBusinessProductionService businessProductionService;
+
+
     @Override
     @SuppressWarnings("unchecked")
     public Page<PersonalVO> selectPage(Page page, PersonalVO personal){
@@ -126,9 +134,11 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
         PersonalTarget pt = new PersonalTarget();
         pt.setPersonalId(personal.getId());
         pt.setLocation(personal.getLocation());
+        //生成验证二维码
+        pt.setValidateCode(businessProductionService.doCreateValidateCode(PERSONAL_BUSINESS, personal.getId(), personal.getOrderId()));
         personalTargetService.save(pt);
         //个贷下单
-        return workFlowService.openingOrder(MainBusinessEnum.PERSONAL_BUSINESS,personal.getId(),personal.getOrderId(),personal.getRemark());
+        return workFlowService.openingOrder(PERSONAL_BUSINESS,personal.getId(),personal.getOrderId(),personal.getRemark());
     }
 
     @Override
@@ -163,7 +173,7 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
     @Override
     public Boolean doRecall(Long id) {
         List<WorkFlowNodeInstance> exists = workFlowNodeInstanceService.list(new LambdaQueryWrapper<WorkFlowNodeInstance>()
-                .eq(WorkFlowNodeInstance::getBusinessType, MainBusinessEnum.PERSONAL_BUSINESS.name())
+                .eq(WorkFlowNodeInstance::getBusinessType, PERSONAL_BUSINESS.name())
                 .eq(WorkFlowNodeInstance::getBusinessId, id)
                 .eq(BaseEntity::getDeleted, Boolean.FALSE));
         if (exists.size()>2){
@@ -224,7 +234,7 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
                 List<WorkFlowLog> workFlowLogs = todoVOList.stream().map(x -> {
                     WorkFlowLog log = new WorkFlowLog();
                     log.setBusinessId(x.getBusinessId());
-                    log.setBusinessType(MainBusinessEnum.PERSONAL_BUSINESS.name());
+                    log.setBusinessType(PERSONAL_BUSINESS.name());
                     log.setHandingTime(new Date().getTime() - x.getTaskCreated().getTime());
                     log.setHandlerId(currentUserId);
                     log.setState(NodeLogEnum.PASS.name());
@@ -288,7 +298,7 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
      * @return
      */
     private Long aimPriceStaff(){
-        WorkNode workNode = workNodeService.getUniqueNodeByFlowNameAndNodeName(MainBusinessEnum.PERSONAL_BUSINESS, WorkflowNodeEnum.DETERMINE_PRICE);
+        WorkNode workNode = workNodeService.getUniqueNodeByFlowNameAndNodeName(PERSONAL_BUSINESS, WorkflowNodeEnum.DETERMINE_PRICE);
         if (workNode!=null){
             WorkNodeTask latestNodeTask = workNodeTaskService.getLatestNodeTask(workNode.getId());
             if (latestNodeTask!=null){
@@ -322,12 +332,12 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
             claimOrders.stream().forEach(x->{
                 //检查该订单是否创建应收款记录
                 OrderFund orderFund = orderFundService.getOne(new LambdaQueryWrapper<OrderFund>().eq(OrderFund::getOrderId, x.getOrderId())
-                        .eq(OrderFund::getBusinessId,x.getId()).eq(OrderFund::getBusinessType,MainBusinessEnum.PERSONAL_BUSINESS.name())
+                        .eq(OrderFund::getBusinessId,x.getId()).eq(OrderFund::getBusinessType, PERSONAL_BUSINESS.name())
                         .eq(BaseEntity::getDeleted, Boolean.FALSE));
                 if (orderFund==null){
                     orderFund = new OrderFund();
                     orderFund.setOrderId(x.getOrderId());
-                    orderFund.setBusinessType(MainBusinessEnum.PERSONAL_BUSINESS.name());
+                    orderFund.setBusinessType(PERSONAL_BUSINESS.name());
                     orderFund.setBusinessId(x.getId());
                     orderFund.setOrderName(x.getOrderName());
                     orderFundService.save(orderFund);

+ 1 - 1
service/src/main/java/com/dayou/workflow/handler/PersonalNodeHandler.java

@@ -80,7 +80,7 @@ public class PersonalNodeHandler extends WorkNodeProcessable {
                             nextWorkNode = workNodeService.getNextWorkNodeByBusiness(currentInstanceNode.getFlowId(),MainBusinessEnum.PERSONAL_BUSINESS, currentInstanceNode.getNodeCode(), personalNecessaryNodes);
                             break;
                         case CHECK_FEEDBACK:
-                            if (!workNodeCommit.getIfFeedback()) {
+                            if (workNodeCommit.getIfFeedback()!=null && !workNodeCommit.getIfFeedback()) {
                                 nextWorkNode = workNodeService.getNextWorkNode(nextWorkNode.getFlowId(), nextWorkNode.getId());
                             }
                             break;

+ 8 - 1
sql/update_sql.sql

@@ -264,4 +264,11 @@ ALTER TABLE assets_production MODIFY COLUMN production_no VARCHAR(128) NULL comm
   修改人:苟耕铨
  */
  # 修改注释
-ALTER TABLE assets_production MODIFY COLUMN production_no VARCHAR(128) NULL comment '产品号';
+ALTER TABLE assets_production MODIFY COLUMN production_no VARCHAR(128) NULL comment '产品号';
+
+/**
+  日期:2024-04-15
+  修改人:吴长林
+ */
+alter table personal_target add COLUMN validate_code varchar(255)  comment '验证二维码路经';
+alter table major_production add COLUMN validate_code varchar(255)  comment '验证二维码路经';