From 249330f6bb00e7eba37faaa02e8c7566606e281e Mon Sep 17 00:00:00 2001
From: hayu <1604366271@qq.com>
Date: Thu, 26 Jun 2025 13:06:20 +0800
Subject: [PATCH] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E9=83=A8=E6=8E=88=E6=9D=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../biz/domain/lease/LeasePublishInfo.java | 6 +
bonus-modules/bonus-material/pom.xml | 8 +-
.../common/controller/SelectController.java | 7 +
.../material/common/mapper/SelectMapper.java | 8 +
.../common/service/SelectService.java | 8 +
.../service/impl/SelectServiceImpl.java | 11 +
.../controller/ProAuthorizeController.java | 102 ++++++
.../domain/ProAuthorizeDetails.java | 63 ++++
.../domain/ProAuthorizeInfo.java | 73 ++++
.../mapper/ProAuthorizeMapper.java | 59 ++++
.../service/ProAuthorizeService.java | 49 +++
.../service/impl/ProAuthorizeServiceImpl.java | 328 ++++++++++++++++++
.../mapper/material/common/SelectMapper.xml | 34 +-
.../materialStation/ProAuthorizeMapper.xml | 131 +++++++
14 files changed, 885 insertions(+), 2 deletions(-)
create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/controller/ProAuthorizeController.java
create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/domain/ProAuthorizeDetails.java
create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/domain/ProAuthorizeInfo.java
create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/mapper/ProAuthorizeMapper.java
create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/service/ProAuthorizeService.java
create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/service/impl/ProAuthorizeServiceImpl.java
create mode 100644 bonus-modules/bonus-material/src/main/resources/mapper/material/materialStation/ProAuthorizeMapper.xml
diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/lease/LeasePublishInfo.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/lease/LeasePublishInfo.java
index ff49300d..8cdfeacb 100644
--- a/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/lease/LeasePublishInfo.java
+++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/domain/lease/LeasePublishInfo.java
@@ -265,4 +265,10 @@ public class LeasePublishInfo extends BaseEntity{
@ApiModelProperty(value = "公司名称")
private String companyName;
+
+ @ApiModelProperty(value = "授权id")
+ private Long authId;
+
+ @ApiModelProperty(value = "关联外部(第三方)的工程ID")
+ private String externalId;
}
diff --git a/bonus-modules/bonus-material/pom.xml b/bonus-modules/bonus-material/pom.xml
index ef143879..bd1389b7 100644
--- a/bonus-modules/bonus-material/pom.xml
+++ b/bonus-modules/bonus-material/pom.xml
@@ -112,6 +112,12 @@
5.5.7
+
+ com.squareup.okhttp3
+ okhttp
+ 4.12.0
+
+
@@ -127,7 +133,7 @@
-
+ org.apache.maven.pluginsmaven-compiler-plugin88
diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/controller/SelectController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/controller/SelectController.java
index 2e6ef5f5..71e1ca0a 100644
--- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/controller/SelectController.java
+++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/controller/SelectController.java
@@ -6,6 +6,7 @@ import com.bonus.material.basic.domain.BmProject;
import com.bonus.material.basic.domain.BmUnit;
import com.bonus.material.common.domain.dto.SelectDto;
import com.bonus.material.common.service.SelectService;
+import com.bonus.material.materialStation.domain.ProAuthorizeInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
@@ -160,4 +161,10 @@ public class SelectController {
public AjaxResult getUseType(@RequestBody BackApplyInfo bean) {
return service.getUseType(bean);
}
+
+ @ApiOperation(value = "班组下拉选")
+ @PostMapping("getTeamList")
+ public AjaxResult getTeamList(@RequestBody ProAuthorizeInfo bean) {
+ return service.getTeamList(bean);
+ }
}
diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/mapper/SelectMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/mapper/SelectMapper.java
index 0ffe9da5..78113766 100644
--- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/mapper/SelectMapper.java
+++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/mapper/SelectMapper.java
@@ -9,6 +9,7 @@ import com.bonus.material.basic.domain.BmUnit;
import com.bonus.material.common.domain.dto.SelectDto;
import com.bonus.material.common.domain.vo.AgreementVo;
import com.bonus.material.common.domain.vo.SelectVo;
+import com.bonus.material.materialStation.domain.ProAuthorizeInfo;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -178,4 +179,11 @@ public interface SelectMapper {
* @return
*/
List getBranchProject();
+
+ /**
+ * 获取班组下拉选
+ * @param bean
+ * @return
+ */
+ List getTeamList(ProAuthorizeInfo bean);
}
diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/SelectService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/SelectService.java
index 6c903114..3ee9f27e 100644
--- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/SelectService.java
+++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/SelectService.java
@@ -5,6 +5,7 @@ import com.bonus.material.back.domain.BackApplyInfo;
import com.bonus.material.basic.domain.BmProject;
import com.bonus.material.basic.domain.BmUnit;
import com.bonus.material.common.domain.dto.SelectDto;
+import com.bonus.material.materialStation.domain.ProAuthorizeInfo;
/**
* @author 10488
@@ -212,4 +213,11 @@ public interface SelectService {
* @return
*/
AjaxResult getBranchProject();
+
+ /**
+ * 班组下拉选
+ * @param bean
+ * @return
+ */
+ AjaxResult getTeamList(ProAuthorizeInfo bean);
}
diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java
index 4b5697f3..16f088e8 100644
--- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java
+++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/common/service/impl/SelectServiceImpl.java
@@ -11,6 +11,7 @@ import com.bonus.material.common.domain.vo.AgreementVo;
import com.bonus.material.common.domain.vo.SelectVo;
import com.bonus.material.common.mapper.SelectMapper;
import com.bonus.material.common.service.SelectService;
+import com.bonus.material.materialStation.domain.ProAuthorizeInfo;
import com.bonus.system.api.model.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@@ -147,6 +148,16 @@ public class SelectServiceImpl implements SelectService {
}
}
+ @Override
+ public AjaxResult getTeamList(ProAuthorizeInfo bean) {
+ try {
+ return AjaxResult.success(mapper.getTeamList(bean));
+ } catch (Exception e) {
+ log.error("班组-查询失败", e);
+ return AjaxResult.success(new ArrayList<>());
+ }
+ }
+
// @Override
// public AjaxResult getDictByPidCbx(SelectDto dto) {
// List list = new ArrayList<>();
diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/controller/ProAuthorizeController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/controller/ProAuthorizeController.java
new file mode 100644
index 00000000..04b38482
--- /dev/null
+++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/controller/ProAuthorizeController.java
@@ -0,0 +1,102 @@
+package com.bonus.material.materialStation.controller;
+
+import cn.hutool.core.convert.Convert;
+import com.bonus.common.biz.config.ListPagingUtil;
+import com.bonus.common.biz.domain.lease.LeaseApplyInfo;
+import com.bonus.common.biz.domain.lease.LeasePublishInfo;
+import com.bonus.common.core.utils.ServletUtils;
+import com.bonus.common.core.web.controller.BaseController;
+import com.bonus.common.core.web.domain.AjaxResult;
+import com.bonus.common.core.web.page.TableDataInfo;
+import com.bonus.common.log.annotation.SysLog;
+import com.bonus.common.log.enums.OperaType;
+import com.bonus.material.materialStation.domain.ProAuthorizeInfo;
+import com.bonus.material.materialStation.service.ProAuthorizeService;
+import com.bonus.material.repair.domain.vo.RepairDeviceVO;
+import com.bonus.system.api.RemoteFileService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @author hay
+ * @description 项目部授权
+ * @date 2025/6/18 21:54
+ */
+@Api(tags = " 项目部授权")
+@RestController
+@RequestMapping("/authorize")
+public class ProAuthorizeController extends BaseController {
+
+ @Resource(name = "proAuthorizeService")
+ private ProAuthorizeService service;
+
+ @Resource
+ private RemoteFileService sysFileService;
+
+ /**
+ * 列表展示
+ */
+ @ApiOperation(value = "列表展示")
+ @GetMapping("/list")
+ public AjaxResult getPublishList(LeaseApplyInfo leaseApplyInfo) {
+ Integer pageIndex = Convert.toInt(ServletUtils.getParameter("pageNum"), 1);
+ Integer pageSize = Convert.toInt(ServletUtils.getParameter("pageSize"), 10);
+ try {
+ List list = service.getPublishList(leaseApplyInfo);
+ return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, list));
+ } catch (Exception e) {
+ return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, new ArrayList<>()));
+ }
+ }
+
+ /**
+ * 上传与识别身份证文件
+ */
+ @ApiOperation(value = "上传与识别身份证文件")
+ @PostMapping("/uploadPhoto")
+ public AjaxResult uploadPhoto(MultipartFile file,Long type) {
+ try {
+ AjaxResult result = sysFileService.upload(file);
+ if (!result.isSuccess()){
+ return AjaxResult.error("文件上传失败");
+ }
+ Map jsonObject = (Map) result.get("data");
+ String fileName = file.getOriginalFilename();
+ String filePath = jsonObject.get("url").toString();
+ return service.uploadPhoto(filePath,type);
+ } catch (Exception e) {
+ logger.error("上传退料单PDF文件失败", e);
+ return AjaxResult.error("领料单档案保存失败:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 授权提交
+ */
+ @ApiOperation(value = "授权提交")
+ @PostMapping("/authorizeSubmit")
+ public AjaxResult authorizeSubmit(@RequestBody ProAuthorizeInfo bean) {
+ return service.authorizeSubmit(bean);
+ }
+
+ /**
+ * 授权信息查看
+ */
+ @ApiOperation(value = "授权信息查看")
+ @PostMapping("/authorizeView")
+ public AjaxResult authorizeView(@RequestBody ProAuthorizeInfo bean) {
+ return service.authorizeView(bean);
+ }
+
+
+}
+
diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/domain/ProAuthorizeDetails.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/domain/ProAuthorizeDetails.java
new file mode 100644
index 00000000..5b6495a7
--- /dev/null
+++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/domain/ProAuthorizeDetails.java
@@ -0,0 +1,63 @@
+package com.bonus.material.materialStation.domain;
+
+import lombok.Data;
+
+/**
+ * 项目部授权信息
+ *
+ * @author hay
+ */
+@Data
+public class ProAuthorizeDetails {
+ private Long id;
+
+ /**
+ * 父id
+ */
+ private Long parentId;
+
+ /**
+ * 姓名
+ */
+ private String name;
+
+ /**
+ * 身份证号码
+ */
+ private String idNumber;
+
+ /**
+ * 正面照片
+ */
+ private String frontUrl;
+
+ /**
+ * 身份证反面照片
+ */
+ private String backUrl;
+
+ /**
+ * 状态
+ */
+ private String status;
+
+ /**
+ * 创建人
+ */
+ private String createBy;
+
+ /**
+ * 修改人
+ */
+ private String updateBy;
+
+ /**
+ * 创建时间
+ */
+ private String createTime;
+
+ /**
+ * 修改时间
+ */
+ private String updateTime;
+}
diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/domain/ProAuthorizeInfo.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/domain/ProAuthorizeInfo.java
new file mode 100644
index 00000000..5b2c35eb
--- /dev/null
+++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/domain/ProAuthorizeInfo.java
@@ -0,0 +1,73 @@
+package com.bonus.material.materialStation.domain;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 项目部授权信息
+ *
+ * @author hay
+ */
+@Data
+public class ProAuthorizeInfo {
+ private Long id;
+
+ private Long authId;
+
+ /**
+ * 领料id
+ */
+ private Long leaseId;
+
+ private Long[] leaseIds;
+
+ /**
+ * 班组id
+ */
+ private Long teamId;
+
+ /**
+ * 班组名称
+ */
+ private String teamName;
+
+ /**
+ * 委托书路径
+ */
+ private String url;
+
+ private String fileName;
+
+ /**
+ * 状态
+ */
+ private String status;
+
+ /**
+ * 创建人
+ */
+ private String createBy;
+
+ /**
+ * 修改人
+ */
+ private String updateBy;
+
+ /**
+ * 创建时间
+ */
+ private String createTime;
+
+ /**
+ * 修改时间
+ */
+ private String updateTime;
+
+ private List detailsList;
+
+ /**
+ * 关联外部(第三方)的工程ID
+ */
+ private String externalId;
+}
diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/mapper/ProAuthorizeMapper.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/mapper/ProAuthorizeMapper.java
new file mode 100644
index 00000000..8b9d16c8
--- /dev/null
+++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/mapper/ProAuthorizeMapper.java
@@ -0,0 +1,59 @@
+package com.bonus.material.materialStation.mapper;
+
+import com.bonus.common.biz.domain.lease.LeaseApplyInfo;
+import com.bonus.common.biz.domain.lease.LeasePublishInfo;
+import com.bonus.material.materialStation.domain.ProAuthorizeDetails;
+import com.bonus.material.materialStation.domain.ProAuthorizeInfo;
+import org.apache.ibatis.annotations.Mapper;
+import java.util.List;
+
+/**
+ * @author hay
+ * @description 项目部授权
+ * @date 2025/6/18 21:54
+ */
+@Mapper
+public interface ProAuthorizeMapper {
+
+ /**
+ * 获取项目部授权列表
+ * @param leaseApplyInfo
+ * @return
+ */
+ List getPublishList(LeaseApplyInfo leaseApplyInfo);
+
+ /**
+ * 添加项目部授权信息
+ * @param bean
+ * @return
+ */
+ int insertProAuthorizeInfo(ProAuthorizeInfo bean);
+
+ /**
+ * 添加项目部授权详情信息
+ * @param details
+ * @return
+ */
+ int insertProAuthorizeDetails(ProAuthorizeDetails details);
+
+ /**
+ * 获取项目部授权信息
+ * @param bean
+ * @return
+ */
+ ProAuthorizeInfo selectProAuthorizeInfo(ProAuthorizeInfo bean);
+
+ /**
+ * 获取项目部授权详情信息
+ * @param id
+ * @return
+ */
+ List getDetailsList(Long id);
+
+ /**
+ * 删除项目部授权详情信息
+ * @param authId
+ * @return
+ */
+ int deleteProAuthorizeDetails(Long authId);
+}
diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/service/ProAuthorizeService.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/service/ProAuthorizeService.java
new file mode 100644
index 00000000..14264556
--- /dev/null
+++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/service/ProAuthorizeService.java
@@ -0,0 +1,49 @@
+package com.bonus.material.materialStation.service;
+
+
+import com.bonus.common.biz.domain.lease.LeaseApplyInfo;
+import com.bonus.common.biz.domain.lease.LeasePublishInfo;
+import com.bonus.common.core.web.domain.AjaxResult;
+import com.bonus.material.materialStation.domain.ProAuthorizeInfo;
+import org.springframework.web.bind.annotation.RequestPart;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+/**
+ * @author hay
+ * @description 项目部授权
+ * @date 2025/6/18 21:54
+ */
+public interface ProAuthorizeService {
+
+
+ /**
+ * 查询列表
+ * @param leaseApplyInfo
+ * @return
+ */
+ List getPublishList(LeaseApplyInfo leaseApplyInfo);
+
+ /**
+ * 上传与识别图片
+ * @param filePath
+ * @param type
+ * @return
+ */
+ AjaxResult uploadPhoto(String filePath, Long type);
+
+ /**
+ * 授权提交
+ * @param bean
+ * @return
+ */
+ AjaxResult authorizeSubmit(ProAuthorizeInfo bean);
+
+ /**
+ * 授权信息查看
+ * @param bean
+ * @return
+ */
+ AjaxResult authorizeView(ProAuthorizeInfo bean);
+}
diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/service/impl/ProAuthorizeServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/service/impl/ProAuthorizeServiceImpl.java
new file mode 100644
index 00000000..f04af5ab
--- /dev/null
+++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/materialStation/service/impl/ProAuthorizeServiceImpl.java
@@ -0,0 +1,328 @@
+package com.bonus.material.materialStation.service.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.bonus.common.biz.domain.lease.LeaseApplyInfo;
+import com.bonus.common.biz.domain.lease.LeasePublishInfo;
+import com.bonus.common.core.domain.R;
+import com.bonus.common.core.utils.StringUtils;
+import com.bonus.common.core.web.domain.AjaxResult;
+import com.bonus.common.security.utils.SecurityUtils;
+import com.bonus.material.materialStation.domain.ProAuthorizeDetails;
+import com.bonus.material.materialStation.domain.ProAuthorizeInfo;
+import com.bonus.material.materialStation.mapper.ProAuthorizeMapper;
+import com.bonus.material.materialStation.service.ProAuthorizeService;
+import lombok.extern.slf4j.Slf4j;
+import okhttp3.*;
+import org.hibernate.validator.internal.util.StringHelper;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URI;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.Base64;
+import java.util.List;
+import java.util.Random;
+import java.util.stream.Collectors;
+
+/**
+ * @author hay
+ * @description 项目部授权
+ * @date 2025/6/18 21:54
+ */
+@Service(value = "proAuthorizeService")
+@Slf4j
+public class ProAuthorizeServiceImpl implements ProAuthorizeService {
+ /** 应用1 */
+ public static final String API_KEY = "YVXaH3odMID2QRJZFkJaL8yx";
+ /** 应用1 */
+ public static final String SECRET_KEY = "YWnUheHHXsqwbR1Pt0ZfaZxrh40uUW99";
+
+ /** 应用2 */
+ public static final String API_KEY_2 = "Ugm22rvfLDADxr9sT6H2muSG";
+ /** 应用2 */
+ public static final String SECRET_KEY_2 = "w1jfLoSLFpxdIJpQriJXWpoNF1YOWTdJ";
+
+ static final OkHttpClient HTTP_CLIENT = new OkHttpClient().newBuilder().build();
+
+ @Resource
+ private ProAuthorizeMapper mapper;
+
+
+ @Override
+ public List getPublishList(LeaseApplyInfo leaseApplyInfo) {
+ try {
+ List list = mapper.getPublishList(leaseApplyInfo);
+ if (!CollectionUtils.isEmpty(list)) {
+ String keyWord = leaseApplyInfo.getKeyWord();
+ // 如果关键字不为空,进行过滤
+ if (!StringUtils.isBlank(keyWord)) {
+ list = list.stream()
+ .filter(item -> containsKeyWord(item, keyWord))
+ .collect(Collectors.toList());
+ }
+ }
+ return list;
+ } catch (Exception e){
+ log.error("项目部授权列表查询", e.getMessage());
+ return new ArrayList<>();
+ }
+ }
+
+ @Override
+ public AjaxResult uploadPhoto(String filePath, Long type) {
+ try {
+ String base64 = encodeImageFromUrlToBase64(filePath);
+ String types="";
+ if (type == 1){
+ types="front";
+ } else if (type == 2){
+ types="back";
+ }
+ if (!StringHelper.isNullOrEmptyString(base64)) {
+ String image = URLEncoder.encode(base64, "utf-8");
+ MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
+ RequestBody body = RequestBody.create(mediaType, "image=" + image + "&id_card_side="+types);
+ Request request = new Request.Builder()
+ .url("https://aip.baidubce.com/rest/2.0/ocr/v1/idcard?access_token=" + getAccessToken())
+ .method("POST", body)
+ .addHeader("Content-Type", "application/x-www-form-urlencoded")
+ .addHeader("Accept", "application/json")
+ .build();
+ Response response = HTTP_CLIENT.newCall(request).execute();
+ String jsonString = response.body().string();
+ System.err.println(jsonString);
+ JSONObject jsonObject = JSONObject.parseObject(jsonString);
+ JSONObject resultObject = jsonObject.getJSONObject("words_result");
+ ProAuthorizeDetails bean = new ProAuthorizeDetails();
+ if (type==1){
+ String name = resultObject.getJSONObject("姓名").getString("words");
+ String idNumber = resultObject.getJSONObject("公民身份号码").getString("words");
+ String sex = resultObject.getJSONObject("性别").getString("words");
+ String birth = resultObject.getJSONObject("出生").getString("words");
+ String address = resultObject.getJSONObject("住址").getString("words");
+ String nation = resultObject.getJSONObject("民族").getString("words");
+ bean.setName(name);
+ bean.setIdNumber(idNumber);
+ bean.setFrontUrl(filePath);
+ } else if (type==2){
+ String time = resultObject.getJSONObject("失效日期").getString("words");
+ bean.setBackUrl(filePath);
+ }
+ return AjaxResult.success(bean);
+ } else {
+ return AjaxResult.error("图片识别失败,请重试");
+ }
+ } catch (Exception e) {
+ log.error("图片识别失败", e.getMessage());
+ return AjaxResult.error("图片识别失败,请重试");
+ }
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult authorizeSubmit(ProAuthorizeInfo bean) {
+ try {
+ String userId = SecurityUtils.getLoginUser().getUserid().toString();
+ bean.setCreateBy(userId);
+ if (bean != null) {
+ if (bean.getAuthId() != null) {
+ //修改
+ //删除详情数据
+ int res = mapper.deleteProAuthorizeDetails(bean.getAuthId());
+ if (res <= 0) {
+ throw new RuntimeException("授权信息删除失败");
+ }
+ insertProAuthorizeDetails(bean.getDetailsList(),bean.getAuthId());
+ } else {
+ for (Long lesaeId : bean.getLeaseIds()){
+ bean.setLeaseId(lesaeId);
+ //新增
+ int res = mapper.insertProAuthorizeInfo(bean);
+ if (res > 0 && bean.getId() != null) {
+ bean.setAuthId(bean.getId());
+ } else {
+ throw new RuntimeException("授权信息插入失败");
+ }
+ insertProAuthorizeDetails(bean.getDetailsList(),bean.getAuthId());
+ }
+ }
+ return AjaxResult.success();
+ } else {
+ throw new RuntimeException("授权信息插入失败");
+ }
+ } catch (Exception e) {
+ log.error("授权提交失败", e.getMessage());
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ return AjaxResult.error("授权提交失败");
+ }
+ }
+
+ private void insertProAuthorizeDetails(List detailsList,Long authId){
+ String userId = SecurityUtils.getLoginUser().getUserid().toString();
+ if (detailsList.size() > 0) {
+ for (ProAuthorizeDetails details : detailsList) {
+ details.setParentId(authId);
+ details.setCreateBy(userId);
+ int re = mapper.insertProAuthorizeDetails(details);
+ if (re <= 0) {
+ throw new RuntimeException("授权信息插入失败");
+ }
+ }
+ } else {
+ throw new RuntimeException("没有领料人信息");
+ }
+ }
+
+ @Override
+ public AjaxResult authorizeView(ProAuthorizeInfo bean) {
+ try {
+ if (bean.getLeaseId()!= null){
+ //查询授权信息
+ ProAuthorizeInfo info = mapper.selectProAuthorizeInfo(bean);
+ if (info != null){
+ List detailsList = mapper.getDetailsList(info.getId());
+ info.setDetailsList(detailsList);
+ }
+ return AjaxResult.success(info);
+ } else {
+ log.error("授权查看没有id");
+ return AjaxResult.error("授权信息查看失败");
+ }
+ } catch (Exception e) {
+ log.error("授权信息查看失败", e.getMessage());
+ return AjaxResult.error("授权信息查看失败");
+ }
+ }
+
+ /**
+ * 判断关键字是否包含在item中
+ * @param item
+ * @param keyWord
+ * @return
+ */
+ private boolean containsKeyWord(LeasePublishInfo item, String keyWord) {
+ return (item.getMaTypeNames() != null && item.getMaTypeNames().contains(keyWord)) ||
+ (item.getUnitName() != null && item.getUnitName().contains(keyWord)) ||
+ (item.getProjectName() != null && item.getProjectName().contains(keyWord)) ||
+ (item.getCode() != null && item.getCode().contains(keyWord)) ||
+ (item.getCreateBy() != null && item.getCreateBy().contains(keyWord)) ||
+ (item.getLeasePerson() != null && item.getLeasePerson().contains(keyWord)) ||
+ (item.getPhone() != null && item.getPhone().contains(keyWord)) ||
+ (item.getImpUnitName() != null && item.getImpUnitName().contains(keyWord));
+ }
+
+ /**
+ * 从用户的AK,SK生成鉴权签名(Access Token)
+ *
+ * @return 鉴权签名(Access Token)
+ * @throws IOException IO异常
+ */
+ static String getAccessToken() throws IOException {
+ MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
+ RequestBody body=null;
+ //生成随机数获取应用key
+ Random random = new Random();
+ int i = random.nextInt(2);
+ if (i == 0){
+ body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY
+ + "&client_secret=" + SECRET_KEY);
+ } else {
+ body = RequestBody.create(mediaType, "grant_type=client_credentials&client_id=" + API_KEY_2
+ + "&client_secret=" + SECRET_KEY_2);
+ }
+ Request request = new Request.Builder()
+ .url("https://aip.baidubce.com/oauth/2.0/token")
+ .method("POST", body)
+ .addHeader("Content-Type", "application/x-www-form-urlencoded")
+ .build();
+ Response response = HTTP_CLIENT.newCall(request).execute();
+ String jsonString = response.body().string();
+ JSONObject jsonObject = JSONObject.parseObject(jsonString);
+ String accessToken = jsonObject.getString("access_token");
+ return accessToken;
+ }
+
+ /**
+ * 获取文件base64编码
+ *
+ * @param file MultipartFile 文件对象
+ * 如果Content-Type是application/x-www-form-urlencoded时,传true
+ * @return base64编码信息,不带文件头
+ * @throws IOException IO异常
+ */
+ static String getFileContentAsBase64(MultipartFile file) throws IOException {
+ return getFileContentAsBase64(file, true);
+ }
+
+ public static String encodeImageToBase64(String imagePath) throws IOException {
+ // 创建一个File对象,指向图片所在的路径
+ File file = new File(imagePath);
+ // 检查文件是否存在
+ if (!file.exists()) {
+ throw new IOException("文件未找到: " + imagePath);
+ }
+ // 读取文件为字节数组
+ byte[] fileContent = Files.readAllBytes(file.toPath());
+ // 将字节数组编码为Base64字符串
+ String encodedString = Base64.getEncoder().encodeToString(fileContent);
+ encodedString=URLEncoder.encode(encodedString, "utf-8");
+
+ return encodedString;
+ }
+
+ /**
+ * 重载方法,可以指定是否进行URL编码
+ */
+ static String getFileContentAsBase64(MultipartFile file, boolean urlEncode) throws IOException {
+ byte[] b = file.getBytes();
+ String base64 = Base64.getEncoder().encodeToString(b);
+ if (urlEncode) {
+ base64 = URLEncoder.encode(base64, "utf-8");
+ }
+ return base64;
+ }
+
+
+ public static String encodeImageFromUrlToBase64(String imageUrl) throws IOException {
+ System.err.println("imageUrl-=========:" + imageUrl);
+ URL url = new URL(imageUrl);
+ HttpURLConnection connection = (HttpURLConnection) url.openConnection();
+ // 设置请求方法为GET
+ connection.setRequestMethod("GET");
+ // 检查状态码是否为200 OK
+ int responseCode = connection.getResponseCode();
+ if (responseCode == HttpURLConnection.HTTP_OK) {
+ try (InputStream inputStream = connection.getInputStream();
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) {
+ byte[] buffer = new byte[1024];
+ int bytesRead;
+ while ((bytesRead = inputStream.read(buffer)) != -1) {
+ outputStream.write(buffer, 0, bytesRead);
+ }
+ byte[] imageBytes = outputStream.toByteArray();
+ // 将字节数组编码为Base64字符串
+ String encodedString = Base64.getEncoder().encodeToString(imageBytes);
+// System.err.println("encodedString-=========:" + encodedString);
+// encodedString=URLEncoder.encode(encodedString, "utf-8");
+// System.err.println("encodedString222-=========:" + encodedString);
+ return encodedString;
+ }
+ } else {
+ throw new IOException("Failed to fetch image: HTTP status code " + responseCode);
+ }
+ }
+
+
+}
diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/common/SelectMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/common/SelectMapper.xml
index 073ca9b0..be9fbe42 100644
--- a/bonus-modules/bonus-material/src/main/resources/mapper/material/common/SelectMapper.xml
+++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/common/SelectMapper.xml
@@ -428,4 +428,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE dict_type = 'branch_project'
and `status` = 0
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bonus-modules/bonus-material/src/main/resources/mapper/material/materialStation/ProAuthorizeMapper.xml b/bonus-modules/bonus-material/src/main/resources/mapper/material/materialStation/ProAuthorizeMapper.xml
new file mode 100644
index 00000000..eb29698c
--- /dev/null
+++ b/bonus-modules/bonus-material/src/main/resources/mapper/material/materialStation/ProAuthorizeMapper.xml
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into pro_authorize_info(lease_id, team_id,team_name,url,file_name, status, create_by, create_time)
+ values (#{leaseId}, #{teamId},#{teamName}, #{url}, #{fileName}, 1, #{createBy}, NOW())
+
+
+
+ insert into pro_authorize_user(parent_id, name, id_number, front_url, back_url, create_by,
+ create_time, update_by, update_time)
+ values (#{parentId}, #{name}, #{idNumber}, #{frontUrl}, #{backUrl}, #{createBy}, NOW(),#{createBy},NOW())
+
+
+
+ delete
+ from pro_authorize_user
+ where parent_id = #{authId}
+
+
+
+
+
+
\ No newline at end of file