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