瀏覽代碼

OrderDoc纵表变横表

sakuya 3 年之前
父節點
當前提交
a38de93f45
共有 65 個文件被更改,包括 878 次插入1306 次删除
  1. 13 3
      eladmin-system/src/main/java/me/zhengjie/appapi/config/AppConfigInfo.java
  2. 9 7
      eladmin-system/src/main/java/me/zhengjie/appapi/controller/ApiBankController.java
  3. 7 16
      eladmin-system/src/main/java/me/zhengjie/appapi/controller/ApiController.java
  4. 19 0
      eladmin-system/src/main/java/me/zhengjie/appapi/controller/BaseController.java
  5. 19 29
      eladmin-system/src/main/java/me/zhengjie/appapi/controller/MiniProgramController.java
  6. 0 130
      eladmin-system/src/main/java/me/zhengjie/appapi/entity/OrderDocEntity.java
  7. 6 2
      eladmin-system/src/main/java/me/zhengjie/appapi/entity/response/BaseResponse.java
  8. 0 20
      eladmin-system/src/main/java/me/zhengjie/appapi/mapper/IOrderDocDao.java
  9. 0 1
      eladmin-system/src/main/java/me/zhengjie/appapi/mapper/IOrderRoomIdDao.java
  10. 0 16
      eladmin-system/src/main/java/me/zhengjie/appapi/service/OrderDocService.java
  11. 2 4
      eladmin-system/src/main/java/me/zhengjie/appapi/service/OrderService.java
  12. 24 87
      eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/ApiServiceImpl.java
  13. 12 13
      eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/BorrowerServiceImpl.java
  14. 13 13
      eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/GuaranteeServiceImpl.java
  15. 13 13
      eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/MortgageServiceImpl.java
  16. 28 26
      eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/NotaryNoteServiceImpl.java
  17. 0 49
      eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/OrderDocServiceImpl.java
  18. 36 19
      eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/OrderServiceImpl.java
  19. 45 106
      eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/UserAXQInfoServiceImpl.java
  20. 1 0
      eladmin-system/src/main/java/me/zhengjie/appapi/vo/FileVo.java
  21. 2 1
      eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java
  22. 1 1
      eladmin-system/src/main/java/me/zhengjie/config/ProcessMedia.java
  23. 1 1
      eladmin-system/src/main/java/me/zhengjie/config/WebSocketConfig.java
  24. 1 1
      eladmin-system/src/main/java/me/zhengjie/config/thread/AsyncTaskExecutePool.java
  25. 1 2
      eladmin-system/src/main/java/me/zhengjie/config/thread/AsyncTaskProperties.java
  26. 1 1
      eladmin-system/src/main/java/me/zhengjie/config/thread/TheadFactoryName.java
  27. 1 1
      eladmin-system/src/main/java/me/zhengjie/config/thread/ThreadPoolExecutorUtil.java
  28. 1 1
      eladmin-system/src/main/java/me/zhengjie/util/A.java
  29. 1 1
      eladmin-system/src/main/java/me/zhengjie/util/CFCACertUtil.java
  30. 1 1
      eladmin-system/src/main/java/me/zhengjie/util/DownloadUtils.java
  31. 1 1
      eladmin-system/src/main/java/me/zhengjie/util/HttpConnector.java
  32. 0 0
      eladmin-system/src/main/java/me/zhengjie/base/util/MinioUtils.java
  33. 1 1
      eladmin-system/src/main/java/me/zhengjie/util/TencentServiceUtil.java
  34. 1 1
      eladmin-system/src/main/java/me/zhengjie/util/TextTempletUtil.java
  35. 1 1
      eladmin-system/src/main/java/me/zhengjie/util/WebSocketMap.java
  36. 56 0
      eladmin-system/src/main/java/me/zhengjie/dao/ModelRepository.java
  37. 83 0
      eladmin-system/src/main/java/me/zhengjie/dao/OrderFileRepository.java
  38. 25 0
      eladmin-system/src/main/java/me/zhengjie/dao/OrderRepository.java
  39. 65 0
      eladmin-system/src/main/java/me/zhengjie/dao/entity/OrderFileEntity.java
  40. 9 0
      eladmin-system/src/main/java/me/zhengjie/dao/mapper/OrderFileMapper.java
  41. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/BorrowerDomain.java
  42. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/GuaranteeDomain.java
  43. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/MortgageDomain.java
  44. 28 0
      eladmin-system/src/main/java/me/zhengjie/domain/order/OrderBizCodeMessage.java
  45. 10 0
      eladmin-system/src/main/java/me/zhengjie/domain/order/OrderConstant.java
  46. 4 4
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/parser/OrderOCRParser.java
  47. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/parser/OrderOCRParserFactory.java
  48. 3 3
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/parser/impl/OrderOCRParserFactoryImpl.java
  49. 33 31
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/parser/impl/YZBankOrderOCRParserImpl.java
  50. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/user/UserDomain.java
  51. 2 2
      eladmin-system/src/main/java/me/zhengjie/modules/system/domain/user/impl/UserDomainImpl.java
  52. 28 36
      eladmin-system/src/main/java/me/zhengjie/modules/mq/RedisReceiver.java
  53. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/mq/WebSocketReceiver.java
  54. 0 163
      eladmin-system/src/main/java/me/zhengjie/modules/system/entity/OrderDocEntity.java
  55. 62 212
      eladmin-system/src/main/java/me/zhengjie/modules/system/executor/jobhandler/GenerateNotarizationJob.java
  56. 0 37
      eladmin-system/src/main/java/me/zhengjie/modules/system/repository/OrderDocMapper.java
  57. 0 11
      eladmin-system/src/main/java/me/zhengjie/modules/system/rest/NotaryOrderController.java
  58. 1 2
      eladmin-system/src/main/java/me/zhengjie/modules/system/rest/OrderRoomIdController.java
  59. 1 4
      eladmin-system/src/main/java/me/zhengjie/modules/system/rest/TencentPushController.java
  60. 0 2
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/NotaryOrderService.java
  61. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/ModelNotarizationServiceImpl.java
  62. 1 1
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/NotaryOfficeServiceImpl.java
  63. 195 179
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/NotaryOrderServiceImpl.java
  64. 3 10
      eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java
  65. 0 33
      eladmin-system/src/main/resources/mapper/OrderDocMapper.xml

+ 13 - 3
eladmin-system/src/main/java/me/zhengjie/appapi/config/AppConfigInfo.java

@@ -6,7 +6,7 @@ import org.springframework.stereotype.Component;
 @Component
 public class AppConfigInfo {
 
-//	public static String APP_IMAGE_URL;
+	public static String APP_ENV_TYPE;
 
 	public static String APP_UPLOAD_PATH;
 
@@ -17,6 +17,16 @@ public class AppConfigInfo {
 	public static String APP_PUSH_PORT;
 	// 背景图片
 	public static String APP_BACKGROUND_PICTURE;
+
+	/**
+	 * 设置应用当前环境类型
+	 * @param appEnvType
+	 */
+	@Value("${spring.profiles.active}")
+	public void setAppEnvType(String appEnvType) {
+		APP_ENV_TYPE = appEnvType;
+	}
+
 	/**
 	 * 设置app预览地址
 	 * 
@@ -40,7 +50,7 @@ public class AppConfigInfo {
 	/**
 	 * 设置上传路径
 	 * 
-	 * @param appUploadPath
+	 * @param appExcludeLog
 	 */
 	@Value("${app.exclude.log}")
 	public void setAppExcludeLog(String appExcludeLog) {
@@ -68,7 +78,7 @@ public class AppConfigInfo {
 	/**
 	 * 
 	 * 
-	 * @param appMinioUrl
+	 * @param appBackgroundPicture
 	 */
 	@Value("${app.background.picture}")
 	public void setAppBackgroundPicture(String appBackgroundPicture) {

+ 9 - 7
eladmin-system/src/main/java/me/zhengjie/appapi/controller/ApiBankController.java

@@ -16,6 +16,8 @@ import me.zhengjie.appapi.util.StatusEnum.StepStatusEnum;
 import me.zhengjie.appapi.vo.*;
 import me.zhengjie.base.ResponseDTO;
 import me.zhengjie.base.ResultCode;
+import me.zhengjie.dao.OrderFileRepository;
+import me.zhengjie.dao.entity.OrderFileEntity;
 import me.zhengjie.modules.security.security.TokenProvider;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -54,7 +56,7 @@ public class ApiBankController extends BaseController {
 	@Autowired
 	OrderService orderService;
 	@Autowired
-	OrderDocService orderDocService;
+	OrderFileRepository orderFileRepository;
 
 	@AnonymousPostMapping("/login")
 	public ResponseDTO<String> login(@Valid @RequestBody BankLoginVo loginVo) {
@@ -173,7 +175,7 @@ public class ApiBankController extends BaseController {
 	public BaseResponse submit(@RequestBody String json) {
 		JSONObject jsonObj = JSONObject.parseObject(json);
 		String businessNo = jsonObj.getString("businessNo");
-		return orderService.submitOrder(businessNo);
+		return orderService.submitOrder(businessNo, getCurrentUser());
 	}
 
 	/**
@@ -288,19 +290,19 @@ public class ApiBankController extends BaseController {
 	public ResponseDTO<?> getNotarization(@RequestBody String json) {
 		JSONObject jsonObj = JSONObject.parseObject(json);
 		String orderId = jsonObj.getString("orderId");
-		OrderDocEntity orderDoc = orderDocService.getOrderDocByContractId(orderId);
-		return ResponseDTO.success(orderDoc.getAuthNotarizaiton());
+		OrderFileEntity orderFile = orderFileRepository.getOrderNotarization(orderId);
+		return ResponseDTO.success(orderFile.getSignedPdfUrl());
 	}
 
 	@RequestMapping("/orderOCRParser")
 	public ResponseDTO<?> orderOCRParser(@RequestBody String json) {
 		JSONObject jsonObj = JSONObject.parseObject(json);
 		String orderType = jsonObj.getString("orderType");
-		String uscc = jsonObj.getString("uscc");
 		String content = jsonObj.getString("content");
-		if (!orderService.canBeParse(uscc)) {
+		Object object = orderService.parseOrder(orderType, content, getCurrentUser());
+		if (object == null) {
 			return ResponseDTO.error(ResultCode.ORDER_OCR_SERVICE_UNAVAILABLE);
 		}
-		return ResponseDTO.success(orderService.parseOrder(orderType, uscc, content));
+		return ResponseDTO.success(object);
 	}
 }

+ 7 - 16
eladmin-system/src/main/java/me/zhengjie/appapi/controller/ApiController.java

@@ -1,23 +1,18 @@
 package me.zhengjie.appapi.controller;
 
 import com.alibaba.fastjson.JSONObject;
-
-import me.zhengjie.annotation.rest.AnonymousGetMapping;
 import me.zhengjie.annotation.rest.AnonymousPostMapping;
-import me.zhengjie.appapi.config.AppConfigInfo;
-import me.zhengjie.appapi.dto.FileInfoDto;
 import me.zhengjie.appapi.dto.OrderDto;
-import me.zhengjie.appapi.entity.OrderDocEntity;
 import me.zhengjie.appapi.service.*;
 import me.zhengjie.appapi.tencent.h5face.SdkTest;
 import me.zhengjie.appapi.util.FileUploadUtil;
-import me.zhengjie.appapi.util.UUIDGenerator;
 import me.zhengjie.appapi.vo.SmsVo;
 import me.zhengjie.appapi.vo.UserVo;
 import me.zhengjie.base.ResponseDTO;
 import me.zhengjie.base.ResultCode;
+import me.zhengjie.dao.OrderFileRepository;
+import me.zhengjie.dao.entity.OrderFileEntity;
 import me.zhengjie.modules.mq.RedisCacheConfig;
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -28,8 +23,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
-import java.io.File;
-import java.io.IOException;
 import java.util.List;
 
 @RestController
@@ -48,7 +41,7 @@ public class ApiController {
 	@Autowired
 	BorrowerService borrowerService;
 	@Autowired
-	OrderDocService orderDocService;
+	OrderFileRepository orderFileRepository;
 
 	@Autowired
 	OrderService orderService;
@@ -140,11 +133,9 @@ public class ApiController {
 			return ResponseDTO.error(ResultCode.PARAM_IS_BLANK);
 		}
 		//
-		OrderDocEntity orderDoc = new OrderDocEntity();
-		orderDoc.setContractId(orderId);
-		orderDoc = this.orderDocService.getOne(orderDoc);
+		OrderFileEntity orderFile = orderFileRepository.getOrderNote(orderId);
 		// pdf的地址预览
-		String noteUrl = FileUploadUtil.getPreviewUrl(orderDoc.getNote());
+		String noteUrl = FileUploadUtil.getPreviewUrl(orderFile.getHtmlUrl());
 		
 		return ResponseDTO.success(noteUrl);
 	}
@@ -264,7 +255,7 @@ public class ApiController {
 	public ResponseDTO<?> getNotarization(@RequestBody String json) {
 		JSONObject jsonObj = JSONObject.parseObject(json);
 		String orderId = jsonObj.getString("orderId");
-		OrderDocEntity orderDoc = orderDocService.getOrderDocByContractId(orderId);
-		return ResponseDTO.success(orderDoc.getAuthNotarizaiton());
+		OrderFileEntity orderFile = orderFileRepository.getOrderNotarization(orderId);
+		return ResponseDTO.success(orderFile.getSignedPdfUrl());
 	}
 }

+ 19 - 0
eladmin-system/src/main/java/me/zhengjie/appapi/controller/BaseController.java

@@ -2,10 +2,19 @@ package me.zhengjie.appapi.controller;
 
 import javax.servlet.http.HttpServletRequest;
 
+import com.alibaba.fastjson.JSON;
+import me.zhengjie.appapi.entity.SysUserEntity;
+import me.zhengjie.modules.security.security.TokenProvider;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
 public class BaseController {
+
+	@Autowired
+	TokenProvider tokenProvider;
+
 	public HttpServletRequest httpRequest() {
 		ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder
 				.getRequestAttributes();
@@ -20,4 +29,14 @@ public class BaseController {
 
 		return request.getHeader("Authorization");
 	}
+
+	public SysUserEntity getCurrentUser() {
+		String auth = getAuthorization();
+		String sysUser = (String) tokenProvider.getAppToken(auth);
+		SysUserEntity currentUser = new SysUserEntity();
+		if (StringUtils.isNotBlank(sysUser)) {
+			currentUser = JSON.parseObject(sysUser, SysUserEntity.class);
+		}
+		return currentUser;
+	}
 }

+ 19 - 29
eladmin-system/src/main/java/me/zhengjie/appapi/controller/MiniProgramController.java

@@ -1,37 +1,29 @@
 package me.zhengjie.appapi.controller;
 
-import java.util.List;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.validation.Valid;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-
 import com.alibaba.fastjson.JSONObject;
-
 import me.zhengjie.annotation.rest.AnonymousPostMapping;
 import me.zhengjie.appapi.dto.OrderDto;
-import me.zhengjie.appapi.entity.OrderDocEntity;
-import me.zhengjie.appapi.service.ApiService;
-import me.zhengjie.appapi.service.BorrowerService;
-import me.zhengjie.appapi.service.IdentityValidationService;
-import me.zhengjie.appapi.service.OrderDocService;
-import me.zhengjie.appapi.service.OrderService;
-import me.zhengjie.appapi.service.SignService;
-import me.zhengjie.appapi.service.UserAXQInfoService;
+import me.zhengjie.appapi.service.*;
 import me.zhengjie.appapi.tencent.h5face.SdkTest;
 import me.zhengjie.appapi.util.FileUploadUtil;
 import me.zhengjie.appapi.vo.SmsVo;
 import me.zhengjie.appapi.vo.UserVo;
 import me.zhengjie.base.ResponseDTO;
 import me.zhengjie.base.ResultCode;
+import me.zhengjie.dao.OrderFileRepository;
+import me.zhengjie.dao.entity.OrderFileEntity;
 import me.zhengjie.modules.mq.RedisCacheConfig;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import java.util.List;
 
 @RestController
 @RequestMapping("/minipro")
@@ -50,7 +42,7 @@ public class MiniProgramController {
 	@Autowired
 	BorrowerService borrowerService;
 	@Autowired
-	OrderDocService orderDocService;
+	OrderFileRepository orderFileRepository;
 
 	@Autowired
 	OrderService orderService;
@@ -142,11 +134,9 @@ public class MiniProgramController {
 			return ResponseDTO.error(ResultCode.PARAM_IS_BLANK);
 		}
 		//
-		OrderDocEntity orderDoc = new OrderDocEntity();
-		orderDoc.setContractId(orderId);
-		orderDoc = this.orderDocService.getOne(orderDoc);
+		OrderFileEntity orderFile = orderFileRepository.getOrderNote(orderId);
 		// pdf的地址预览
-		String noteUrl = FileUploadUtil.getPreviewUrl(orderDoc.getNote());
+		String noteUrl = FileUploadUtil.getPreviewUrl(orderFile.getHtmlUrl());
 		
 		return ResponseDTO.success(noteUrl);
 	}
@@ -266,8 +256,8 @@ public class MiniProgramController {
 	public ResponseDTO<?> getNotarization(@RequestBody String json) {
 		JSONObject jsonObj = JSONObject.parseObject(json);
 		String orderId = jsonObj.getString("orderId");
-		OrderDocEntity orderDoc = orderDocService.getOrderDocByContractId(orderId);
-		return ResponseDTO.success(orderDoc.getAuthNotarizaiton());
+		OrderFileEntity orderFile = orderFileRepository.getOrderNotarization(orderId);
+		return ResponseDTO.success(orderFile.getSignedPdfUrl());
 	}
 
 }

+ 0 - 130
eladmin-system/src/main/java/me/zhengjie/appapi/entity/OrderDocEntity.java

@@ -1,130 +0,0 @@
-package me.zhengjie.appapi.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-
-import java.io.Serializable;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author humuyu
- * @since 2022-03-30
- */
-@TableName("order_doc")
-@Getter
-@Setter
-@ToString
-public class OrderDocEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    /**
-     * 公证申请表
-     */
-    @TableField("apply")
-    private String apply;
-
-    /**
-     * 送达确认书
-     */
-    @TableField("confirmation")
-    private String confirmation;
-
-    /**
-     * 受理通知单
-     */
-    @TableField("notice")
-    private String notice;
-
-    /**
-     * 赋予强制执行效力债权文书公证告知书
-     */
-    @TableField("notification")
-    private String notification;
-
-    /**
-     * 公证承诺书
-     */
-    @TableField("promise")
-    private String promise;
-
- 
-
-    /**
-     * 公证申请表
-     */
-    @TableField("apply_pdf")
-    private String applyPdf;
-
-    /**
-     * 送达确认书
-     */
-    @TableField("confirmation_pdf")
-    private String confirmationPdf;
-
-    /**
-     * 受理通知单
-     */
-    @TableField("notice_pdf")
-    private String noticePdf;
-
-    /**
-     * 赋予强制执行效力债权文书公证告知书
-     */
-    @TableField("notification_pdf")
-    private String notificationPdf;
-
-    /**
-     * 公证承诺书
-     */
-    @TableField("promise_pdf")
-    private String promisePdf;
-
-    /**
-     * 对应借款人,抵押人,担保人
-     */
-    @TableField("contract_id")
-    private String contractId;
-
-    /**
-     * 对应借款人,抵押人,担保人
-     */
-    @TableField("business_no")
-    private String businessNo;
-    
-    /**
-     * 面谈笔录的值
-     */
-    @TableField("note")
-    private String note;
-    /**
-     * 面谈的pdf
-     */
-    @TableField("note_pdf")
-    private String notePdf;
-    /**
-     * 面谈的值
-     */
-    @TableField("note_value")
-    private String noteValue;
-    /**
-     * 面谈的值
-     */
-    @TableField("status")
-    private String status;
-
-    @TableField("auth_notarization")
-    private String authNotarizaiton;
-}

+ 6 - 2
eladmin-system/src/main/java/me/zhengjie/appapi/entity/response/BaseResponse.java

@@ -1,10 +1,9 @@
 package me.zhengjie.appapi.entity.response;
 
-import lombok.Data;
 import lombok.Getter;
 import lombok.Setter;
 import lombok.ToString;
-import me.zhengjie.base.ResponseDTO;
+import me.zhengjie.domain.order.OrderBizCodeMessage;
 import me.zhengjie.base.ResultCode;
 
 import java.io.Serializable;
@@ -89,6 +88,11 @@ public class BaseResponse<T> implements Serializable {
 		this.msg = ResultCode.message();
 	}
 
+	public void fail(OrderBizCodeMessage orderBizCodeMessage) {
+		this.code = orderBizCodeMessage.getCode() + "";
+		this.msg = orderBizCodeMessage.getMessage();
+	}
+
 	public void copy(BaseResponse result) {
 		this.code = result.getCode();
 		this.msg = result.getMsg();

+ 0 - 20
eladmin-system/src/main/java/me/zhengjie/appapi/mapper/IOrderDocDao.java

@@ -1,20 +0,0 @@
-package me.zhengjie.appapi.mapper;
-
-import org.apache.ibatis.annotations.Mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-import me.zhengjie.appapi.entity.OrderDocEntity;
-
-/**
- * <p>
- *  Mapper 接口
- * </p>
- *
- * @author humuyu
- * @since 2022-03-30
- */
-@Mapper
-public interface IOrderDocDao extends BaseMapper<OrderDocEntity> {
-
-}

+ 0 - 1
eladmin-system/src/main/java/me/zhengjie/appapi/mapper/IOrderRoomIdDao.java

@@ -4,7 +4,6 @@ import org.apache.ibatis.annotations.Mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
-import me.zhengjie.appapi.entity.OrderDocEntity;
 import me.zhengjie.appapi.entity.OrderRoomIdEntity;
 
 @Mapper

+ 0 - 16
eladmin-system/src/main/java/me/zhengjie/appapi/service/OrderDocService.java

@@ -1,16 +0,0 @@
-package me.zhengjie.appapi.service;
-import me.zhengjie.appapi.entity.OrderDocEntity;
-import me.zhengjie.appapi.plus.AbstractService;
-
-/**
- * <p>
- *  服务类
- * </p>
- *
- * @author humuyu
- * @since 2022-03-30
- */
-public interface OrderDocService extends AbstractService<OrderDocEntity> {
-
-	OrderDocEntity getOrderDocByContractId(String contractId);
-}

+ 2 - 4
eladmin-system/src/main/java/me/zhengjie/appapi/service/OrderService.java

@@ -28,7 +28,7 @@ public interface OrderService extends IService<NotaryOrderEntity> {
 
 	BaseResponse saveOrder(BorrowerEntity borrower, SysUserEntity entity);
 
-	BaseResponse submitOrder(String businessNo);
+	BaseResponse submitOrder(String businessNo, SysUserEntity currentUser);
 
 	public OrderDto getOrderById(String id);
 
@@ -42,7 +42,5 @@ public interface OrderService extends IService<NotaryOrderEntity> {
 
 	public void updateOrderStatus(String orderId) ;
 
-	public boolean canBeParse(String uscc);
-
-	public Object parseOrder(String orderType, String uscc, String content);
+	public Object parseOrder(String orderType, String content, SysUserEntity user);
 }

+ 24 - 87
eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/ApiServiceImpl.java

@@ -1,51 +1,14 @@
 package me.zhengjie.appapi.service.impl;
 
-import java.io.IOException;
-import java.time.LocalDateTime;
-import java.util.*;
-
-import javax.servlet.http.HttpServletRequest;
-
-import me.zhengjie.modules.system.repository.NotaryOrderMapper;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-
 import lombok.extern.slf4j.Slf4j;
-import me.zhengjie.appapi.dao.AccountDao;
-import me.zhengjie.appapi.dao.ConfinfoDao;
-import me.zhengjie.appapi.dao.FileInfoDao;
-import me.zhengjie.appapi.dao.ModelDao;
-import me.zhengjie.appapi.dao.OrderDao;
-
+import me.zhengjie.appapi.dao.*;
 import me.zhengjie.appapi.dto.FileInfoDto;
 import me.zhengjie.appapi.dto.OrderDto;
-import me.zhengjie.appapi.entity.Account;
-import me.zhengjie.appapi.entity.BorrowerEntity;
-import me.zhengjie.appapi.entity.GuaranteeEntity;
-import me.zhengjie.appapi.entity.MortgageEntity;
-import me.zhengjie.appapi.entity.Order;
-import me.zhengjie.appapi.entity.OrderDocEntity;
-import me.zhengjie.appapi.entity.OrderRoomIdEntity;
-import me.zhengjie.appapi.entity.Sms;
+import me.zhengjie.appapi.entity.*;
 import me.zhengjie.appapi.plus.QueryWrapperUtil;
-import me.zhengjie.appapi.service.ApiService;
-import me.zhengjie.appapi.service.BorrowerService;
-import me.zhengjie.appapi.service.GuaranteeService;
-import me.zhengjie.appapi.service.ModelService;
-import me.zhengjie.appapi.service.MortgageService;
-import me.zhengjie.appapi.service.OrderDocService;
-import me.zhengjie.appapi.service.OrderRoomIdService;
-import me.zhengjie.appapi.service.OrderService;
-import me.zhengjie.appapi.service.OssService;
-import me.zhengjie.appapi.service.PdfService;
-import me.zhengjie.appapi.service.SmsService;
+import me.zhengjie.appapi.service.*;
 import me.zhengjie.appapi.util.FileUploadUtil;
 import me.zhengjie.appapi.util.IpAddressUtil;
 import me.zhengjie.appapi.util.StatusEnum;
@@ -54,9 +17,23 @@ import me.zhengjie.appapi.vo.SmsVo;
 import me.zhengjie.appapi.vo.UserVo;
 import me.zhengjie.base.ResponseDTO;
 import me.zhengjie.base.ResultCode;
+import me.zhengjie.dao.OrderFileRepository;
+import me.zhengjie.dao.entity.OrderFileEntity;
 import me.zhengjie.modules.mq.RedisCacheConfig;
 import me.zhengjie.modules.security.security.TokenProvider;
 import me.zhengjie.modules.system.entity.NotaryOrderEntity;
+import me.zhengjie.modules.system.repository.NotaryOrderMapper;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
 
 @Slf4j
 @Service
@@ -64,55 +41,40 @@ public class ApiServiceImpl implements ApiService {
 
 	@Autowired
 	private OrderService orderService;
-
 	@Autowired
 	private SmsService smsService;
-
 	@Autowired
 	OssService ossService;
-
 	@Autowired
 	OrderDao orderDao;
-
 	@Autowired
 	FileInfoDao fileInfoDao;
-
 	@Autowired
 	ModelDao modelDao;
-
 	@Autowired
 	PdfService pdfService;
-
 	@Autowired
 	private AccountDao accountDao;
-
 	@Autowired
 	ConfinfoDao confinfoDao;
-
 	@Autowired
 	private TokenProvider tokenProvider;
-
 	@Autowired
 	private BorrowerService borrowerService;
-
 	@Autowired
 	private MortgageService mortgageService;
-
 	@Autowired
 	private GuaranteeService guaranteeService;
-
 	@Autowired
 	ModelService modelService;
-
-	@Autowired
-	OrderDocService orderDocService;
 	@Autowired
 	private RedisTemplate<String, String> redisTemplate;
-
 	@Autowired
 	OrderRoomIdService orderRoomIdService;
 	@Autowired
 	NotaryOrderMapper orderMapper;
+	@Autowired
+	OrderFileRepository orderFileRepository;
 
 	@Override
 	public ResponseDTO<?> sendSms(HttpServletRequest request, String phone) {
@@ -341,40 +303,15 @@ public class ApiServiceImpl implements ApiService {
 
 	@Override
 	public ResponseDTO<?> getOrderPDF(String orderId) {
-
-		QueryWrapper<OrderDocEntity> query = new QueryWrapper<OrderDocEntity>();
-		query.eq("contract_id", orderId);
-		query.eq("status", "1");
-		OrderDocEntity orderDoc = orderDocService.getOne(query);
-
+		List<OrderFileEntity> orderFileList = orderFileRepository.getOrderFileListByCodes(orderId, "1,2,3,4,5".split(","));
 		List<FileInfoDto> infos = new ArrayList<>();
-		 fileInfo(infos,orderDoc.getApply());
-		 fileInfo(infos,orderDoc.getConfirmation());
-		 fileInfo(infos,orderDoc.getNotice());
-		 fileInfo(infos,orderDoc.getNotification());
-		 fileInfo(infos,orderDoc.getPromise());
-		// 创建文件夹
-		Collections.sort(infos, new Comparator<FileInfoDto>() {
-			@Override
-			public int compare(FileInfoDto o1, FileInfoDto o2) {
-				return o1.getOrderby() > o2.getOrderby() ? 1 : (o1.getOrderby() == o2.getOrderby() ? 0 : -1);
-			}
-		});
-		log.info("方法getOrderPDF的url地址返回参数: " + infos);
-		return ResponseDTO.success(infos);
-	}
-
-	private  void fileInfo(List<FileInfoDto> infos,String json) {
-		if(StringUtils.isNotBlank(json)) {
+		for (OrderFileEntity orderFile : orderFileList) {
 			FileInfoDto info = new FileInfoDto();
-			JSONObject obj = JSONObject.parseObject(json);
-			//这里判断是否含有https
-			String path = obj.getString("path");
-			info.setUrl(FileUploadUtil.getPreviewUrl(path));
-			info.setOrderby(obj.getIntValue("sort"));
+			info.setUrl(FileUploadUtil.getPreviewUrl(orderFile.getHtmlUrl()));
 			infos.add(info);
 		}
-		
+		log.info("方法getOrderPDF的url地址返回参数: " + infos);
+		return ResponseDTO.success(infos);
 	}
 
 	@Override

+ 12 - 13
eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/BorrowerServiceImpl.java

@@ -1,6 +1,5 @@
 package me.zhengjie.appapi.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import me.zhengjie.appapi.dto.OrderDetailDto;
 import me.zhengjie.appapi.dto.OrderDto;
@@ -17,10 +16,9 @@ import me.zhengjie.appapi.util.BeanCopyUtils;
 import me.zhengjie.appapi.util.DateFormatUtils;
 import me.zhengjie.appapi.util.StatusEnum;
 import me.zhengjie.appapi.vo.BorrowerVo;
+import me.zhengjie.dao.OrderFileRepository;
+import me.zhengjie.dao.entity.OrderFileEntity;
 import me.zhengjie.modules.system.entity.NotaryOrderEntity;
-import me.zhengjie.modules.system.entity.OrderDocEntity;
-import me.zhengjie.modules.system.repository.BorrowerMapper;
-import me.zhengjie.modules.system.repository.OrderDocMapper;
 import me.zhengjie.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -48,7 +46,7 @@ public class BorrowerServiceImpl extends AbstractServiceImpl<IBorrowerDao, Borro
     @Autowired
     OrderService orderService;
     @Autowired
-    private OrderDocMapper orderDocMapper;
+    private OrderFileRepository orderFileRepository;
     @Autowired
     ISysUserDao userDao;
     @Autowired
@@ -95,14 +93,15 @@ public class BorrowerServiceImpl extends AbstractServiceImpl<IBorrowerDao, Borro
 		}
 		OrderDetailDto order = BeanCopyUtils.convertObj(borrowers, OrderDetailDto.class);
 		order = orderService.getOrderDetail(order);
-		QueryWrapper<OrderDocEntity> orderDocQW = new QueryWrapper<>();
-		orderDocQW.eq("contract_id",borrowers.getId());
-        OrderDocEntity orderDocEntity = orderDocMapper.selectOne(orderDocQW);
-        if (orderDocEntity != null) {
-            order.setNotarizationNo(orderDocEntity.getNotarizationNo());
-            order.setNotarizaitonSignTime(orderDocEntity.getNotarizationSignTime());
-            order.setAuthNotarization(orderDocEntity.getAuthNotarization());
-            order.setAuthNote(orderDocEntity.getAuthNote());
+        OrderFileEntity notarization = orderFileRepository.getOrderNotarization(String.valueOf(borrowers.getId()));
+        OrderFileEntity note = orderFileRepository.getOrderNote(String.valueOf(borrowers.getId()));
+        if (notarization != null) {
+            order.setNotarizationNo(notarization.getDocNo());
+            order.setNotarizaitonSignTime(notarization.getAxqSignedTime());
+            order.setAuthNotarization(notarization.getSignedPdfUrl());
+        }
+        if (note != null) {
+            order.setAuthNote(note.getSignedPdfUrl());
         }
 		if (!StringUtils.isEmpty(borrowers.getNotaryUserId())) {
 			SysUserEntity user = userDao.selectById(borrowers.getNotaryUserId());

+ 13 - 13
eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/GuaranteeServiceImpl.java

@@ -3,7 +3,6 @@ package me.zhengjie.appapi.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import me.zhengjie.appapi.dto.OrderDetailDto;
-import me.zhengjie.appapi.entity.BorrowerEntity;
 import me.zhengjie.appapi.entity.GuaranteeEntity;
 import me.zhengjie.appapi.entity.SysUserEntity;
 import me.zhengjie.appapi.entity.response.BaseResponse;
@@ -16,10 +15,9 @@ import me.zhengjie.appapi.service.OrderService;
 import me.zhengjie.appapi.util.BeanCopyUtils;
 import me.zhengjie.appapi.util.DateFormatUtils;
 import me.zhengjie.appapi.util.StatusEnum;
-import me.zhengjie.appapi.vo.BorrowerVo;
 import me.zhengjie.appapi.vo.GuaranteeVo;
-import me.zhengjie.modules.system.entity.OrderDocEntity;
-import me.zhengjie.modules.system.repository.OrderDocMapper;
+import me.zhengjie.dao.OrderFileRepository;
+import me.zhengjie.dao.entity.OrderFileEntity;
 import me.zhengjie.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -40,7 +38,7 @@ public class GuaranteeServiceImpl extends AbstractServiceImpl<IGuaranteeDao, Gua
 	@Autowired
 	OrderService orderService;
 	@Autowired
-	private OrderDocMapper orderDocMapper;
+	private OrderFileRepository orderFileRepository;
 	@Autowired
 	ISysUserDao userDao;
 	@Autowired
@@ -55,14 +53,16 @@ public class GuaranteeServiceImpl extends AbstractServiceImpl<IGuaranteeDao, Gua
 		}
 		OrderDetailDto order = BeanCopyUtils.convertObj(entity, OrderDetailDto.class);
 		order = orderService.getOrderDetail(order);
-		QueryWrapper<OrderDocEntity> orderDocQW = new QueryWrapper<>();
-		orderDocQW.eq("contract_id",entity.getId());
-		OrderDocEntity orderDocEntity = orderDocMapper.selectOne(orderDocQW);
-		if (orderDocEntity != null) {
-			order.setNotarizationNo(orderDocEntity.getNotarizationNo());
-			order.setNotarizaitonSignTime(orderDocEntity.getNotarizationSignTime());
-			order.setAuthNotarization(orderDocEntity.getAuthNotarization());
-			order.setAuthNote(orderDocEntity.getAuthNote());
+
+		OrderFileEntity notarization = orderFileRepository.getOrderNotarization(String.valueOf(entity.getId()));
+		OrderFileEntity note = orderFileRepository.getOrderNote(String.valueOf(entity.getId()));
+		if (notarization != null) {
+			order.setNotarizationNo(notarization.getDocNo());
+			order.setNotarizaitonSignTime(notarization.getAxqSignedTime());
+			order.setAuthNotarization(notarization.getSignedPdfUrl());
+		}
+		if (note != null) {
+			order.setAuthNote(note.getSignedPdfUrl());
 		}
 		if (!StringUtils.isEmpty(entity.getNotaryUserId())) {
 			SysUserEntity user = userDao.selectById(entity.getNotaryUserId());

+ 13 - 13
eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/MortgageServiceImpl.java

@@ -2,7 +2,6 @@ package me.zhengjie.appapi.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import me.zhengjie.appapi.dto.OrderDetailDto;
-import me.zhengjie.appapi.entity.GuaranteeEntity;
 import me.zhengjie.appapi.entity.MortgageEntity;
 import me.zhengjie.appapi.entity.SysUserEntity;
 import me.zhengjie.appapi.entity.response.BaseResponse;
@@ -15,10 +14,9 @@ import me.zhengjie.appapi.service.OrderService;
 import me.zhengjie.appapi.util.BeanCopyUtils;
 import me.zhengjie.appapi.util.DateFormatUtils;
 import me.zhengjie.appapi.util.StatusEnum;
-import me.zhengjie.appapi.vo.GuaranteeVo;
 import me.zhengjie.appapi.vo.MortgageVo;
-import me.zhengjie.modules.system.entity.OrderDocEntity;
-import me.zhengjie.modules.system.repository.OrderDocMapper;
+import me.zhengjie.dao.OrderFileRepository;
+import me.zhengjie.dao.entity.OrderFileEntity;
 import me.zhengjie.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -39,7 +37,7 @@ public class MortgageServiceImpl extends AbstractServiceImpl<IMortgageDao, Mortg
 	@Autowired
 	OrderService orderService;
 	@Autowired
-	private OrderDocMapper orderDocMapper;
+	private OrderFileRepository orderFileRepository;
 	@Autowired
 	ISysUserDao userDao;
 	@Autowired
@@ -53,14 +51,16 @@ public class MortgageServiceImpl extends AbstractServiceImpl<IMortgageDao, Mortg
 		}
 		OrderDetailDto order = BeanCopyUtils.convertObj(entity, OrderDetailDto.class);
 		order = orderService.getOrderDetail(order);
-		QueryWrapper<OrderDocEntity> orderDocQW = new QueryWrapper<>();
-		orderDocQW.eq("contract_id",entity.getId());
-		OrderDocEntity orderDocEntity = orderDocMapper.selectOne(orderDocQW);
-		if (orderDocEntity != null) {
-			order.setNotarizationNo(orderDocEntity.getNotarizationNo());
-			order.setNotarizaitonSignTime(orderDocEntity.getNotarizationSignTime());
-			order.setAuthNotarization(orderDocEntity.getAuthNotarization());
-			order.setAuthNote(orderDocEntity.getAuthNote());
+
+		OrderFileEntity notarization = orderFileRepository.getOrderNotarization(String.valueOf(entity.getId()));
+		OrderFileEntity note = orderFileRepository.getOrderNote(String.valueOf(entity.getId()));
+		if (notarization != null) {
+			order.setNotarizationNo(notarization.getDocNo());
+			order.setNotarizaitonSignTime(notarization.getAxqSignedTime());
+			order.setAuthNotarization(notarization.getSignedPdfUrl());
+		}
+		if (note != null) {
+			order.setAuthNote(note.getSignedPdfUrl());
 		}
 		if (!StringUtils.isEmpty(entity.getNotaryUserId())) {
 			SysUserEntity user = userDao.selectById(entity.getNotaryUserId());

+ 28 - 26
eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/NotaryNoteServiceImpl.java

@@ -3,23 +3,25 @@ package me.zhengjie.appapi.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import me.zhengjie.appapi.config.AppConfigInfo;
 import me.zhengjie.appapi.dto.NotaryNoteDto;
 import me.zhengjie.appapi.entity.NotaryNoteEntity;
 import me.zhengjie.appapi.entity.response.BaseResponse;
 import me.zhengjie.appapi.mapper.INotaryNoteDao;
 import me.zhengjie.appapi.service.NotaryNoteService;
-import me.zhengjie.appapi.service.OrderDocService;
 import me.zhengjie.appapi.service.OrderService;
 import me.zhengjie.appapi.util.DateUtils;
 import me.zhengjie.appapi.util.FileUploadUtil;
 import me.zhengjie.appapi.util.StatusEnum;
 import me.zhengjie.appapi.vo.NotaryNoteVo;
+import me.zhengjie.dao.ModelRepository;
+import me.zhengjie.dao.entity.OrderFileEntity;
+import me.zhengjie.dao.mapper.OrderFileMapper;
+import me.zhengjie.domain.order.OrderBizCodeMessage;
 import me.zhengjie.modules.security.service.dto.JwtUserDto;
 import me.zhengjie.modules.system.entity.*;
 import me.zhengjie.modules.system.repository.*;
 import me.zhengjie.modules.system.service.dto.UserDto;
-import me.zhengjie.util.TextTempletUtil;
+import me.zhengjie.base.util.TextTempletUtil;
 import me.zhengjie.utils.SecurityUtils;
 import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -57,7 +59,9 @@ public class NotaryNoteServiceImpl extends ServiceImpl<INotaryNoteDao, NotaryNot
 	@Autowired
 	OrderService orderService;
 	@Autowired
-	OrderDocService orderDocService;
+	ModelRepository modelRepository;
+	@Autowired
+	OrderFileMapper orderFileMapper;
 
 	@Override
 	public JSONObject getNotaryNoteByType(NotaryNoteVo notary) {
@@ -173,7 +177,7 @@ public class NotaryNoteServiceImpl extends ServiceImpl<INotaryNoteDao, NotaryNot
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public BaseResponse saveNotaryNote(NotaryNoteVo notary) {
-		UserDto userDto = ((JwtUserDto) SecurityUtils.getCurrentUser()).getUser();
+		BaseResponse response = new BaseResponse<>();
 		String typePrefix = notary.getOrderId().substring(0, 2);
 		String code = "";
 		if ("10".equals(typePrefix)) {
@@ -183,6 +187,13 @@ public class NotaryNoteServiceImpl extends ServiceImpl<INotaryNoteDao, NotaryNot
 		} else {
 			code = "8";
 		}
+		UserDto userDto = ((JwtUserDto) SecurityUtils.getCurrentUser()).getUser();
+		String notaryOfficeId = userDto.getOrgId().split("_")[1];
+		String[] codes = {code};
+		if (modelRepository.existModelInEditing(notaryOfficeId, codes)) {
+			response.fail(OrderBizCodeMessage.MODEL_IN_EDITING);
+			return response;
+		}
 		List<NotaryNoteDto> notaryNoteDtoList = notary.getNotaryNoteDtos();
 		String modelContent = readFileInString(code);
 		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
@@ -196,28 +207,19 @@ public class NotaryNoteServiceImpl extends ServiceImpl<INotaryNoteDao, NotaryNot
 		String htmlpath = FileUploadUtil.saveHtml(htmlContent, notary.getBusinessNo(),notary.getOrderId());
 		String pdfPath = FileUploadUtil.savePdf(htmlContent, notary.getBusinessNo(),notary.getOrderId());
 		//
-		me.zhengjie.appapi.entity.OrderDocEntity orderDoc = new me.zhengjie.appapi.entity.OrderDocEntity();
-		orderDoc.setNote(htmlpath);
-		orderDoc.setNotePdf(pdfPath);
-		orderDocService.update(orderDoc, "contract_id", notary.getOrderId());
-		// 如果相同取出数据
-		if ("9".equals(code)) {
-			String contractId = "";
-			if ("10".equals(typePrefix)) {
-				QueryWrapper<MortgageEntity> mortgageQw = new QueryWrapper<>();
-				mortgageQw.eq("business_no", notary.getBusinessNo());
-				MortgageEntity mortgageEntity = mortgageMapper.selectOne(mortgageQw);
-				contractId = mortgageEntity.getId().toString();
-			} else {
-				QueryWrapper<BorrowerEntity> borroweQw = new QueryWrapper<>();
-				borroweQw.eq("business_no", notary.getBusinessNo());
-				BorrowerEntity borrowerEntity = borrowerMapper.selectOne(borroweQw);
-				contractId = borrowerEntity.getId().toString();
-			}
-			orderDocService.update(orderDoc, "contract_id", contractId);
-		}
+		ModelEntity modelEntity = modelRepository.getModelEntity(String.valueOf(officeEntity.getId()),code,"1");
+		OrderFileEntity orderFile = new OrderFileEntity();
+		orderFile.setBusinessNo(notary.getBusinessNo());
+		orderFile.setContractId(notary.getOrderId());
+		orderFile.setCode(code);
+		orderFile.setHtmlUrl(htmlpath);
+		orderFile.setPdfUrl(pdfPath);
+		orderFile.setSortNum(modelEntity.getSort());
+		orderFile.setCreateTime(new Date());
+		orderFile.setCreatorId(userDto.getId());
+		orderFileMapper.insert(orderFile);
 		saveNotaryUserId(notary.getBusinessNo());
-		return BaseResponse.success();
+		return response;
 	}
 
 	/**

+ 0 - 49
eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/OrderDocServiceImpl.java

@@ -1,49 +0,0 @@
-package me.zhengjie.appapi.service.impl;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-
-import me.zhengjie.appapi.entity.OrderDocEntity;
-import me.zhengjie.appapi.mapper.IOrderDocDao;
-import me.zhengjie.appapi.plus.AbstractServiceImpl;
-import me.zhengjie.appapi.service.NotaryNoteService;
-import me.zhengjie.appapi.service.OrderDocService;
-import me.zhengjie.appapi.service.OrderService;
-import me.zhengjie.appapi.service.SysUserService;
-import me.zhengjie.modules.system.service.NotaryOfficeService;
-
-/**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author humuyu
- * @since 2022-03-30
- */
-@Service
-public class OrderDocServiceImpl extends AbstractServiceImpl<IOrderDocDao, OrderDocEntity> implements OrderDocService {
-
-	@Autowired
-	NotaryNoteService notaryNoteService;
-
-	@Autowired
-	OrderService orderService;
-	@Autowired
-	SysUserService userService;
-
-	@Autowired
-	OrderDocService orderDocService;
-	@Autowired
-	NotaryOfficeService notaryOffice;
-
-	@Override
-	public OrderDocEntity getOrderDocByContractId(String contractId) {
-		QueryWrapper<OrderDocEntity> query = new QueryWrapper<>();
-		query.eq("contract_id", contractId);
-		OrderDocEntity doc = this.getOne(query);
-		return doc;
-	}
-
-}

+ 36 - 19
eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/OrderServiceImpl.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import me.zhengjie.domain.order.OrderBizCodeMessage;
 import me.zhengjie.appapi.dao.OrderDao;
 import me.zhengjie.appapi.dto.OrderDetailDto;
 import me.zhengjie.appapi.dto.OrderDto;
@@ -16,18 +17,23 @@ import me.zhengjie.appapi.util.FileUploadUtil;
 import me.zhengjie.appapi.util.StatusEnum;
 import me.zhengjie.appapi.util.StatusEnum.NotaryStatusEnum;
 import me.zhengjie.base.ResultCode;
+import me.zhengjie.dao.ModelRepository;
+import me.zhengjie.dao.OrderRepository;
+import me.zhengjie.domain.order.OrderConstant;
+import me.zhengjie.domain.order.parser.OrderOCRParser;
 import me.zhengjie.modules.mq.RedisCacheConfig;
-import me.zhengjie.modules.system.domain.order.parser.OrderOCRParserFactory;
+import me.zhengjie.domain.order.parser.OrderOCRParserFactory;
 import me.zhengjie.modules.system.entity.BankEntity;
 import me.zhengjie.modules.system.entity.NotaryOfficeEntity;
 import me.zhengjie.modules.system.entity.NotaryOrderEntity;
 import me.zhengjie.modules.system.entity.OfficeXbankEntity;
+import me.zhengjie.modules.system.repository.BankMapper;
 import me.zhengjie.modules.system.repository.NotaryOfficeMapper;
 import me.zhengjie.modules.system.repository.NotaryOrderMapper;
 import me.zhengjie.modules.system.repository.OfficeXbankMapper;
 import me.zhengjie.modules.system.service.BankService;
 import me.zhengjie.modules.system.service.NotaryOrderService;
-import me.zhengjie.util.TencentServiceUtil;
+import me.zhengjie.base.util.TencentServiceUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -74,6 +80,12 @@ public class OrderServiceImpl extends ServiceImpl<NotaryOrderMapper, NotaryOrder
 	NotaryOfficeMapper notaryOfficeMapper;
 	@Autowired
 	OrderOCRParserFactory orderOCRParserFactory;
+	@Autowired
+	ModelRepository modelRepository;
+	@Autowired
+	OrderRepository orderRepository;
+	@Autowired
+	private BankMapper bankMapper;
 
 	@Override
 	public int checkOrder(Sms sms) {
@@ -173,15 +185,21 @@ public class OrderServiceImpl extends ServiceImpl<NotaryOrderMapper, NotaryOrder
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
-	public BaseResponse submitOrder(String businessNo) {
+	public BaseResponse submitOrder(String businessNo, SysUserEntity currentUser) {
 		BaseResponse response = new BaseResponse<>();
-		if(isSubOrderCompleted(businessNo)) {
-			updateStatus(businessNo, NotaryStatusEnum.VERIFY.getStatus().toString(),"");
+		NotaryOrderEntity orderEntity = orderRepository.getOrderEntityByBizNo(businessNo);
+		if (modelRepository.existModelInEditing(orderEntity.getNotaryOfficeId(), "1,2,3,4,5".split(","))) {
+			response.fail(OrderBizCodeMessage.MODEL_IN_EDITING);
+			return response;
+		}
+		if (isSubOrderCompleted(businessNo)) {
+			updateStatus(businessNo, NotaryStatusEnum.VERIFY.getStatus().toString(), "");
 			// 推送创建订单文档任务消息
 			JSONObject jsonObject = new JSONObject();
 			jsonObject.put("businessNo", businessNo);
+			jsonObject.put("userId", currentUser.getUserId());
 			redisTemplate.convertAndSend(RedisCacheConfig.CHANNEL_HTML_PDF, jsonObject.toJSONString());
-		}else{
+		} else {
 			response.fail(ResultCode.SUB_ORDER_UNCOMPLETED);
 		}
 		return response;
@@ -546,19 +564,18 @@ public class OrderServiceImpl extends ServiceImpl<NotaryOrderMapper, NotaryOrder
 	}
 
 	@Override
-	public boolean canBeParse(String uscc){
-		return orderOCRParserFactory.canBeParse(uscc);
-	}
-
-	@Override
-	public Object parseOrder(String orderType, String uscc, String content) {
-		String result = TencentServiceUtil.readInfoWithOCR(content);
-		if ("borrower".equals(orderType)) {
-			return orderOCRParserFactory.generateOrderOCRParser(uscc).parseBorrower(result);
-		} else if ("mortgage".equals(orderType)) {
-			return orderOCRParserFactory.generateOrderOCRParser(uscc).parseMortgage(result);
-		} else if ("guarantee".equals(orderType)) {
-			return orderOCRParserFactory.generateOrderOCRParser(uscc).parseGuarantee(result);
+	public Object parseOrder(String orderType, String content, SysUserEntity user) {
+		BankEntity bank = bankMapper.selectById(user.getOrgId().split("_")[1]);
+		OrderOCRParser orderOCRParser = orderOCRParserFactory.generateOrderOCRParser(bank.getUscc());
+		if (orderOCRParser != null) {
+			String result = TencentServiceUtil.readInfoWithOCR(content);
+			if (OrderConstant.ORDER_TYPE_BORROWER.equals(orderType)) {
+				return orderOCRParser.parseBorrower(result);
+			} else if (OrderConstant.ORDER_TYPE_MORTGAGE.equals(orderType)) {
+				return orderOCRParser.parseMortgage(result);
+			} else if (OrderConstant.ORDER_TYPE_GUARANTEE.equals(orderType)) {
+				return orderOCRParser.parseGuarantee(result);
+			}
 		}
 		return null;
 	}

+ 45 - 106
eladmin-system/src/main/java/me/zhengjie/appapi/service/impl/UserAXQInfoServiceImpl.java

@@ -11,18 +11,19 @@ import me.zhengjie.appapi.util.FileUploadUtil;
 import me.zhengjie.appapi.util.StatusEnum.StepStatusEnum;
 import me.zhengjie.base.ResponseDTO;
 import me.zhengjie.base.ResultCode;
-import me.zhengjie.modules.system.entity.OrderDocEntity;
-import me.zhengjie.modules.system.repository.OrderDocMapper;
-import me.zhengjie.util.CFCACertUtil;
-import me.zhengjie.util.TencentServiceUtil;
+import me.zhengjie.dao.OrderFileRepository;
+import me.zhengjie.dao.entity.OrderFileEntity;
+import me.zhengjie.dao.mapper.OrderFileMapper;
+import me.zhengjie.base.util.CFCACertUtil;
+import me.zhengjie.base.util.TencentServiceUtil;
 import me.zhengjie.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
-import java.io.File;
 import java.io.InputStream;
 import java.util.Date;
+import java.util.List;
 
 @Service
 public class UserAXQInfoServiceImpl extends ServiceImpl<IUserAXQInfoDao, UserAXQInfoEntity>
@@ -36,7 +37,9 @@ public class UserAXQInfoServiceImpl extends ServiceImpl<IUserAXQInfoDao, UserAXQ
 	@Autowired
 	IUserAXQInfoDao userAXQDao;
 	@Autowired
-	OrderDocMapper orderDocMapper;
+	OrderFileRepository orderFileRepository;
+	@Autowired
+	OrderFileMapper orderFileMapper;
 
 	@Override
 	public ResponseDTO<?> registAXQUser(String idCard, String phone, String name) {
@@ -136,107 +139,43 @@ public class UserAXQInfoServiceImpl extends ServiceImpl<IUserAXQInfoDao, UserAXQ
 		return ResponseDTO.success();
 	}
 
+	/**
+	 * 公证文书签名
+	 * @param entity
+	 * @param contractId
+	 */
 	private void signContract(UserAXQInfoEntity entity, String contractId){
-        QueryWrapper<OrderDocEntity> qw = new QueryWrapper<>();
-        qw.eq("contract_id",contractId);
-        OrderDocEntity orderDocEntity = orderDocMapper.selectOne(qw);
-        // 签名用户信息
-        UploadSignInfoVO notartyUser = new UploadSignInfoVO();
-        notartyUser.setUserId(entity.getAxqUserId());
-        notartyUser.setSealId(entity.getAxqSealId());
-        notartyUser.setLocation("210.74.41.0");
-        notartyUser.setAuthorizationTime("20220214171200");
-        // 签名&下载文件
-        OrderDocEntity saveDocEntity = new OrderDocEntity();
-        saveDocEntity.setId(orderDocEntity.getId());
-        CFCACertUtil.proxySwitchOn = "dev".equals(systemEnv);
-        //得到路径
-    	String orderType = StepStatusEnum.getType(Integer.valueOf(orderDocEntity.getContractId()));
-     	String uplaodPath = orderDocEntity.getBusinessNo() + "/" + orderType + "/" ;
-     
-     	
-        String path = uplaodPath + "signed-doc-" + entity.getIdCard() + "/";
-        try{
-        	//通过文件得到文件的流
-            InputStream inputStream=FileUploadUtil.getInputStream(orderDocEntity.getApplyPdf());
-            String fileName = FileUploadUtil.getFileName(orderDocEntity.getApplyPdf());
-            String applyContractNo = CFCACertUtil.uploadSignContract(notartyUser, inputStream,fileName);
-            saveDocEntity.setApplyContractNo(applyContractNo);
-            //
-            String filePath = CFCACertUtil.download(path, applyContractNo);
-            //           String fileUrl = filePath.replaceAll(uplaodPath, imageURL);
-           saveDocEntity.setAuthApply(filePath);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        try{
-           
-            InputStream inputStream=FileUploadUtil.getInputStream(orderDocEntity.getConfirmationPdf());
-            String fileName = FileUploadUtil.getFileName(orderDocEntity.getConfirmationPdf());
-//            File confirmation = new File(orderDocEntity.getConfirmationPdf().replaceAll(imageURL, uplaodPath));
-            String confirmationContractNo = CFCACertUtil.uploadSignContract(notartyUser, inputStream,fileName);
-            saveDocEntity.setConfirmationContractNo(confirmationContractNo);
-            String filePath = CFCACertUtil.download(path, confirmationContractNo);
-//            String fileUrl = filePath.replaceAll(uplaodPath, imageURL);
-            saveDocEntity.setAuthConfirmation(filePath);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        try{
-        	
-            InputStream inputStream=FileUploadUtil.getInputStream(orderDocEntity.getNotePdf());
-            String fileName = FileUploadUtil.getFileName(orderDocEntity.getNotePdf());
-        	
-//            File note = new File(orderDocEntity.getNotePdf().replaceAll(imageURL, uplaodPath));
-            String noteContractNo = CFCACertUtil.uploadSignContract(notartyUser,inputStream,fileName);
-            saveDocEntity.setNoteContractNo(noteContractNo);
-            //
-            String filePath = CFCACertUtil.download(path, noteContractNo);
-//            String fileUrl = filePath.replaceAll(uplaodPath, imageURL);
-            saveDocEntity.setAuthNote(filePath);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        try{
-//            File notice = new File(orderDocEntity.getNoticePdf().replaceAll(imageURL, uplaodPath));
-            InputStream inputStream=FileUploadUtil.getInputStream(orderDocEntity.getNoticePdf());
-            String fileName = FileUploadUtil.getFileName(orderDocEntity.getNoticePdf());
-            String noticeContractNo = CFCACertUtil.uploadSignContract(notartyUser, inputStream,fileName);
-            saveDocEntity.setNoticeContractNo(noticeContractNo);
-            //
-            String filePath = CFCACertUtil.download(path, noticeContractNo);
- //           String fileUrl = filePath.replaceAll(uplaodPath, imageURL);
-                saveDocEntity.setAuthNotice(filePath);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        try{
- //           File promise = new File(orderDocEntity.getPromisePdf().replaceAll(imageURL, uplaodPath));
-            InputStream inputStream=FileUploadUtil.getInputStream(orderDocEntity.getPromisePdf());
-            String fileName = FileUploadUtil.getFileName(orderDocEntity.getPromisePdf());
-            String promiseContractNo = CFCACertUtil.uploadSignContract(notartyUser, inputStream,fileName);
-            saveDocEntity.setPromiseContractNo(promiseContractNo);
-            //
-            String filePath = CFCACertUtil.download(path, promiseContractNo);
- //           String fileUrl = filePath.replaceAll(uplaodPath, imageURL);
-            saveDocEntity.setAuthPromise(filePath);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        try{
- //           File notification = new File(orderDocEntity.getNotificationPdf().replaceAll(imageURL, uplaodPath));
-            InputStream inputStream=FileUploadUtil.getInputStream(orderDocEntity.getNotificationPdf());
-            String fileName = FileUploadUtil.getFileName(orderDocEntity.getNotificationPdf());
-            String notificaitonContractNo = CFCACertUtil.uploadSignContract(notartyUser,inputStream,fileName);
-            saveDocEntity.setNotificationContractNo(notificaitonContractNo);
-            //
-            String filePath = CFCACertUtil.download(path, notificaitonContractNo);
-//            String fileUrl = filePath.replaceAll(uplaodPath, imageURL);
-            saveDocEntity.setAuthNotification(filePath);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-        orderDocMapper.updateById(saveDocEntity);
+		// 签名用户信息
+		UploadSignInfoVO notartyUser = new UploadSignInfoVO();
+		notartyUser.setUserId(entity.getAxqUserId());
+		notartyUser.setSealId(entity.getAxqSealId());
+		notartyUser.setLocation("210.74.41.0");
+		notartyUser.setAuthorizationTime("20220214171200");
+		//
+		List<OrderFileEntity> orderFileList = orderFileRepository.getOrderFileListByCodes(contractId, "1,2,3,4,5,6,7,8,9".split(","));
+		CFCACertUtil.proxySwitchOn = "dev".equals(systemEnv);
+		String orderType = StepStatusEnum.getType(Integer.valueOf(contractId));
+		String uplaodPath = orderFileList.get(0).getBusinessNo() + "/" + orderType + "/";
+		String path = uplaodPath + "signed-doc-" + entity.getIdCard() + "/";
+		for (OrderFileEntity orderFile : orderFileList) {
+			OrderFileEntity updateOrderFile = new OrderFileEntity();
+			updateOrderFile.setId(orderFile.getId());
+			updateOrderFile.setUpdateTime(new Date());
+			updateOrderFile.setUpdaterId(entity.getId().longValue());
+			try {
+				InputStream inputStream = FileUploadUtil.getInputStream(orderFile.getPdfUrl());
+				String fileName = FileUploadUtil.getFileName(orderFile.getPdfUrl());
+				String axqContractNo = CFCACertUtil.uploadSignContract(notartyUser, inputStream, fileName);
+				updateOrderFile.setAxqContractNo(axqContractNo);
+				updateOrderFile.setAxqSignedTime(new Date());
+				//
+				String filePath = CFCACertUtil.download(path, axqContractNo);
+				updateOrderFile.setSignedPdfUrl(filePath);
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+			orderFileMapper.updateById(updateOrderFile);
+		}
     }
 
 	@Override

+ 1 - 0
eladmin-system/src/main/java/me/zhengjie/appapi/vo/FileVo.java

@@ -24,6 +24,7 @@ public class FileVo {
 	private MultipartFile file;
 	// 业务编码
 	@ApiModelProperty(value = "业务编号")
+	private String businessNo;
 	private String contractId;
 	private String filePath;
 	// 传输类型,8

+ 2 - 1
eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java

@@ -13,7 +13,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package me.zhengjie.config;
+package me.zhengjie.base.config;
 
 import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.alibaba.fastjson.support.config.FastJsonConfig;
@@ -21,6 +21,7 @@ import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
 
 import me.zhengjie.appapi.util.SysUtil;
 
+import me.zhengjie.config.FileProperties;
 import org.springframework.beans.factory.ObjectProvider;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.web.ConditionalOnEnabledResourceChain;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/config/ProcessMedia.java

@@ -1,4 +1,4 @@
-package me.zhengjie.config;
+package me.zhengjie.base.config;
 
 import com.tencentcloudapi.common.Credential;
 import com.tencentcloudapi.common.profile.ClientProfile;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/config/WebSocketConfig.java

@@ -13,7 +13,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package me.zhengjie.config;
+package me.zhengjie.base.config;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/config/thread/AsyncTaskExecutePool.java

@@ -13,7 +13,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package me.zhengjie.config.thread;
+package me.zhengjie.base.config.thread;
 
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;

+ 1 - 2
eladmin-system/src/main/java/me/zhengjie/config/thread/AsyncTaskProperties.java

@@ -13,11 +13,10 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package me.zhengjie.config.thread;
+package me.zhengjie.base.config.thread;
 
 import lombok.Data;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.stereotype.Component;
 
 /**

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/config/thread/TheadFactoryName.java

@@ -13,7 +13,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package me.zhengjie.config.thread;
+package me.zhengjie.base.config.thread;
 
 import org.springframework.stereotype.Component;
 

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/config/thread/ThreadPoolExecutorUtil.java

@@ -13,7 +13,7 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package me.zhengjie.config.thread;
+package me.zhengjie.base.config.thread;
 
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.ThreadPoolExecutor;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/util/A.java

@@ -1,4 +1,4 @@
-package me.zhengjie.util;
+package me.zhengjie.base.util;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/util/CFCACertUtil.java

@@ -1,4 +1,4 @@
-package me.zhengjie.util;
+package me.zhengjie.base.util;
 
 import cfca.sadk.algorithm.common.PKIException;
 import cfca.sadk.util.Base64;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/util/DownloadUtils.java

@@ -1,4 +1,4 @@
-package me.zhengjie.util;
+package me.zhengjie.base.util;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/util/HttpConnector.java

@@ -1,4 +1,4 @@
-package me.zhengjie.util;
+package me.zhengjie.base.util;
 
 import cfca.trustsign.constant.Request;
 import cfca.trustsign.util.CommonUtil;

eladmin-system/src/main/java/me/zhengjie/util/MinioUtils.java → eladmin-system/src/main/java/me/zhengjie/base/util/MinioUtils.java


+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/util/TencentServiceUtil.java

@@ -1,4 +1,4 @@
-package me.zhengjie.util;
+package me.zhengjie.base.util;
 
 import com.tencentcloudapi.common.Credential;
 import com.tencentcloudapi.common.profile.ClientProfile;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/util/TextTempletUtil.java

@@ -1,4 +1,4 @@
-package me.zhengjie.util;
+package me.zhengjie.base.util;
 
 import java.util.Iterator;
 import java.util.Map;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/util/WebSocketMap.java

@@ -1,4 +1,4 @@
-package me.zhengjie.util;
+package me.zhengjie.base.util;
 
 import java.util.List;
 import java.util.concurrent.ConcurrentHashMap;

+ 56 - 0
eladmin-system/src/main/java/me/zhengjie/dao/ModelRepository.java

@@ -0,0 +1,56 @@
+package me.zhengjie.dao;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.RequiredArgsConstructor;
+import me.zhengjie.modules.system.entity.ModelEntity;
+import me.zhengjie.modules.system.repository.ModelMapper;
+import org.springframework.stereotype.Component;
+
+@RequiredArgsConstructor
+@Component
+public class ModelRepository {
+
+    final ModelMapper modelMapper;
+
+    /**
+     * 是否存在编辑中的模板
+     *
+     * @param notaryOfficeId 公证处ID
+     * @param codes          模板类型
+     * @return 存在返回true,不存在返回false
+     */
+    public boolean existModelInEditing(String notaryOfficeId, String[] codes) {
+        QueryWrapper<ModelEntity> qw = new QueryWrapper<>();
+        qw.eq("notary_office_id", notaryOfficeId);
+        qw.eq("status", 0);
+        qw.in("code", codes);
+        long count = modelMapper.selectCount(qw);
+        return count > 0;
+    }
+
+    /**
+     * 是否存在编辑中的模板
+     * @param notaryOfficeId
+     * @param code
+     * @return
+     */
+    public boolean existModelInEditing(String notaryOfficeId, String code) {
+        String[] codes = {code};
+        return existModelInEditing(notaryOfficeId, codes);
+    }
+
+    /**
+     * 查询指定公证处指定状态的指定类型模板
+     * @param notaryOfficeId
+     * @param code
+     * @param status
+     * @return
+     */
+    public ModelEntity getModelEntity(String notaryOfficeId, String code, String status){
+        QueryWrapper<ModelEntity> modelQw = new QueryWrapper<>();
+        modelQw.eq("notary_office_id", notaryOfficeId);
+        modelQw.eq("code", code);
+        modelQw.eq("status", status);
+        return modelMapper.selectOne(modelQw);
+    }
+}

+ 83 - 0
eladmin-system/src/main/java/me/zhengjie/dao/OrderFileRepository.java

@@ -0,0 +1,83 @@
+package me.zhengjie.dao;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.RequiredArgsConstructor;
+import me.zhengjie.dao.entity.OrderFileEntity;
+import me.zhengjie.dao.mapper.OrderFileMapper;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@RequiredArgsConstructor
+@Component
+public class OrderFileRepository {
+
+    final OrderFileMapper orderFileMapper;
+
+    /**
+     * 获取指定订单指定类型的公证文书列表
+     *
+     * @param contractId
+     * @param codes
+     * @return
+     */
+    public List<OrderFileEntity> getOrderFileListByCodes(String contractId, String[] codes) {
+        QueryWrapper<OrderFileEntity> qw = new QueryWrapper<>();
+        qw.eq("contract_id", contractId);
+        qw.in("code", codes);
+        qw.orderByAsc("sord_num");
+        return orderFileMapper.selectList(qw);
+    }
+
+    /**
+     * 获取指定订单指定类型的公证文书
+     *
+     * @param contractId
+     * @param code
+     * @return
+     */
+    public OrderFileEntity getOrderFileByCode(String contractId, String code) {
+        String[] codes = {code};
+        List<OrderFileEntity> orderFileList = getOrderFileListByCodes(contractId, codes);
+        return orderFileList.get(0);
+    }
+
+    /**
+     * 获取指定订单公证书
+     * @param contractId
+     * @return
+     */
+    public OrderFileEntity getOrderNotarization(String contractId) {
+        String code = "";
+        if ("10".equals(contractId.substring(0, 2))) {
+            code = "10";
+        } else if ("11".equals(contractId.substring(0, 2))) {
+            code = "12";
+        } else {
+            code = "11";
+        }
+        return getOrderFileByCode(contractId, code);
+    }
+
+    /**
+     * 获取指定订单面谈笔录
+     * @param contractId
+     * @return
+     */
+    public OrderFileEntity getOrderNote(String contractId) {
+        return getOrderFileListByCodes(contractId, "6,7,8,9".split(",")).get(0);
+    }
+
+    /**
+     * 获取指定订单可以签名的公证书列表
+     * @param orderIdList
+     * @return
+     */
+    public List<OrderFileEntity> canBeSignedNotarization(List<Long> orderIdList) {
+        QueryWrapper<OrderFileEntity> qw = new QueryWrapper<>();
+        qw.in("contract_id", orderIdList);
+        qw.in("code", "10,11,12".split(","));
+        qw.isNotNull("doc_no");
+        return orderFileMapper.selectList(qw);
+    }
+}

+ 25 - 0
eladmin-system/src/main/java/me/zhengjie/dao/OrderRepository.java

@@ -0,0 +1,25 @@
+package me.zhengjie.dao;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import lombok.RequiredArgsConstructor;
+import me.zhengjie.modules.system.entity.NotaryOrderEntity;
+import me.zhengjie.modules.system.repository.NotaryOrderMapper;
+import org.springframework.stereotype.Component;
+
+@RequiredArgsConstructor
+@Component
+public class OrderRepository {
+
+    final NotaryOrderMapper notaryOrderMapper;
+
+    /**
+     * 根据业务编号获取主订单
+     * @param businessNo 主订单业务编号
+     * @return 主订单
+     */
+    public NotaryOrderEntity getOrderEntityByBizNo(String businessNo) {
+        QueryWrapper<NotaryOrderEntity> qw = new QueryWrapper<>();
+        qw.eq("business_no", businessNo);
+        return notaryOrderMapper.selectOne(qw);
+    }
+}

+ 65 - 0
eladmin-system/src/main/java/me/zhengjie/dao/entity/OrderFileEntity.java

@@ -0,0 +1,65 @@
+package me.zhengjie.dao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@TableName("order_file")
+@Getter
+@Setter
+@ToString
+public class OrderFileEntity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("business_no")
+    private String businessNo;
+
+    @TableField("contract_id")
+    private String contractId;
+
+    @TableField("code")
+    private String code;
+
+    @TableField("doc_no")
+    private String docNo;
+
+    @TableField("html_url")
+    private String htmlUrl;
+
+    @TableField("pdf_url")
+    private String pdfUrl;
+
+    @TableField("signed_pdf_url")
+    private String signedPdfUrl;
+
+    @TableField("sort_num")
+    private Integer sortNum;
+
+    @TableField("axq_contract_no")
+    private String axqContractNo;
+
+    @TableField("axq_signed_time")
+    private Date axqSignedTime;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("creator_id")
+    private Long creatorId;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+    @TableField("updater_id")
+    private Long updaterId;
+}

+ 9 - 0
eladmin-system/src/main/java/me/zhengjie/dao/mapper/OrderFileMapper.java

@@ -0,0 +1,9 @@
+package me.zhengjie.dao.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import me.zhengjie.dao.entity.OrderFileEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface OrderFileMapper extends BaseMapper<OrderFileEntity> {
+}

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/BorrowerDomain.java

@@ -1,4 +1,4 @@
-package me.zhengjie.modules.system.domain.order;
+package me.zhengjie.domain.order;
 
 import lombok.Getter;
 import lombok.NoArgsConstructor;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/GuaranteeDomain.java

@@ -1,4 +1,4 @@
-package me.zhengjie.modules.system.domain.order;
+package me.zhengjie.domain.order;
 
 import lombok.Getter;
 import lombok.NoArgsConstructor;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/MortgageDomain.java

@@ -1,4 +1,4 @@
-package me.zhengjie.modules.system.domain.order;
+package me.zhengjie.domain.order;
 
 import lombok.Getter;
 import lombok.NoArgsConstructor;

+ 28 - 0
eladmin-system/src/main/java/me/zhengjie/domain/order/OrderBizCodeMessage.java

@@ -0,0 +1,28 @@
+package me.zhengjie.domain.order;
+
+/**
+ * 银行客户经理应用响应状态码
+ */
+public enum OrderBizCodeMessage {
+    MODEL_IN_EDITING(2010001, "公证文书模板修改中,请稍后再试!"),
+    NOTARIZATION_GENERATE_TYPE_ERROR(2020001, "公证书生成方式错误,请选择正确的生成方式!"),
+    ;
+
+    // 业务代码
+    int code;
+    // 提示信息
+    String message;
+
+    OrderBizCodeMessage(int code, String message) {
+        this.code = code;
+        this.message = message;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+}

+ 10 - 0
eladmin-system/src/main/java/me/zhengjie/domain/order/OrderConstant.java

@@ -0,0 +1,10 @@
+package me.zhengjie.domain.order;
+
+public class OrderConstant {
+    /**
+     * 订单类型
+     */
+    public static final String ORDER_TYPE_BORROWER = "borrower";
+    public static final String ORDER_TYPE_MORTGAGE = "mortgage";
+    public static final String ORDER_TYPE_GUARANTEE = "guarantee";
+}

+ 4 - 4
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/parser/OrderOCRParser.java

@@ -1,8 +1,8 @@
-package me.zhengjie.modules.system.domain.order.parser;
+package me.zhengjie.domain.order.parser;
 
-import me.zhengjie.modules.system.domain.order.BorrowerDomain;
-import me.zhengjie.modules.system.domain.order.GuaranteeDomain;
-import me.zhengjie.modules.system.domain.order.MortgageDomain;
+import me.zhengjie.domain.order.BorrowerDomain;
+import me.zhengjie.domain.order.GuaranteeDomain;
+import me.zhengjie.domain.order.MortgageDomain;
 
 public interface OrderOCRParser {
     /**

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/parser/OrderOCRParserFactory.java

@@ -1,4 +1,4 @@
-package me.zhengjie.modules.system.domain.order.parser;
+package me.zhengjie.domain.order.parser;
 
 public interface OrderOCRParserFactory {
     /**

+ 3 - 3
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/parser/impl/OrderOCRParserFactoryImpl.java

@@ -1,7 +1,7 @@
-package me.zhengjie.modules.system.domain.order.parser.impl;
+package me.zhengjie.domain.order.parser.impl;
 
-import me.zhengjie.modules.system.domain.order.parser.OrderOCRParser;
-import me.zhengjie.modules.system.domain.order.parser.OrderOCRParserFactory;
+import me.zhengjie.domain.order.parser.OrderOCRParser;
+import me.zhengjie.domain.order.parser.OrderOCRParserFactory;
 import org.springframework.stereotype.Component;
 
 import java.util.Arrays;

+ 33 - 31
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/order/parser/impl/YZBankOrderOCRParserImpl.java

@@ -1,12 +1,12 @@
-package me.zhengjie.modules.system.domain.order.parser.impl;
+package me.zhengjie.domain.order.parser.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import lombok.NoArgsConstructor;
-import me.zhengjie.modules.system.domain.order.BorrowerDomain;
-import me.zhengjie.modules.system.domain.order.GuaranteeDomain;
-import me.zhengjie.modules.system.domain.order.MortgageDomain;
-import me.zhengjie.modules.system.domain.order.parser.OrderOCRParser;
+import me.zhengjie.domain.order.parser.OrderOCRParser;
+import me.zhengjie.domain.order.BorrowerDomain;
+import me.zhengjie.domain.order.GuaranteeDomain;
+import me.zhengjie.domain.order.MortgageDomain;
 import org.springframework.stereotype.Component;
 
 import java.text.SimpleDateFormat;
@@ -69,36 +69,37 @@ public class YZBankOrderOCRParserImpl implements OrderOCRParser {
         int borrowerStartIndex = 0;
         for (Object obj : structuralItems) {
             JSONObject json = (JSONObject) obj;
-            String key = json.getString("name");
+            String key = json.getString("Name");
             if ("借款人(乙方)".equals(key)) {
-                JSONObject itemCoord = json.getJSONObject("itemCoord");
+                JSONObject itemCoord = json.getJSONObject("ItemCoord");
                 borrowerStartIndex = itemCoord.getInteger("Y");
+                break;
             }
         }
         // 解析对应的值
         try {
             for (Object obj : structuralItems) {
                 JSONObject json = (JSONObject) obj;
-                String key = json.getString("name");
-                int currentIndex = json.getJSONObject("itemCoord").getInteger("Y");
+                String key = json.getString("Name");
+                int currentIndex = json.getJSONObject("ItemCoord").getInteger("Y");
                 if ("借款人(乙方)".equals(key)) {
-                    map.put("username", json.getString("value"));
+                    map.put("username", json.getString("Value"));
                 } else if ("证件号码".equals(key) && currentIndex > borrowerStartIndex) {
                     SimpleDateFormat daySrcFormatter = new SimpleDateFormat("yyyyMMdd");
                     SimpleDateFormat dayDestFormatter = new SimpleDateFormat("yyyy/MM/dd");
-                    String idCard = json.getString("value");
-                    String birth = dayDestFormatter.format(daySrcFormatter.parse(idCard.substring(6, 8)));
-                    map.put("sex", String.valueOf(Integer.parseInt(idCard.substring(16, 1)) / 2));
+                    String idCard = json.getString("Value");
+                    String birth = dayDestFormatter.format(daySrcFormatter.parse(idCard.substring(6, 14)));
+                    map.put("sex", String.valueOf(Integer.parseInt(idCard.substring(16, 17)) / 2));
                     map.put("birth", birth);
                     map.put("idCard", idCard);
                 } else if ("住所(地址)".equals(key) && currentIndex > borrowerStartIndex) {
-                    map.put("residence", json.getString("value"));
-                } else if ("电话".equals("key") && currentIndex > borrowerStartIndex) {
-                    map.put("phone", json.getString("value"));
+                    map.put("residence", json.getString("Value"));
+                } else if ("电话".equals(key) && currentIndex > borrowerStartIndex) {
+                    map.put("phone", json.getString("Value"));
                 } else if ("本合同为甲乙双方签订的编号为".equals(key)) {
-                    map.put("contractNo", json.getString("value"));
+                    map.put("contractNo", json.getString("Value"));
                 } else if ("小写)".equals(key)) {
-                    map.put("sumMoney", json.getString("value"));
+                    map.put("sumMoney", json.getString("Value"));
                 }
             }
         } catch (Exception e) {
@@ -121,38 +122,39 @@ public class YZBankOrderOCRParserImpl implements OrderOCRParser {
         int guaranteeStartIndex = 0;
         for (Object obj : structuralItems) {
             JSONObject json = (JSONObject) obj;
-            String key = json.getString("name");
+            String key = json.getString("Name");
             if ("保证人(乙方)".equals(key)) {
-                JSONObject itemCoord = json.getJSONObject("itemCoord");
+                JSONObject itemCoord = json.getJSONObject("ItemCoord");
                 guaranteeStartIndex = itemCoord.getInteger("Y");
+                break;
             }
         }
         // 解析对应的值
         try {
             for (Object obj : structuralItems) {
                 JSONObject json = (JSONObject) obj;
-                String key = json.getString("name");
-                int currentIndex = json.getJSONObject("itemCoord").getInteger("Y");
+                String key = json.getString("Name");
+                int currentIndex = json.getJSONObject("ItemCoord").getInteger("Y");
                 if ("保证人(乙方)".equals(key)) {
-                    map.put("username", json.getString("value"));
+                    map.put("username", json.getString("Value"));
                 } else if ("证件号码".equals(key) && currentIndex > guaranteeStartIndex) {
                     SimpleDateFormat daySrcFormatter = new SimpleDateFormat("yyyyMMdd");
                     SimpleDateFormat dayDestFormatter = new SimpleDateFormat("yyyy/MM/dd");
-                    String idCard = json.getString("value");
-                    String birth = dayDestFormatter.format(daySrcFormatter.parse(idCard.substring(6, 8)));
-                    map.put("sex", String.valueOf(Integer.parseInt(idCard.substring(16, 1)) / 2));
+                    String idCard = json.getString("Value");
+                    String birth = dayDestFormatter.format(daySrcFormatter.parse(idCard.substring(6, 14)));
+                    map.put("sex", String.valueOf(Integer.parseInt(idCard.substring(16, 17)) / 2));
                     map.put("birth", birth);
                     map.put("idCard", idCard);
                 } else if ("住所(地址)".equals(key) && currentIndex > guaranteeStartIndex) {
-                    map.put("residence", json.getString("value"));
-                } else if ("电话".equals("key") && currentIndex > guaranteeStartIndex) {
-                    map.put("phone", json.getString("value"));
+                    map.put("residence", json.getString("Value"));
+                } else if ("电话".equals(key) && currentIndex > guaranteeStartIndex) {
+                    map.put("phone", json.getString("Value"));
                 } else if (key.indexOf("签订的编号为") > -1) {
-                    map.put("contractNo", json.getString("value"));
+                    map.put("contractNo", json.getString("Value").replace("_",""));
                 } else if (key.indexOf("担保债权确定的期间为") > -1) {
                     SimpleDateFormat daySrcFormatter = new SimpleDateFormat("yyyy年MM月dd日");
                     SimpleDateFormat dayDestFormatter = new SimpleDateFormat("yyyy/MM/dd");
-                    String duration[] = json.getString("value").replace("_", "").split("至");
+                    String duration[] = json.getString("Value").replace("_", "").replace("。","").split("至");
                     String startDate = dayDestFormatter.format(daySrcFormatter.parse(duration[0]));
                     String endDate = dayDestFormatter.format(daySrcFormatter.parse(duration[1]));
                     map.put("startDate", startDate);

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/user/UserDomain.java

@@ -1,4 +1,4 @@
-package me.zhengjie.modules.system.domain.user;
+package me.zhengjie.domain.user;
 
 public interface UserDomain {
     public String getUserMaxRole();

+ 2 - 2
eladmin-system/src/main/java/me/zhengjie/modules/system/domain/user/impl/UserDomainImpl.java

@@ -1,10 +1,10 @@
-package me.zhengjie.modules.system.domain.user.impl;
+package me.zhengjie.domain.user.impl;
 
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
+import me.zhengjie.domain.user.UserDomain;
 import me.zhengjie.modules.security.service.dto.JwtUserDto;
-import me.zhengjie.modules.system.domain.user.UserDomain;
 import me.zhengjie.modules.system.service.dto.RoleSmallDto;
 import me.zhengjie.utils.SecurityUtils;
 import org.springframework.stereotype.Component;

+ 28 - 36
eladmin-system/src/main/java/me/zhengjie/modules/mq/RedisReceiver.java

@@ -17,13 +17,16 @@ import me.zhengjie.modules.system.entity.NotaryOfficeEntity;
 import me.zhengjie.modules.system.entity.NotaryOrderEntity;
 import me.zhengjie.modules.system.repository.NotaryOfficeMapper;
 import me.zhengjie.modules.system.repository.NotaryOrderMapper;
-import me.zhengjie.util.TextTempletUtil;
+import me.zhengjie.dao.entity.OrderFileEntity;
+import me.zhengjie.dao.mapper.OrderFileMapper;
+import me.zhengjie.base.util.TextTempletUtil;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.connection.Message;
 import org.springframework.data.redis.connection.MessageListener;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
@@ -36,8 +39,6 @@ public class RedisReceiver implements MessageListener {
 	@Autowired
 	ApiService apiService;
 	@Autowired
-	OrderDocService orderDocService;
-	@Autowired
 	SysUserService sysUserService;
 	@Autowired
 	NotaryOfficeMapper notaryOfficeMapper;
@@ -47,18 +48,23 @@ public class RedisReceiver implements MessageListener {
 	IProvinceDao provinceDao;
 	@Autowired
 	ICityDao cityDao;
+	@Autowired
+	OrderFileMapper orderFileMapper;
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public void onMessage(Message message, byte[] pattern) {
 		String text = new String(message.getBody());
 		if (StringUtils.isNotBlank(text)) {
 			JSONObject jsonObject = JSONObject.parseObject(text);
+			String userId = jsonObject.getString("userId");
+			String businessNo = jsonObject.getString("businessNo");
 			OrderVo orderVo = new OrderVo();
-			orderVo.setBusinessNo(jsonObject.getString("businessNo"));
+			orderVo.setBusinessNo(businessNo);
 			List<OrderDto> orders = apiService.getOrderByContion(orderVo);
 			//
 			QueryWrapper<NotaryOrderEntity> orderEntityQw = new QueryWrapper<>();
-			orderEntityQw.eq("business_no", orderVo.getBusinessNo());
+			orderEntityQw.eq("business_no", businessNo);
 			NotaryOrderEntity orderEntity = notaryOrderMapper.selectOne(orderEntityQw);
 			QueryWrapper<ModelEntity> model = new QueryWrapper<ModelEntity>();
 			List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
@@ -68,41 +74,27 @@ public class RedisReceiver implements MessageListener {
 			List<ModelEntity> models = modelService.list(model);
 
 			for (OrderDto order : orders) {
-				OrderDocEntity docEntity = new OrderDocEntity();
-				docEntity.setStatus("1");
-				docEntity.setBusinessNo(order.getBusinessNo());
-				docEntity.setContractId(order.getOrderId());
+				// 在保存之前先删除数据
+				QueryWrapper<OrderFileEntity> qw = new QueryWrapper<>();
+				qw.eq("contract_id", order.getOrderId());
+				orderFileMapper.delete(qw);
 				//
 				for (ModelEntity m : models) {
+					OrderFileEntity fileEntity = new OrderFileEntity();
+					fileEntity.setBusinessNo(order.getBusinessNo());
+					fileEntity.setContractId(order.getOrderId());
+					fileEntity.setCode(m.getCode());
+					fileEntity.setSortNum(m.getSort());
 					String html = replaceFlag(m.getContent(), order, orderEntity);
-					String path = FileUploadUtil.saveHtml(html, order.getBusinessNo(),order.getOrderId());
-					JSONObject jsonObj = new JSONObject();
-					jsonObj.put("sort", m.getSort());
-					jsonObj.put("path",  path);
-					String pdfPath = FileUploadUtil.savePdf(html, order.getBusinessNo(),order.getOrderId());
-					if ("1".equals(m.getCode())) {
-						docEntity.setApply(jsonObj.toJSONString());
-						docEntity.setApplyPdf(pdfPath);
-					} else if ("2".equals(m.getCode())) {
-						docEntity.setConfirmation(jsonObj.toJSONString());
-						docEntity.setConfirmationPdf(pdfPath);
-					} else if ("3".equals(m.getCode())) {
-						docEntity.setNotice(jsonObj.toJSONString());
-						docEntity.setNoticePdf(pdfPath);
-					} else if ("4".equals(m.getCode())) {
-						docEntity.setNotification(jsonObj.toJSONString());
-						docEntity.setNotificationPdf(pdfPath);
-					} else if ("5".equals(m.getCode())) {
-						docEntity.setPromise(jsonObj.toJSONString());
-						docEntity.setPromisePdf(pdfPath);
-					}
+					String htmlPath = FileUploadUtil.saveHtml(html, order.getBusinessNo(), order.getOrderId());
+					String pdfPath = FileUploadUtil.savePdf(html, order.getBusinessNo(), order.getOrderId());
+					fileEntity.setHtmlUrl(htmlPath);
+					fileEntity.setPdfUrl(pdfPath);
+					fileEntity.setCreateTime(new Date());
+					fileEntity.setCreatorId(Long.parseLong(userId));
+					//
+					orderFileMapper.insert(fileEntity);
 				}
-				// 在保存之前先删除数据
-				OrderDocEntity delete = new OrderDocEntity();
-				delete.setBusinessNo(docEntity.getBusinessNo());
-				delete.setContractId(docEntity.getContractId());
-				orderDocService.remove(delete);
-				orderDocService.save(docEntity);
 			}
 		}
 	}

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/mq/WebSocketReceiver.java

@@ -12,7 +12,7 @@ import me.zhengjie.modules.security.service.dto.OnlineUserDto;
 import me.zhengjie.modules.system.entity.NotaryOrderEntity;
 import me.zhengjie.modules.system.service.NotaryOrderService;
 import me.zhengjie.modules.system.service.dto.RoleSmallDto;
-import me.zhengjie.util.WebSocketMap;
+import me.zhengjie.base.util.WebSocketMap;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.redis.connection.Message;
 import org.springframework.data.redis.connection.MessageListener;

+ 0 - 163
eladmin-system/src/main/java/me/zhengjie/modules/system/entity/OrderDocEntity.java

@@ -1,163 +0,0 @@
-package me.zhengjie.modules.system.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Getter;
-import lombok.Setter;
-import lombok.ToString;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author humuyu
- * @since 2022-03-30
- */
-@TableName("order_doc")
-@Getter
-@Setter
-@ToString
-public class OrderDocEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @TableId(value = "id", type = IdType.AUTO)
-    private Integer id;
-
-    /**
-     * 公证申请表
-     */
-    @TableField("apply")
-    private String apply;
-
-    /**
-     * 送达确认书
-     */
-    @TableField("confirmation")
-    private String confirmation;
-
-    /**
-     * 受理通知单
-     */
-    @TableField("notice")
-    private String notice;
-
-    /**
-     * 赋予强制执行效力债权文书公证告知书
-     */
-    @TableField("notification")
-    private String notification;
-
-    /**
-     * 公证承诺书
-     */
-    @TableField("promise")
-    private String promise;
-
- 
-
-    /**
-     * 公证申请表
-     */
-    @TableField("apply_pdf")
-    private String applyPdf;
-
-    /**
-     * 送达确认书
-     */
-    @TableField("confirmation_pdf")
-    private String confirmationPdf;
-
-    /**
-     * 受理通知单
-     */
-    @TableField("notice_pdf")
-    private String noticePdf;
-
-    /**
-     * 赋予强制执行效力债权文书公证告知书
-     */
-    @TableField("notification_pdf")
-    private String notificationPdf;
-
-    /**
-     * 公证承诺书
-     */
-    @TableField("promise_pdf")
-    private String promisePdf;
-
-    /**
-     * 对应借款人,抵押人,担保人
-     */
-    @TableField("contract_id")
-    private String contractId;
-
-    /**
-     * 对应借款人,抵押人,担保人
-     */
-    @TableField("business_no")
-    private String businessNo;
-
-    @TableField("note_pdf")
-    private String notePdf;
-
-    @TableField("contract_no")
-    private String contractNo;
-
-    @TableField("notarization_pdf")
-    private String notarizationPdf;
-
-    @TableField("notarization")
-    private String notarization;
-
-    @TableField("auth_notarization")
-    private String authNotarization;
-
-    @TableField("notarization_no")
-    private String notarizationNo;
-
-    @TableField("notarization_sign_time")
-    private Date notarizationSignTime;
-
-    @TableField("apply_contract_no")
-    private String applyContractNo;
-
-    @TableField("confirmation_contract_no")
-    private String confirmationContractNo;
-
-    @TableField("notice_contract_no")
-    private String noticeContractNo;
-
-    @TableField("notification_contract_no")
-    private String notificationContractNo;
-
-    @TableField("promise_contract_no")
-    private String promiseContractNo;
-
-    @TableField("note_contract_no")
-    private String noteContractNo;
-
-    @TableField("auth_apply")
-    private String authApply;
-
-    @TableField("auth_confirmation")
-    private String authConfirmation;
-
-    @TableField("auth_notice")
-    private String authNotice;
-
-    @TableField("auth_notification")
-    private String authNotification;
-
-    @TableField("auth_promise")
-    private String authPromise;
-
-    @TableField("auth_note")
-    private String authNote;
-}

+ 62 - 212
eladmin-system/src/main/java/me/zhengjie/modules/system/executor/jobhandler/GenerateNotarizationJob.java

@@ -4,74 +4,40 @@ import cfca.trustsign.common.vo.cs.UploadSignInfoVO;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.xxl.job.core.context.XxlJobHelper;
 import com.xxl.job.core.handler.annotation.XxlJob;
-import me.zhengjie.appapi.entity.CityEntity;
-import me.zhengjie.appapi.entity.ProvinceEntity;
+import lombok.RequiredArgsConstructor;
+import me.zhengjie.appapi.config.AppConfigInfo;
 import me.zhengjie.appapi.entity.SysUserEntity;
-import me.zhengjie.appapi.mapper.ICityDao;
-import me.zhengjie.appapi.mapper.IProvinceDao;
 import me.zhengjie.appapi.mapper.ISysUserDao;
-import me.zhengjie.appapi.service.impl.NotaryNoteServiceImpl;
-import me.zhengjie.appapi.util.DateUtils;
 import me.zhengjie.appapi.util.FileUploadUtil;
-import me.zhengjie.appapi.util.HtmlConvertPdf;
 import me.zhengjie.appapi.util.StatusEnum.StepStatusEnum;
+import me.zhengjie.base.util.CFCACertUtil;
+import me.zhengjie.dao.OrderFileRepository;
+import me.zhengjie.dao.entity.OrderFileEntity;
+import me.zhengjie.dao.mapper.OrderFileMapper;
 import me.zhengjie.modules.system.entity.*;
 import me.zhengjie.modules.system.repository.*;
-import me.zhengjie.util.CFCACertUtil;
-import me.zhengjie.util.TextTempletUtil;
 import me.zhengjie.utils.StringUtils;
-import org.apache.commons.io.IOUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
-import java.io.File;
 import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 生成公证书定时任务
  */
+@RequiredArgsConstructor
 @Component
 public class GenerateNotarizationJob {
-    @Autowired
-    private NotaryOrderMapper notaryOrderMapper;
-    @Autowired
-    private OrderDocMapper orderDocMapper;
-    @Autowired
-    private NotarizationNoMapper notarizationNoMapper;
-    @Autowired
-    private NotaryOrderMapper orderMapper;
-    @Autowired
-    private BankMapper bankMapper;
-    @Autowired
-    private BorrowerMapper borrowerMapper;
-    @Autowired
-    private MortgageMapper mortgageMapper;
-    @Autowired
-    private GuaranteeMapper guaranteeMapper;
-    @Autowired
-    private NotaryOfficeMapper notaryOfficeMapper;
-    @Autowired
-    private ModelMapper modelMapper;
-    @Autowired
-    private ISysUserDao userDao;
-    @Autowired
-    IProvinceDao provinceDao;
-    @Autowired
-    ICityDao cityDao;
-
-//    @Value("${app.upload.path}")
-//    private String uplaodPath;
-//    @Value("${app.image.url}")
-//    private String imageURL;
-    @Value("${spring.profiles.active}")
-    private String systemEnv;
+    private final NotaryOrderMapper notaryOrderMapper;
+    private final OrderFileRepository orderFileRepository;
+    private final OrderFileMapper orderFileMapper;
+    private final BorrowerMapper borrowerMapper;
+    private final MortgageMapper mortgageMapper;
+    private final GuaranteeMapper guaranteeMapper;
+    private final NotaryOfficeMapper notaryOfficeMapper;
+    private final ISysUserDao userDao;
 
     /**
      * 生成签名公证书
@@ -84,7 +50,7 @@ public class GenerateNotarizationJob {
         orderQw.eq("auto_generate", "1");
         List<NotaryOrderEntity> orderList = notaryOrderMapper.selectList(orderQw);
         if (orderList != null && orderList.size() > 0) {
-            Collection collection = new ArrayList();
+            List<Long> collection = new ArrayList();
             for (NotaryOrderEntity order : orderList) {
                 QueryWrapper<BorrowerEntity> borrowerQw = new QueryWrapper<>();
                 borrowerQw.eq("business_no", order.getBusinessNo());
@@ -110,20 +76,14 @@ public class GenerateNotarizationJob {
                     collection.add(guarantee.getId());
                 }
             }
-            QueryWrapper<OrderDocEntity> orderDocQw = new QueryWrapper<>();
-            orderDocQw.in("contract_id", collection);
-            orderDocQw.isNotNull("notarization_no");
-            List<OrderDocEntity> orderDocList = orderDocMapper.selectList(orderDocQw);
-            for (OrderDocEntity orderDoc : orderDocList) {
+            List<OrderFileEntity> orderFileList = orderFileRepository.canBeSignedNotarization(collection);
+            for (OrderFileEntity orderFile : orderFileList) {
                 try {
-                    if(StringUtils.isEmpty(orderDoc.getNotarizationPdf())) {
-                        generateUnsignedNotarization(orderDoc);
-                    }
-                    if(StringUtils.isEmpty(orderDoc.getContractNo())) {
-                        signNotarization(orderDoc);
+                    if(StringUtils.isEmpty(orderFile.getDocNo())) {
+                        signNotarization(orderFile);
                     }
-                    if(StringUtils.isEmpty(orderDoc.getAuthNotarization())) {
-                        downloadNotarization(orderDoc);
+                    if(StringUtils.isEmpty(orderFile.getSignedPdfUrl())) {
+                        downloadNotarization(orderFile);
                     }
                 }catch (Exception e){
                     e.printStackTrace();
@@ -136,20 +96,20 @@ public class GenerateNotarizationJob {
 
     /**
      * 公证书电子签名
-     * @param orderDoc
+     * @param orderFile
      */
-    private void signNotarization(OrderDocEntity orderDoc) throws Exception{
+    private void signNotarization(OrderFileEntity orderFile) throws Exception{
         SysUserEntity notaryUser;
         NotaryOfficeEntity notaryOffice;
         Integer notaryUserId;
-        if ("10".equals(orderDoc.getContractId().substring(0, 2))) {
-            BorrowerEntity borrower = borrowerMapper.selectById(orderDoc.getContractId());
+        if ("10".equals(orderFile.getContractId().substring(0, 2))) {
+            BorrowerEntity borrower = borrowerMapper.selectById(orderFile.getContractId());
             notaryUserId = borrower.getNotaryUserId();
-        } else if ("11".equals(orderDoc.getContractId().substring(0, 2))) {
-            MortgageEntity mortgage = mortgageMapper.selectById(orderDoc.getContractId());
+        } else if ("11".equals(orderFile.getContractId().substring(0, 2))) {
+            MortgageEntity mortgage = mortgageMapper.selectById(orderFile.getContractId());
             notaryUserId = mortgage.getNotaryUserId();
         } else {
-            GuaranteeEntity guarantee = guaranteeMapper.selectById(orderDoc.getContractId());
+            GuaranteeEntity guarantee = guaranteeMapper.selectById(orderFile.getContractId());
             notaryUserId = guarantee.getNotaryUserId();
         }
         notaryUser = userDao.selectById(notaryUserId);
@@ -166,166 +126,56 @@ public class GenerateNotarizationJob {
         notaryOfficeInfo.setLocation("210.74.41.1");
         notaryOfficeInfo.setAuthorizationTime("20220214171200");
 
-        CFCACertUtil.proxySwitchOn = "dev".equals(systemEnv);
-        String path = orderDoc.getNotarizationPdf();
+        CFCACertUtil.proxySwitchOn = "dev".equals(AppConfigInfo.APP_ENV_TYPE);
+        String path = orderFile.getPdfUrl();
         InputStream inputStream=  FileUploadUtil.getInputStream(path);
         String fileName=FileUploadUtil.getFileName(path);
         String contractNO = CFCACertUtil.uploadSignContract(notaryUserInfo, notaryOfficeInfo, inputStream,fileName);
-        orderDoc.setContractNo(contractNO);
+        orderFile.setAxqContractNo(contractNO);
         // 保存合同编号
-        saveNotarizationInfo(contractNO, orderDoc.getId());
+        saveNotarizationInfo(contractNO, orderFile.getId());
     }
- 
+
     /**
      * 下载公证书
-     * @param orderDoc
+     * @param orderFile
      */
-    private void downloadNotarization(OrderDocEntity orderDoc) throws Exception{
-    	String orderType = StepStatusEnum.getType(Integer.valueOf(orderDoc.getContractId()));
-        CFCACertUtil.proxySwitchOn = "dev".equals(systemEnv);
-    	String uplaodPath = orderDoc.getBusinessNo() + "/" + orderType + "/" ;
-        String path = uplaodPath + "notary-signed-" + orderDoc.getBusinessNo() + "/";
-        String filePath = CFCACertUtil.download(path, orderDoc.getContractNo());
-     
-        saveAuthNorizationUrlById(filePath, orderDoc.getId());
+    private void downloadNotarization(OrderFileEntity orderFile) throws Exception {
+        String orderType = StepStatusEnum.getType(Integer.valueOf(orderFile.getContractId()));
+        CFCACertUtil.proxySwitchOn = "dev".equals(AppConfigInfo.APP_ENV_TYPE);
+        String uplaodPath = orderFile.getBusinessNo() + "/" + orderType + "/" ;
+        String path = uplaodPath + "notary-signed-" + orderFile.getBusinessNo() + "/";
+        String filePath = CFCACertUtil.download(path, orderFile.getAxqContractNo());
+        saveAuthNorizationUrlById(filePath, orderFile.getId());
     }
 
     /**
      * 记录合同信息
+     *
      * @param id
      */
-    private void saveNotarizationInfo(String contractNo, int id){
-        OrderDocEntity saveOrderDoc = new OrderDocEntity();
-        saveOrderDoc.setId(id);
-        saveOrderDoc.setContractNo(contractNo);
-        saveOrderDoc.setNotarizationSignTime(new Date());
-        orderDocMapper.updateById(saveOrderDoc);
+    private void saveNotarizationInfo(String contractNo, int id) {
+        OrderFileEntity saveOrderFile = new OrderFileEntity();
+        saveOrderFile.setId(id);
+        saveOrderFile.setAxqContractNo(contractNo);
+        saveOrderFile.setAxqSignedTime(new Date());
+        saveOrderFile.setUpdateTime(new Date());
+        saveOrderFile.setUpdaterId(777l);
+        orderFileMapper.updateById(saveOrderFile);
     }
 
     /**
      * 保存签名文件URL
+     *
      * @param fileUrl
      * @param id
      */
-    private void saveAuthNorizationUrlById(String fileUrl, int id){
-        OrderDocEntity saveOrderDoc = new OrderDocEntity();
-        saveOrderDoc.setId(id);
-        saveOrderDoc.setAuthNotarization(fileUrl);
-        orderDocMapper.updateById(saveOrderDoc);
-    }
-
-    /**
-     * 生成未签名公证书
-     * @param orderDoc
-     */
-    private void generateUnsignedNotarization(OrderDocEntity orderDoc) throws Exception{
-        Map<String, String> map = new HashMap<String, String>();
-        map.put("$NotarialNumber$", orderDoc.getNotarizationNo());
-        String code = "";
-        if ("10".equals(orderDoc.getContractId().substring(0, 2))) {
-            code = "10";
-            map.put("$Type$", "借款合同");
-        } else if ("11".equals(orderDoc.getContractId().substring(0, 2))) {
-            code = "12";
-            map.put("$Type$", "抵押合同");
-        } else {
-            code = "11";
-            map.put("$Type$", "担保合同");
-        }
-        // 获取订单信息
-        QueryWrapper<NotaryOrderEntity> qw = new QueryWrapper<>();
-        qw.eq("business_no", orderDoc.getBusinessNo());
-        NotaryOrderEntity orderEntity = orderMapper.selectOne(qw);
-        map.put("$LoanAmount$", orderEntity.getLoanMoney());
-        // 获取公证处信息
-        NotaryOfficeEntity notaryOffice = notaryOfficeMapper.selectById(orderEntity.getNotaryOfficeId());
-        String[] areas = notaryOffice.getAreaCodesStr().split(",");
-        QueryWrapper<ProvinceEntity> provinceQW = new QueryWrapper<>();
-        provinceQW.eq("code", areas[0]);
-        ProvinceEntity provinceEntity = provinceDao.selectOne(provinceQW);
-        QueryWrapper<CityEntity> cityQW = new QueryWrapper<>();
-        cityQW.eq("code", areas[1]);
-        CityEntity cityEntity = cityDao.selectOne(cityQW);
-        String usedLocation = provinceEntity.getProvinceName().concat(cityEntity.getCityName());
-        map.put("$Site$", usedLocation);
-        map.put("$NotaryOffice$", notaryOffice.getName());
-        // 获取借款人信息
-        QueryWrapper<BorrowerEntity> borrowQw = new QueryWrapper<>();
-        borrowQw.eq("business_no", orderDoc.getBusinessNo());
-        BorrowerEntity borrowerEntity = borrowerMapper.selectOne(borrowQw);
-        SimpleDateFormat yearFormatter = new SimpleDateFormat("yyyy");
-        SimpleDateFormat monthformatter = new SimpleDateFormat("yyyy-MM");
-        Date beginDate = monthformatter.parse(borrowerEntity.getStartDate());
-        Date endDate = monthformatter.parse(borrowerEntity.getEndDate());
-        Integer months = DateUtils.getDiffNaturalMonth(endDate, beginDate);
-        map.put("$Year$", yearFormatter.format(new Date()));
-        map.put("$LoanName$", borrowerEntity.getUsername());
-        map.put("$LoanSex$", "1".equals(borrowerEntity.getSex()) ? "男" : "女");
-        map.put("$LoanBirthdday$", borrowerEntity.getBirth());
-        map.put("$LoanIDNo$", borrowerEntity.getIdCard());
-        map.put("$LoanRate$", borrowerEntity.getRate());
-        map.put("$LoanTerm$", borrowerEntity.getStartDate().concat(" - ").concat(borrowerEntity.getEndDate()));
-        map.put("$TotalMonth$", months.toString());
-        // 获取抵押人信息
-        QueryWrapper<MortgageEntity> mortgageQw = new QueryWrapper<>();
-        mortgageQw.eq("business_no", orderDoc.getBusinessNo());
-        MortgageEntity mortgageEntity = mortgageMapper.selectOne(mortgageQw);
-        map.put("$MortgageName$", mortgageEntity.getUsername());
-        map.put("$MortgageIDNo$", mortgageEntity.getIdCard());
-        map.put("$MortgageSex$", "1".equals(mortgageEntity.getSex()) ? "男" : "女");
-        map.put("$MortgageBirthdday$", mortgageEntity.getBirth());
-        map.put("$HouseAddr$", mortgageEntity.getHouseLocation());
-        // 获取担保人信息
-        QueryWrapper<GuaranteeEntity> guaranteeQw = new QueryWrapper<>();
-        guaranteeQw.eq("business_no", orderDoc.getBusinessNo());
-        GuaranteeEntity guaranteeEntity = guaranteeMapper.selectOne(guaranteeQw);
-        map.put("$GuaranteeName$", guaranteeEntity.getUsername());
-        map.put("$GuaranteeIDNo$", guaranteeEntity.getIdCard());
-        map.put("$GuaranteeSex$", "1".equals(guaranteeEntity.getSex()) ? "男" : "女");
-        map.put("$GuaranteeBirthdday$", guaranteeEntity.getBirth());
-        // 获取银行信息
-        BankEntity bankEntity = bankMapper.selectById(orderEntity.getBankId());
-        map.put("$Bank$", bankEntity.getBankName());
-        map.put("$BankAddr$", bankEntity.getAddress());
-        map.put("$BankLeader$", bankEntity.getPrincipal());
-        //
-        SimpleDateFormat dayFormatter = new SimpleDateFormat("yyyy-MM-dd");
-        map.put("$Date$", dayFormatter.format(new Date()));
-
-        QueryWrapper<ModelEntity> modelQw = new QueryWrapper<>();
-        modelQw.eq("code", code);
-        modelQw.eq("notary_office_id", orderEntity.getNotaryOfficeId());
-        modelQw.eq("status", 1);
-        ModelEntity modelEntity = modelMapper.selectOne(modelQw);
-        String result = "";
-        try {
-            InputStream inputStream = NotaryNoteServiceImpl.class.getClassLoader().getResourceAsStream("template/note/notary-model.html");
-            result = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    	String orderType = StepStatusEnum.getType(Integer.valueOf(orderDoc.getContractId()));
-    	String uplaodPath = orderDoc.getBusinessNo() + "/" + orderType + "/" ;
-        String content = result.replace("${ModelContent}", TextTempletUtil.replaceContent(modelEntity.getContent(), map));
-        String htmlFilePath = uplaodPath + "notary-html-" + orderDoc.getBusinessNo() + "/";
-        Path path = Paths.get(htmlFilePath);
-        if (!Files.exists(path)) {
-            Files.createDirectory(path);
-        }
-        String fullFilePath = htmlFilePath + orderDoc.getId() + ".html";
-       // saveHtml
-        FileUploadUtil.saveHtml(fullFilePath, content);
-//         Files.write(Paths.get(fullFilePath), content.getBytes(StandardCharsets.UTF_8));
-        String pdfFilePath = uplaodPath + "notary-pdf-" + orderDoc.getBusinessNo() + "/" + orderDoc.getId() + ".pdf";
-        FileUploadUtil.createPdf(content, pdfFilePath);
-      //  HtmlConvertPdf.createPdfFile(content, pdfFilePath);
-        // 保存HTML公证书信息
-        OrderDocEntity orderDocEntity = new OrderDocEntity();
-        orderDocEntity.setId(orderDoc.getId());
-        orderDocEntity.setNotarization(fullFilePath);
-        orderDocEntity.setNotarizationPdf(pdfFilePath);
-        orderDocMapper.updateById(orderDocEntity);
-        // 保存参数
-        orderDoc.setNotarizationPdf(orderDocEntity.getNotarizationPdf());
+    private void saveAuthNorizationUrlById(String fileUrl, int id) {
+        OrderFileEntity saveOrderFile = new OrderFileEntity();
+        saveOrderFile.setId(id);
+        saveOrderFile.setSignedPdfUrl(fileUrl);
+        saveOrderFile.setUpdaterId(777l);
+        saveOrderFile.setUpdateTime(new Date());
+        orderFileMapper.updateById(saveOrderFile);
     }
 }

+ 0 - 37
eladmin-system/src/main/java/me/zhengjie/modules/system/repository/OrderDocMapper.java

@@ -1,37 +0,0 @@
-package me.zhengjie.modules.system.repository;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import me.zhengjie.modules.system.entity.OrderDocEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * <p>
- * 公证订单 公证相关文件 接口
- * </p>
- *
- * @author <a href="https://www.fengwenyi.com?code">Erwin Feng</a>
- * @since 2022-03-28
- */
-@Mapper
-public interface OrderDocMapper extends BaseMapper<OrderDocEntity> {
-
-    /**
-     * 查找可以公证书签名的借款人
-     * @return
-     */
-    List<OrderDocEntity> selectNotarizationFileForBorrower();
-
-    /**
-     * 查找可以公证书签名的担保人
-     * @return
-     */
-    List<OrderDocEntity> selectNotarizationFileForGuarantee();
-
-    /**
-     * 查找可以公证书签名的抵押人
-     * @return
-     */
-    List<OrderDocEntity> selectNotarizationFileForMortgage();
-}

+ 0 - 11
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/NotaryOrderController.java

@@ -13,7 +13,6 @@ import me.zhengjie.appapi.service.MortgageService;
 import me.zhengjie.appapi.util.TencentUtil;
 import me.zhengjie.appapi.vo.FileVo;
 import me.zhengjie.base.ResultCode;
-import me.zhengjie.modules.system.entity.OrderDocEntity;
 import me.zhengjie.modules.system.entity.PartyEntity;
 import me.zhengjie.modules.system.entity.request.order.NotaryOrderQueryReq;
 import me.zhengjie.modules.system.entity.response.order.NotaryOrderQueryRsp;
@@ -114,16 +113,6 @@ public class NotaryOrderController {
     }
 
     /**
-     * 公证订单 查询 当事人 PDF
-     *
-     * @return
-     */
-    @RequestMapping("/pdf")
-    public BaseResponse<OrderDocEntity> pdf(@RequestBody HashMap<String,String> map) {
-        return notaryOrderService.pdf(map);
-    }
-
-    /**
      * 公证订单 退回
      *
      * @return

+ 1 - 2
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/OrderRoomIdController.java

@@ -11,7 +11,6 @@ import org.springframework.web.bind.annotation.RestController;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.google.gson.JsonObject;
 
 import lombok.extern.slf4j.Slf4j;
 import me.zhengjie.annotation.rest.AnonymousPostMapping;
@@ -20,7 +19,7 @@ import me.zhengjie.appapi.entity.response.BaseResponse;
 import me.zhengjie.appapi.service.OrderRoomIdService;
 import me.zhengjie.appapi.util.FileUploadUtil;
 import me.zhengjie.base.ResultCode;
-import me.zhengjie.util.WebSocketMap;
+import me.zhengjie.base.util.WebSocketMap;
 import me.zhengjie.utils.SecurityUtils;
 
 @RestController

+ 1 - 4
eladmin-system/src/main/java/me/zhengjie/modules/system/rest/TencentPushController.java

@@ -18,10 +18,9 @@ import me.zhengjie.annotation.rest.AnonymousPostMapping;
 import me.zhengjie.appapi.config.AppConfigInfo;
 import me.zhengjie.appapi.entity.OrderRoomIdEntity;
 import me.zhengjie.appapi.entity.PushDataEntity;
-import me.zhengjie.appapi.service.OrderDocService;
 import me.zhengjie.appapi.service.OrderRoomIdService;
 import me.zhengjie.appapi.service.TencentPushService;
-import me.zhengjie.util.DownloadUtils;
+import me.zhengjie.base.util.DownloadUtils;
 
 @Controller
 public class TencentPushController {
@@ -32,8 +31,6 @@ public class TencentPushController {
 	TencentPushService pushService;
 	@Autowired
 	OrderRoomIdService orderRoomIdService;
-	@Autowired
-	OrderDocService orderDocService;
 
 	@AnonymousPostMapping("/tencentpush")
 	@ResponseBody

+ 0 - 2
eladmin-system/src/main/java/me/zhengjie/modules/system/service/NotaryOrderService.java

@@ -33,8 +33,6 @@ public interface NotaryOrderService extends IService<NotaryOrderEntity> {
 
     BaseResponse<GuaranteeEntity> guaranteeInfo(HashMap<String, String> map);
 
-    BaseResponse<OrderDocEntity> pdf(HashMap<String, String> map);
-
     BaseResponse orderReturn(NotaryOrderQueryReq req);
 
     BaseResponse orderReject(NotaryOrderQueryReq req);

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/ModelNotarizationServiceImpl.java

@@ -11,7 +11,7 @@ import me.zhengjie.appapi.mapper.INotaryNoteDao;
 import me.zhengjie.appapi.util.BeanCopyUtils;
 import me.zhengjie.base.ResultCode;
 import me.zhengjie.modules.security.service.dto.JwtUserDto;
-import me.zhengjie.modules.system.domain.user.UserDomain;
+import me.zhengjie.domain.user.UserDomain;
 import me.zhengjie.modules.system.entity.ModelEntity;
 import me.zhengjie.modules.system.entity.NotaryOfficeEntity;
 import me.zhengjie.modules.system.entity.request.notaryoffice.ModelReq;

+ 1 - 1
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/NotaryOfficeServiceImpl.java

@@ -30,7 +30,7 @@ import me.zhengjie.modules.system.repository.BankMapper;
 import me.zhengjie.modules.system.repository.NotaryOfficeMapper;
 import me.zhengjie.modules.system.repository.OfficeXbankMapper;
 import me.zhengjie.modules.system.service.NotaryOfficeService;
-import me.zhengjie.util.CFCACertUtil;
+import me.zhengjie.base.util.CFCACertUtil;
 import me.zhengjie.utils.SecurityUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;

+ 195 - 179
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/NotaryOrderServiceImpl.java

@@ -5,37 +5,45 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import me.zhengjie.appapi.config.AppConfigInfo;
+import me.zhengjie.appapi.entity.CityEntity;
+import me.zhengjie.appapi.entity.ProvinceEntity;
 import me.zhengjie.appapi.entity.SysUserEntity;
 import me.zhengjie.appapi.entity.response.BaseResponse;
 import me.zhengjie.appapi.entity.response.ResultData;
+import me.zhengjie.appapi.mapper.ICityDao;
+import me.zhengjie.appapi.mapper.IProvinceDao;
 import me.zhengjie.appapi.mapper.ISysUserDao;
 import me.zhengjie.appapi.service.OrderService;
-import me.zhengjie.appapi.util.BeanCopyUtils;
-import me.zhengjie.appapi.util.DateUtils;
-import me.zhengjie.appapi.util.FileUploadUtil;
-import me.zhengjie.appapi.util.StatusEnum;
-import me.zhengjie.appapi.util.StatusEnum.StepStatusEnum;
+import me.zhengjie.appapi.service.impl.NotaryNoteServiceImpl;
+import me.zhengjie.appapi.util.*;
 import me.zhengjie.appapi.vo.FileVo;
 import me.zhengjie.base.ResultCode;
-import me.zhengjie.modules.security.service.dto.JwtUserDto;
+import me.zhengjie.dao.ModelRepository;
+import me.zhengjie.dao.OrderFileRepository;
+import me.zhengjie.dao.entity.OrderFileEntity;
+import me.zhengjie.dao.mapper.OrderFileMapper;
+import me.zhengjie.domain.order.OrderBizCodeMessage;
 import me.zhengjie.modules.system.domain.User;
-import me.zhengjie.modules.system.domain.user.UserDomain;
+import me.zhengjie.domain.user.UserDomain;
 import me.zhengjie.modules.system.entity.*;
 import me.zhengjie.modules.system.entity.request.order.NotaryOrderQueryReq;
 import me.zhengjie.modules.system.entity.response.order.NotaryOrderInfoQueryRsp;
 import me.zhengjie.modules.system.entity.response.order.NotaryOrderQueryRsp;
 import me.zhengjie.modules.system.repository.*;
 import me.zhengjie.modules.system.service.NotaryOrderService;
-import me.zhengjie.modules.system.service.dto.RoleSmallDto;
-import me.zhengjie.util.TextTempletUtil;
+import me.zhengjie.base.util.TextTempletUtil;
 import me.zhengjie.utils.SecurityUtils;
-import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
 
-import java.io.File;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.*;
@@ -61,8 +69,6 @@ public class NotaryOrderServiceImpl extends ServiceImpl<NotaryOrderMapper, Notar
 	@Autowired
 	private GuaranteeMapper guaranteeMapper;
 	@Autowired
-	private OrderDocMapper orderDocMapper;
-	@Autowired
 	private OrderService orderService;
 	@Autowired
 	private UserRepository userRepository;
@@ -80,6 +86,16 @@ public class NotaryOrderServiceImpl extends ServiceImpl<NotaryOrderMapper, Notar
 	ISysUserDao userDao;
 	@Autowired
 	UserDomain userDomain;
+	@Autowired
+	OrderFileMapper orderFileMapper;
+	@Autowired
+	OrderFileRepository orderFileRepository;
+	@Autowired
+	ModelRepository modelRepository;
+	@Autowired
+	IProvinceDao provinceDao;
+	@Autowired
+	ICityDao cityDao;
 
 	@Override
 	public BaseResponse<List<NotaryOrderQueryRsp>> query(NotaryOrderQueryReq req) {
@@ -100,7 +116,7 @@ public class NotaryOrderServiceImpl extends ServiceImpl<NotaryOrderMapper, Notar
 
 	/**
 	 * 获取查询条件
-	 * 
+	 *
 	 * @param req
 	 * @return
 	 */
@@ -238,15 +254,6 @@ public class NotaryOrderServiceImpl extends ServiceImpl<NotaryOrderMapper, Notar
 	}
 
 	@Override
-	public BaseResponse<OrderDocEntity> pdf(HashMap<String, String> map) {
-		BaseResponse<OrderDocEntity> response = new BaseResponse<>();
-		OrderDocEntity orderDocEntity = orderDocMapper.selectOne(
-				new QueryWrapper<OrderDocEntity>().orderByDesc("id").eq("contract_id", map.get("id")).last("limit 1"));
-		response.setData(new ResultData<OrderDocEntity>(orderDocEntity));
-		return response;
-	}
-
-	@Override
 	public BaseResponse orderReturn(NotaryOrderQueryReq req) {
 		BaseResponse response = new BaseResponse();
 		NotaryOrderEntity notaryOrderEntity = notaryOrderMapper.selectById(req.getId());
@@ -324,7 +331,30 @@ public class NotaryOrderServiceImpl extends ServiceImpl<NotaryOrderMapper, Notar
 	public BaseResponse partyPass(NotaryOrderQueryReq req) {
 		BaseResponse response = new BaseResponse();
 		NotaryOrderEntity notaryOrderEntity = notaryOrderMapper.selectById(req.getId());
-		// 获取公证书编号
+		if ("0".equals(notaryOrderEntity.getAutoGenerate())) {
+			response.fail(OrderBizCodeMessage.NOTARIZATION_GENERATE_TYPE_ERROR);
+			return response;
+		}
+		// 检查面谈笔录是否提交
+		List<OrderFileEntity> orderFileList = orderFileRepository.getOrderFileListByCodes(req.getPartyId(), "6,7,8,9".split(","));
+		if (orderFileList != null && orderFileList.size() > 0) {
+			response.fail(ResultCode.INTERVIEW_NOTE_UNSUBMIT);
+			return response;
+		}
+		// 检查公证书模板是否处于编辑状态
+		String code = "";
+		if ("10".equals(req.getPartyId().substring(0, 2))) {
+			code = "10";
+		} else if ("11".equals(req.getPartyId().substring(0, 2))) {
+			code = "12";
+		} else {
+			code = "11";
+		}
+		if (modelRepository.existModelInEditing(notaryOrderEntity.getNotaryOfficeId(), code)) {
+			response.fail(OrderBizCodeMessage.MODEL_IN_EDITING);
+			return response;
+		}
+		// 检查是否具备可用的公证书编号
 		SimpleDateFormat yearFormatter = new SimpleDateFormat("yyyy");
 		QueryWrapper<NotarizationNoEntity> notarizationNoQw = new QueryWrapper<>();
 		notarizationNoQw.eq("notary_office_id", notaryOrderEntity.getNotaryOfficeId());
@@ -337,23 +367,118 @@ public class NotaryOrderServiceImpl extends ServiceImpl<NotaryOrderMapper, Notar
 			response.fail(ResultCode.NO_NOTARIZARION_NO);
 			return response;
 		}
-		// 检查面谈笔录是否提交
-		QueryWrapper<OrderDocEntity> orderDocWrapper = new QueryWrapper<>();
-		orderDocWrapper.eq("business_no", notaryOrderEntity.getBusinessNo());
-		orderDocWrapper.eq("contract_id", req.getPartyId());
-		OrderDocEntity orderDoc = orderDocMapper.selectOne(orderDocWrapper);
-		if (StringUtils.isEmpty(orderDoc.getNotePdf())) {
-			response.fail(ResultCode.INTERVIEW_NOTE_UNSUBMIT);
-			return response;
+		// Load公证书模板需要的信息
+		// 订单相关信息
+		Map<String, String> map = new HashMap<String, String>();
+		map.put("$LoanAmount$", notaryOrderEntity.getLoanMoney());
+		if ("10".equals(req.getPartyId().substring(0, 2))) {
+			map.put("$Type$", "借款合同");
+		} else if ("11".equals(req.getPartyId().substring(0, 2))) {
+			map.put("$Type$", "抵押合同");
+		} else {
+			map.put("$Type$", "担保合同");
 		}
-		// 保存公证书编号
+		// 公证书编号
 		NotarizationNoEntity notarizationNoEntity = notarizationNoList.get(0);
 		int currentNum = notarizationNoEntity.getCurrentNum() == 0 ? notarizationNoEntity.getBeginNum()
 				: notarizationNoEntity.getCurrentNum() + 1;
-		OrderDocEntity saveOrderDoc = new OrderDocEntity();
-		saveOrderDoc.setId(orderDoc.getId());
-		saveOrderDoc.setNotarizationNo(String.valueOf(currentNum));
-		orderDocMapper.updateById(saveOrderDoc);
+		map.put("$NotarialNumber$", String.valueOf(currentNum));
+		// 公证处信息
+		NotaryOfficeEntity notaryOffice = notaryOfficeMapper.selectById(notaryOrderEntity.getNotaryOfficeId());
+		String[] areas = notaryOffice.getAreaCodesStr().split(",");
+		QueryWrapper<ProvinceEntity> provinceQW = new QueryWrapper<>();
+		provinceQW.eq("code", areas[0]);
+		ProvinceEntity provinceEntity = provinceDao.selectOne(provinceQW);
+		QueryWrapper<CityEntity> cityQW = new QueryWrapper<>();
+		cityQW.eq("code", areas[1]);
+		CityEntity cityEntity = cityDao.selectOne(cityQW);
+		String usedLocation = provinceEntity.getProvinceName().concat(cityEntity.getCityName());
+		map.put("$Site$", usedLocation);
+		map.put("$NotaryOffice$", notaryOffice.getName());
+		// 借款人信息
+		try {
+			QueryWrapper<BorrowerEntity> borrowQw = new QueryWrapper<>();
+			borrowQw.eq("business_no", notaryOrderEntity.getBusinessNo());
+			BorrowerEntity borrowerEntity = borrowerMapper.selectOne(borrowQw);
+			SimpleDateFormat monthformatter = new SimpleDateFormat("yyyy-MM");
+			Date beginDate = monthformatter.parse(borrowerEntity.getStartDate());
+			Date endDate = monthformatter.parse(borrowerEntity.getEndDate());
+			Integer months = DateUtils.getDiffNaturalMonth(endDate, beginDate);
+			map.put("$Year$", yearFormatter.format(new Date()));
+			map.put("$LoanName$", borrowerEntity.getUsername());
+			map.put("$LoanSex$", "1".equals(borrowerEntity.getSex()) ? "男" : "女");
+			map.put("$LoanBirthdday$", borrowerEntity.getBirth());
+			map.put("$LoanIDNo$", borrowerEntity.getIdCard());
+			map.put("$LoanRate$", borrowerEntity.getRate());
+			map.put("$LoanTerm$", borrowerEntity.getStartDate().concat(" - ").concat(borrowerEntity.getEndDate()));
+			map.put("$TotalMonth$", months.toString());
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		// 抵押人信息
+		QueryWrapper<MortgageEntity> mortgageQw = new QueryWrapper<>();
+		mortgageQw.eq("business_no", notaryOrderEntity.getBusinessNo());
+		MortgageEntity mortgageEntity = mortgageMapper.selectOne(mortgageQw);
+		map.put("$MortgageName$", mortgageEntity.getUsername());
+		map.put("$MortgageIDNo$", mortgageEntity.getIdCard());
+		map.put("$MortgageSex$", "1".equals(mortgageEntity.getSex()) ? "男" : "女");
+		map.put("$MortgageBirthdday$", mortgageEntity.getBirth());
+		map.put("$HouseAddr$", mortgageEntity.getHouseLocation());
+		// 担保人信息
+		QueryWrapper<GuaranteeEntity> guaranteeQw = new QueryWrapper<>();
+		guaranteeQw.eq("business_no", notaryOrderEntity.getBusinessNo());
+		GuaranteeEntity guaranteeEntity = guaranteeMapper.selectOne(guaranteeQw);
+		map.put("$GuaranteeName$", guaranteeEntity.getUsername());
+		map.put("$GuaranteeIDNo$", guaranteeEntity.getIdCard());
+		map.put("$GuaranteeSex$", "1".equals(guaranteeEntity.getSex()) ? "男" : "女");
+		map.put("$GuaranteeBirthdday$", guaranteeEntity.getBirth());
+		// 银行信息
+		BankEntity bankEntity = bankMapper.selectById(notaryOrderEntity.getBankId());
+		map.put("$Bank$", bankEntity.getBankName());
+		map.put("$BankAddr$", bankEntity.getAddress());
+		map.put("$BankLeader$", bankEntity.getPrincipal());
+		// 其他信息
+		SimpleDateFormat dayFormatter = new SimpleDateFormat("yyyy-MM-dd");
+		map.put("$Date$", dayFormatter.format(new Date()));
+		// 生成并保存未签名公证书
+		ModelEntity modelEntity = modelRepository.getModelEntity(notaryOrderEntity.getNotaryOfficeId(), code, "1");
+		String result = "";
+		String htmlFilePath = "";
+		String pdfFilePath = "";
+		try {
+			InputStream inputStream = NotaryNoteServiceImpl.class.getClassLoader().getResourceAsStream("template/note/notary-model.html");
+			result = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
+			String content = result.replace("${ModelContent}", TextTempletUtil.replaceContent(modelEntity.getContent(), map));
+			String htmlFileDir = AppConfigInfo.APP_UPLOAD_PATH + "notary-html-" + notaryOrderEntity.getBusinessNo() + "/";
+			Path path = Paths.get(htmlFileDir);
+			if (!Files.exists(path)) {
+				Files.createDirectory(path);
+			}
+			htmlFilePath = htmlFileDir + req.getPartyId() + ".html";
+			Files.write(Paths.get(htmlFilePath), content.getBytes(StandardCharsets.UTF_8));
+			//
+			String pdfFileDir = AppConfigInfo.APP_UPLOAD_PATH + "notary-pdf-" + notaryOrderEntity.getBusinessNo() + "/";
+			path = Paths.get(pdfFileDir);
+			if (!Files.exists(path)) {
+				Files.createDirectory(path);
+			}
+			pdfFilePath = pdfFileDir + req.getPartyId() + ".pdf";
+			HtmlConvertPdf.createPdfFile(content, pdfFilePath);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+		//
+		OrderFileEntity notaryOrderFile = new OrderFileEntity();
+		notaryOrderFile.setBusinessNo(notaryOrderEntity.getBusinessNo());
+		notaryOrderFile.setContractId(req.getPartyId());
+		notaryOrderFile.setCode(code);
+		notaryOrderFile.setDocNo(String.valueOf(currentNum));
+		notaryOrderFile.setHtmlUrl(htmlFilePath);
+		notaryOrderFile.setPdfUrl(pdfFilePath);
+		notaryOrderFile.setSortNum(modelEntity.getSort());
+		notaryOrderFile.setCreateTime(new Date());
+		notaryOrderFile.setCreatorId(SecurityUtils.getCurrentUserId());
+		orderFileMapper.insert(notaryOrderFile);
 		// 更新当前公证书编号
 		NotarizationNoEntity notarizationNo = new NotarizationNoEntity();
 		notarizationNo.setId(notarizationNoEntity.getId());
@@ -368,7 +493,7 @@ public class NotaryOrderServiceImpl extends ServiceImpl<NotaryOrderMapper, Notar
 
 	/**
 	 * 订单状态更新为通过公证
-	 * 
+	 *
 	 * @param orderId
 	 * @param businessNo
 	 */
@@ -554,165 +679,56 @@ public class NotaryOrderServiceImpl extends ServiceImpl<NotaryOrderMapper, Notar
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	public BaseResponse uploadNotarization(FileVo file) {
-
 		BaseResponse response = new BaseResponse<>();
-//		String uploadFileName = file.getFile().getOriginalFilename();
-//		int index = uploadFileName.lastIndexOf(".");
-//		String suffix = uploadFileName.substring(index);
-//		String fileName = file.getFileName() + suffix;
-//		String filePath = AppConfigInfo.APP_UPLOAD_PATH + "notarization/" + fileName;
-//		String fileUrl =  "notarization/" + fileName;
-//		File fullPath = new File(filePath);
-//		if (fullPath.exists()) {
-//			response.fail(ResultCode.FILE_EXISTING);
-//		}
-//		try {
-//			FileUtils.copyInputStreamToFile(file.getFile().getInputStream(), fullPath);
-//		} catch (Exception e) {
-//			e.printStackTrace();
-//			response.fail(ResultCode.INTERFACE_INNER_INVOKE_ERROR);
-//		}
-
-		QueryWrapper<OrderDocEntity> orderDocQw = new QueryWrapper<>();
-		orderDocQw.eq("contract_id", file.getContractId());
-		OrderDocEntity orderDoc = orderDocMapper.selectOne(orderDocQw);
-		String path = orderDoc.getBusinessNo()+ "/" + StepStatusEnum.getType(orderDoc.getContractId()) + "/" ;
+		String path = file.getBusinessNo()+ "/" + StatusEnum.StepStatusEnum.getType(file.getContractId()) + "/" ;
 		file.setFilePath(path);
 		String filePath = FileUploadUtil.upload(file);
-		
-		OrderDocEntity saveOrderDoc = new OrderDocEntity();
-		saveOrderDoc.setId(orderDoc.getId());
-		saveOrderDoc.setAuthNotarization(filePath);
-		orderDocMapper.updateById(saveOrderDoc);
-		updateStatusPass(file.getContractId(), orderDoc.getBusinessNo());
+		OrderFileEntity notaryOrderFile = new OrderFileEntity();
+		notaryOrderFile.setBusinessNo(file.getBusinessNo());
+		notaryOrderFile.setContractId(file.getContractId());
+		notaryOrderFile.setSignedPdfUrl(filePath);
+		notaryOrderFile.setCreateTime(new Date());
+		notaryOrderFile.setCreatorId(SecurityUtils.getCurrentUserId());
+		orderFileMapper.insert(notaryOrderFile);
+
+		updateStatusPass(file.getContractId(), file.getBusinessNo());
 		return response;
 	}
 
 	/**
 	 * 获取文件列表
-	 * 
+	 *
 	 * @param req
 	 * @return
 	 */
 	public BaseResponse getDocList(NotaryOrderQueryReq req) {
 		BaseResponse response = new BaseResponse();
-		QueryWrapper<OrderDocEntity> orderDocQw = new QueryWrapper<>();
-		orderDocQw.eq("contract_id", req.getPartyId());
-		OrderDocEntity orderDoc = orderDocMapper.selectOne(orderDocQw);
-		response.setData(new ResultData(getDocList(orderDoc)));
-		return response;
-	}
-
-	/**
-	 * 获取文件列表
-	 * 
-	 * @param orderDoc
-	 * @return
-	 */
-	private List<Map<String, String>> getDocList(OrderDocEntity orderDoc) {
-		QueryWrapper<NotaryOrderEntity> orderQw = new QueryWrapper<>();
-		orderQw.eq("business_no", orderDoc.getBusinessNo());
-		NotaryOrderEntity orderEntity = notaryOrderMapper.selectOne(orderQw);
-		QueryWrapper<ModelEntity> modelQw = new QueryWrapper<>();
-		modelQw.eq("notary_office_id", orderEntity.getNotaryOfficeId());
-		modelQw.eq("status", 1);
-		modelQw.in("code", "1,2,3,4,5,6,7,8,9".split(","));
-		modelQw.orderByAsc("sort");
-		List<ModelEntity> modelEntityList = modelMapper.selectList(modelQw);
-		List<Map<String, String>> fileList = new ArrayList<>();
-		boolean isAlreadyDeal = false;
-		for (ModelEntity modelEntity : modelEntityList) {
-			if ("6,7,8,9".indexOf(modelEntity.getCode()) > -1) {
-				if (isAlreadyDeal) {
-					continue;
-				} else {
-					isAlreadyDeal = true;
-				}
-			}
-			Map<String, String> map = getDocMap(modelEntity.getCode(), orderDoc);
-			if (map != null) {
-				fileList.add(map);
-			}
-		}
-		return fileList;
-	}
-
-	/**
-	 * 获取文件Map
-	 * 
-	 * @param code
-	 * @param orderDoc
-	 * @return
-	 */
-	private Map<String, String> getDocMap(String code, OrderDocEntity orderDoc) {
-		Map<String, String> fileMap = null;
-		if ("1".equals(code)) {
-			if (!StringUtils.isEmpty(orderDoc.getAuthApply())) {
-				fileMap = new HashMap<>();
-				fileMap.put("name", "申请表");
-				fileMap.put("value", getPreviewUrl(orderDoc.getAuthApply()));
-			} else if (!StringUtils.isEmpty(orderDoc.getApplyPdf())) {
-				fileMap = new HashMap<>();
-				fileMap.put("name", "申请表");
-				fileMap.put("value", getPreviewUrl(orderDoc.getApplyPdf()));
-			}
-		} else if ("2".equals(code)) {
-			if (!StringUtils.isEmpty(orderDoc.getAuthConfirmation())) {
-				fileMap = new HashMap<>();
-				fileMap.put("name", "送达确认书");
-				fileMap.put("value", getPreviewUrl(orderDoc.getAuthConfirmation()));
-			} else if (!StringUtils.isEmpty(orderDoc.getConfirmationPdf())) {
-				fileMap = new HashMap<>();
-				fileMap.put("name", "送达确认书");
-				fileMap.put("value", getPreviewUrl(orderDoc.getConfirmationPdf()));
-			}
-		} else if ("3".equals(code)) {
-			if (!StringUtils.isEmpty(orderDoc.getAuthNotice())) {
-				fileMap = new HashMap<>();
-				fileMap.put("name", "受理回执");
-				fileMap.put("value", getPreviewUrl(orderDoc.getAuthNotice()));
-			} else if (!StringUtils.isEmpty(orderDoc.getNoticePdf())) {
-				fileMap = new HashMap<>();
-				fileMap.put("name", "受理回执");
-				fileMap.put("value", getPreviewUrl(orderDoc.getNoticePdf()));
-			}
-		} else if ("4".equals(code)) {
-			if (!StringUtils.isEmpty(orderDoc.getAuthNotification())) {
-				fileMap = new HashMap<>();
-				fileMap.put("name", "债权书");
-				fileMap.put("value", getPreviewUrl(orderDoc.getAuthNotification()));
-			} else if (!StringUtils.isEmpty(orderDoc.getNotificationPdf())) {
-				fileMap = new HashMap<>();
-				fileMap.put("name", "债权书");
-				fileMap.put("value", getPreviewUrl(orderDoc.getNotificationPdf()));
-			}
-		} else if ("5".equals(code)) {
-			if (!StringUtils.isEmpty(orderDoc.getAuthPromise())) {
-				fileMap = new HashMap<>();
-				fileMap.put("name", "承诺书");
-				fileMap.put("value", getPreviewUrl(orderDoc.getAuthPromise()));
-			} else if (!StringUtils.isEmpty(orderDoc.getPromisePdf())) {
-				fileMap = new HashMap<>();
-				fileMap.put("name", "承诺书");
-				fileMap.put("value", getPreviewUrl(orderDoc.getPromisePdf()));
-			}
-		} else if ("6,7,8,9".indexOf(code) > -1) {
-			if (!StringUtils.isEmpty(orderDoc.getAuthNote())) {
-				fileMap = new HashMap<>();
-				fileMap.put("name", "面谈笔录");
-				fileMap.put("value", getPreviewUrl(orderDoc.getAuthNote()));
-			} else if (!StringUtils.isEmpty(orderDoc.getNotePdf())) {
-				fileMap = new HashMap<>();
-				fileMap.put("name", "面谈笔录");
-				fileMap.put("value", getPreviewUrl(orderDoc.getNotePdf()));
+		Map<String, String> map = new HashMap<String, String>() {
+			{
+				put("1", "申请表");
+				put("2", "送达确认书");
+				put("3", "受理回执");
+				put("4", "债权书");
+				put("5", "承诺书");
+				put("6", "面谈笔录");
+				put("7", "面谈笔录");
+				put("8", "面谈笔录");
+				put("9", "面谈笔录");
 			}
+		};
+		List<OrderFileEntity> orderFileList = orderFileRepository.getOrderFileListByCodes(req.getPartyId(), "1,2,3,4,5,6,7,8,9".split(","));
+		List<Map<String, String>> fileList = new ArrayList<>();
+		for (OrderFileEntity orderFile : orderFileList) {
+			Map<String, String> content = new HashMap<>();
+			String fileUrl = StringUtils.isEmpty(orderFile.getSignedPdfUrl()) ? orderFile.getPdfUrl() : orderFile.getSignedPdfUrl();
+			map.put("name", map.get(orderFile.getCode()));
+			map.put("value", getPreviewUrl(fileUrl));
 		}
-		return fileMap;
+		response.setData(new ResultData(fileList));
+		return response;
 	}
 
 	public String getPreviewUrl(String path) {
-
 		return FileUploadUtil.getPreviewUrl(path);
 	}
-
 }

+ 3 - 10
eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java

@@ -19,13 +19,11 @@ import cfca.trustsign.common.vo.cs.PersonVO;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.sun.javafx.scene.SceneUtils;
 import lombok.RequiredArgsConstructor;
 import me.zhengjie.appapi.entity.*;
 import me.zhengjie.appapi.entity.response.BaseResponse;
 import me.zhengjie.appapi.entity.response.ResultData;
 import me.zhengjie.appapi.mapper.*;
-import me.zhengjie.appapi.service.SysRoleService;
 import me.zhengjie.appapi.util.BeanCopyUtils;
 import me.zhengjie.appapi.util.FileUploadUtil;
 import me.zhengjie.base.ResultCode;
@@ -39,28 +37,23 @@ import me.zhengjie.modules.security.service.dto.JwtUserDto;
 import me.zhengjie.modules.system.constants.NotaryOfficeConstant;
 import me.zhengjie.modules.system.constants.UserConstant;
 import me.zhengjie.modules.system.domain.User;
-import me.zhengjie.modules.system.domain.user.UserDomain;
+import me.zhengjie.domain.user.UserDomain;
 import me.zhengjie.modules.system.entity.BankEntity;
 import me.zhengjie.modules.system.entity.NotaryOfficeEntity;
-import me.zhengjie.modules.system.entity.NotaryOrderEntity;
-import me.zhengjie.modules.system.entity.request.notaryoffice.NotaryOfficeCreateReq;
-import me.zhengjie.modules.system.entity.request.order.NotaryOrderQueryReq;
 import me.zhengjie.modules.system.entity.request.user.UserReq;
-import me.zhengjie.modules.system.entity.response.order.NotaryOrderQueryRsp;
 import me.zhengjie.modules.system.repository.BankMapper;
 import me.zhengjie.modules.system.repository.NotaryOfficeMapper;
 import me.zhengjie.modules.system.repository.UserRepository;
 import me.zhengjie.modules.system.service.UserService;
 import me.zhengjie.modules.system.service.dto.*;
 import me.zhengjie.modules.system.service.mapstruct.UserMapper;
-import me.zhengjie.util.CFCACertUtil;
-import me.zhengjie.util.TencentServiceUtil;
+import me.zhengjie.base.util.CFCACertUtil;
+import me.zhengjie.base.util.TencentServiceUtil;
 import me.zhengjie.utils.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.annotation.CacheConfig;
 import org.springframework.cache.annotation.Cacheable;
-import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;

+ 0 - 33
eladmin-system/src/main/resources/mapper/OrderDocMapper.xml

@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="me.zhengjie.modules.system.repository.OrderDocMapper">
-    <resultMap id="NotarizationReq" type="me.zhengjie.modules.system.entity.OrderDocEntity">
-        <result column="id" property="id"/>
-        <result column="apply" property="apply"/>
-        <result column="confirmation" property="confirmation"/>
-        <result column="notice" property="notice"/>
-        <result column="notification" property="notification"/>
-        <result column="promise" property="promise"/>
-        <result column="apply_pdf" property="applyPdf"/>
-        <result column="confirmation_pdf" property="confirmationPdf"/>
-        <result column="notice_pdf" property="noticePdf"/>
-        <result column="notification_pdf" property="notificationPdf"/>
-        <result column="promise_pdf" property="promisePdf"/>
-        <result column="contract_id" property="contractId"/>
-        <result column="business_no" property="businessNo"/>
-        <result column="note_pdf" property="notePdf"/>
-        <result column="contract_no" property="contractNo"/>
-        <result column="notarization_pdf" property="notarizationPdf"/>
-        <result column="notarization" property="notarization"/>
-        <result column="auth_notarization" property="authNotarization"/>
-    </resultMap>
-    <select id="selectNotarizationFileForBorrower" resultMap="NotarizationReq">
-        SELECT a.* FROM order_doc a, borrower b WHERE a.contract_id = b.id and b.`status` = 3 and a.contract_no is NULL
-    </select>
-    <select id="selectNotarizationFileForGuarantee" resultMap="NotarizationReq">
-        SELECT a.* FROM order_doc a, guarantee b WHERE a.contract_id = b.id and b.`status` = 3 and a.contract_no is NULL
-    </select>
-    <select id="selectNotarizationFileForMortgage" resultMap="NotarizationReq">
-        SELECT a.* FROM order_doc a, mortgage b WHERE a.contract_id = b.id and b.`status` = 3 and a.contract_no is NULL
-    </select>
-</mapper>