From 5da23e070ee5a7b2f218d2eaa4f35506934c413c Mon Sep 17 00:00:00 2001 From: YY <1272464982@qq.com> Date: Mon, 23 Jun 2025 10:11:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=96=87=E4=BB=B6=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E5=8A=9F=E8=83=BD=20=E9=BB=91=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SynchronousController.java | 10 ++++ .../zyhy/ebtp/supplier/config/WebConfig.java | 22 ++++++++ .../config/controller/FileController.java | 47 +++++++++++++++++ .../config/service/FileStorageService.java | 43 +++++++++++++++ .../controller/CoscoBlacklistController.java | 13 +++++ .../dao/mapper/CoscoBlacklistMapper.xml | 41 ++++++++++++++- .../coscoBlack/entity/CoscoBlacklist.java | 22 +++++++- .../service/ICoscoBlacklistService.java | 14 +++++ .../impl/CoscoBlacklistServiceImpl.java | 52 +++++++++++++++++++ .../zyhy/ebtp/supplier/util/DateUtils.java | 17 ++++++ src/main/resources/application-dev.yml | 10 ++-- 11 files changed, 284 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/chinaunicom/zyhy/ebtp/supplier/config/WebConfig.java create mode 100644 src/main/java/com/chinaunicom/zyhy/ebtp/supplier/config/controller/FileController.java create mode 100644 src/main/java/com/chinaunicom/zyhy/ebtp/supplier/config/service/FileStorageService.java create mode 100644 src/main/java/com/chinaunicom/zyhy/ebtp/supplier/util/DateUtils.java diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/base/controller/SynchronousController.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/base/controller/SynchronousController.java index 7a490f8..de6d7be 100644 --- a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/base/controller/SynchronousController.java +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/base/controller/SynchronousController.java @@ -99,6 +99,14 @@ public class SynchronousController { return BaseResponse.success(coscoBlacklistService.receiveApprove(list)); } + /** + * 黑白名单恢复审批 + */ + @PostMapping("/blacklistRestoreApprove") + public BaseResponse blacklistRestoreApprove(@RequestBody CoscoBlacklist list) { + return BaseResponse.success(coscoBlacklistService.blacklistRestoreApprove(list)); + } + /** * 供应商变更审批回调接口 @@ -109,4 +117,6 @@ public class SynchronousController { } + + } diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/config/WebConfig.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/config/WebConfig.java new file mode 100644 index 0000000..186ebfe --- /dev/null +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/config/WebConfig.java @@ -0,0 +1,22 @@ +package com.chinaunicom.zyhy.ebtp.supplier.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.nio.file.Paths; + +@Configuration +public class WebConfig implements WebMvcConfigurer { + + @Value("${file.upload-dir}") + private String uploadDir; + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + String absolutePath = Paths.get(uploadDir).toAbsolutePath().toUri().toString(); + registry.addResourceHandler("/files/**") + .addResourceLocations(absolutePath); + } +} diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/config/controller/FileController.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/config/controller/FileController.java new file mode 100644 index 0000000..09b8761 --- /dev/null +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/config/controller/FileController.java @@ -0,0 +1,47 @@ +package com.chinaunicom.zyhy.ebtp.supplier.config.controller; + +import com.chinaunicom.zyhy.ebtp.supplier.config.service.FileStorageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("/fileConfig/files") +public class FileController { + + @Autowired + private FileStorageService fileStorageService; + + @Value("${file.upload-dir}") + private String uploadDir; + + + + @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public Map upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) { + String baseUrl = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort(); + + String filename = fileStorageService.storeFile(file); + String fileUrl = baseUrl+"/files/" + filename; + + + Map response = new HashMap<>(); + response.put("fileName", filename); + response.put("fileType", file.getContentType()); + response.put("fileSize", file.getSize()); + response.put("url", fileUrl); + response.put("filePath", uploadDir + "/"+filename); + + return response; + } + +} diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/config/service/FileStorageService.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/config/service/FileStorageService.java new file mode 100644 index 0000000..73dce0b --- /dev/null +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/config/service/FileStorageService.java @@ -0,0 +1,43 @@ +package com.chinaunicom.zyhy.ebtp.supplier.config.service; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.UUID; + +@Service +public class FileStorageService { + + @Value("${file.upload-dir}") + private String uploadDir; + + public String storeFile(MultipartFile file) { + try { + String originalName = StringUtils.cleanPath(file.getOriginalFilename()); + String ext = ""; + + int i = originalName.lastIndexOf("."); + if (i >= 0) { + ext = originalName.substring(i); + } + + String filename = UUID.randomUUID().toString() + ext; + Path copyLocation = Paths.get(uploadDir).toAbsolutePath().normalize().resolve(filename); + + Files.createDirectories(copyLocation.getParent()); + Files.copy(file.getInputStream(), copyLocation, StandardCopyOption.REPLACE_EXISTING); + + return filename; + + } catch (IOException ex) { + throw new RuntimeException("Could not store file: " + ex.getMessage()); + } + } +} diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/controller/CoscoBlacklistController.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/controller/CoscoBlacklistController.java index a7434db..20992c8 100644 --- a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/controller/CoscoBlacklistController.java +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/controller/CoscoBlacklistController.java @@ -81,4 +81,17 @@ public class CoscoBlacklistController extends BaseController { } return BaseResponse.success(coscoBlacklistService.submit(listVo)); } + + /** + * 提交恢复审批 + */ + @PostMapping("/restoreSubmit") + public BaseResponse restoreSubmit(@RequestBody AddBlackListVo listVo) { + BlackListInfoVo blackListInfoVo = coscoBlacklistService.selectCoscoBlacklistById(listVo.getId()); + if(blackListInfoVo.getRestoreApproveStatus() !=null){ + return BaseResponse.fail("该申请已提交"); + } + return BaseResponse.success(coscoBlacklistService.restoreSubmit(listVo)); + } + } diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/dao/mapper/CoscoBlacklistMapper.xml b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/dao/mapper/CoscoBlacklistMapper.xml index bc0a92c..9cfffe8 100644 --- a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/dao/mapper/CoscoBlacklistMapper.xml +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/dao/mapper/CoscoBlacklistMapper.xml @@ -17,10 +17,20 @@ + + + + + select id, + timelimit_type, + start_time, + end_time, + restore_approve_status, + restore_work_flow_id, blacklist_reason, dept_id, backlist_type, @@ -89,6 +99,11 @@ update_by, update_time, last_update_time, + timelimit_type, + start_time, + end_time, + restore_approve_status, + restore_work_flow_id, #{id}, @@ -103,17 +118,24 @@ #{updateBy}, #{updateTime}, #{lastUpdateTime}, + #{timelimitType}, + #{startTime}, + #{endTime}, + #{restoreApproveStatus}, + #{restoreWorkFlowId}, insert into cosco_blacklist ( id, blacklist_reason, dept_id, backlist_type, approve_status, work_flow_id, del_flag, create_by, create_time, - update_by, update_time, last_update_time) + update_by, update_time, last_update_time,timelimit_type,start_time, + end_time,restore_approve_status,restore_work_flow_id) values ( #{item.id}, #{item.blacklistReason}, #{item.deptId}, #{item.backlistType}, #{item.approveStatus}, #{item.workFlowId}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, - #{item.updateTime}, #{item.lastUpdateTime}) + #{item.updateTime}, #{item.lastUpdateTime},#{item.timelimitType},#{item.startTime}, + #{item.endTime},#{item.restoreApproveStatus},#{item.restoreWorkFlowId}) last_update_time = #{lastUpdateTime}, + timelimit_type = + #{timelimitType}, + + start_time = + #{startTime}, + + end_time = + #{endTime}, + + restore_approve_status = + #{restoreApproveStatus}, + + restore_work_flow_id = + #{restoreWorkFlowId}, + where id = #{id} diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/entity/CoscoBlacklist.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/entity/CoscoBlacklist.java index ed3c19b..db677e1 100644 --- a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/entity/CoscoBlacklist.java +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/entity/CoscoBlacklist.java @@ -26,7 +26,7 @@ public class CoscoBlacklist extends BaseEntity { private String deptId; /** 黑灰名单类型(0.黑名单、1.灰名单) */ - private Long backlistType; + private Long backlistType =0L; /** 审批状态(0.待审批、1.通过、2.驳回) */ private Long approveStatus; @@ -36,6 +36,26 @@ public class CoscoBlacklist extends BaseEntity { /** 删除标识(normal.正常、deleted.已删除) */ private String delFlag="normal"; + /** + * 时限类型(数据字典 3年、5年、10年) + */ + private String timelimitType; + /** + * 时限开始时间 + */ + private Date startTime; + /** + * 时限结束时间 + */ + private Date endTime; + /** + * 恢复审批状态(0.待审批、1.通过、2.驳回) + */ + private Long restoreApproveStatus; + /** + * 恢复审批工作流id + */ + private String restoreWorkFlowId; private Date createTime; private Date updateTime; diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/service/ICoscoBlacklistService.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/service/ICoscoBlacklistService.java index 693ec5f..89bb110 100644 --- a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/service/ICoscoBlacklistService.java +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/service/ICoscoBlacklistService.java @@ -81,4 +81,18 @@ public interface ICoscoBlacklistService { * @return */ int receiveApprove(CoscoBlacklist list); + + /** + * 黑白名单恢复审批回调 + * @param list + * @return + */ + int blacklistRestoreApprove(CoscoBlacklist list); + + /** + * 恢复审批提交 + * @param listVo + * @return + */ + int restoreSubmit(AddBlackListVo listVo); } diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/service/impl/CoscoBlacklistServiceImpl.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/service/impl/CoscoBlacklistServiceImpl.java index a1f59cd..ef677ac 100644 --- a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/service/impl/CoscoBlacklistServiceImpl.java +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/coscoBlack/service/impl/CoscoBlacklistServiceImpl.java @@ -14,11 +14,14 @@ import com.chinaunicom.zyhy.ebtp.supplier.coscoBlack.vo.BlackListInfoVo; import com.chinaunicom.zyhy.ebtp.supplier.coscoBlack.vo.BlackListVo; import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.dao.mapper.CoscoSupplierBaseMapper; import com.chinaunicom.zyhy.ebtp.supplier.coscosupplier.entity.CoscoSupplierBase; +import com.chinaunicom.zyhy.ebtp.supplier.util.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -148,12 +151,61 @@ public class CoscoBlacklistServiceImpl implements ICoscoBlacklistService { return coscoBlacklistMapper.updateCoscoBlacklist(coscoBlacklist); } + /** + * 恢复审批提交 + * @param listVo + * @return + */ + public int restoreSubmit(AddBlackListVo listVo){ + CoscoBlacklist coscoBlacklist = new CoscoBlacklist(); + coscoBlacklist.setRestoreApproveStatus(CoscoCategoryConstant.APPROVE_STATUS_WAIT); + coscoBlacklist.setId(listVo.getId()); + coscoBlacklist.setRestoreWorkFlowId(PropertyUtils.getSnowflakeId()); + + return coscoBlacklistMapper.updateCoscoBlacklist(coscoBlacklist); + } + @Override @Transactional(rollbackFor = Exception.class) public int receiveApprove(CoscoBlacklist list) { CoscoBlacklist coscoBlacklist = coscoBlacklistMapper.selectByWorkFlowId(list.getWorkFlowId()); if(CoscoCategoryConstant.APPROVE_STATUS_WAIT.equals(coscoBlacklist.getApproveStatus())){ coscoBlacklist.setApproveStatus(list.getApproveStatus()); + coscoBlacklist.setStartTime(new Date()); + //获取加入黑名单时间 + coscoBlacklist.setEndTime(DateUtils.plusYears(5)); + coscoBlacklistMapper.updateCoscoBlacklist(coscoBlacklist); + if(CoscoCategoryConstant.APPROVE_STATUS_PASS.equals(list.getApproveStatus())){ + CoscoBlacklistSupplier coscoBlacklistSupplier = new CoscoBlacklistSupplier(); + coscoBlacklistSupplier.setBlacklistId(coscoBlacklist.getId()); + List coscoBlacklistSuppliers = coscoBlacklistSupplierService.selectCoscoBlacklistSupplierList(coscoBlacklistSupplier); + coscoBlacklistSuppliers.forEach(cosupplier ->{ + //判断黑名单 + if(coscoBlacklist.getBacklistType().equals(CoscoCategoryConstant.BLACKLIST_TYPE_BLACK)){ + CoscoSupplierBase coscoSupplierBase = new CoscoSupplierBase(); + coscoSupplierBase.setId(cosupplier.getSupplierId()); + coscoSupplierBase.setBlacklistStatus(CoscoCategoryConstant.ISTRUE); + coscoSupplierBaseMapper.updateCoscoSupplierBase(coscoSupplierBase); + } + //判断灰名单 + if(coscoBlacklist.getBacklistType().equals(CoscoCategoryConstant.BLACKLIST_TYPE_BLACK)){ + CoscoSupplierBase coscoSupplierBase = new CoscoSupplierBase(); + coscoSupplierBase.setId(cosupplier.getSupplierId()); + coscoSupplierBase.setGreylistStatus(CoscoCategoryConstant.ISTRUE); + coscoSupplierBaseMapper.updateCoscoSupplierBase(coscoSupplierBase); + } + }); + + } + } + return 0; + } + + @Override + public int blacklistRestoreApprove(CoscoBlacklist list) { + CoscoBlacklist coscoBlacklist = coscoBlacklistMapper.selectByWorkFlowId(list.getRestoreWorkFlowId()); + if(CoscoCategoryConstant.APPROVE_STATUS_WAIT.equals(coscoBlacklist.getRestoreApproveStatus())){ + coscoBlacklist.setRestoreApproveStatus(list.getRestoreApproveStatus()); coscoBlacklistMapper.updateCoscoBlacklist(coscoBlacklist); if(CoscoCategoryConstant.APPROVE_STATUS_PASS.equals(list.getApproveStatus())){ CoscoBlacklistSupplier coscoBlacklistSupplier = new CoscoBlacklistSupplier(); diff --git a/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/util/DateUtils.java b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/util/DateUtils.java new file mode 100644 index 0000000..ffa4f09 --- /dev/null +++ b/src/main/java/com/chinaunicom/zyhy/ebtp/supplier/util/DateUtils.java @@ -0,0 +1,17 @@ +package com.chinaunicom.zyhy.ebtp.supplier.util; + +import java.time.LocalDate; +import java.time.ZoneId; +import java.util.Date; + +public class DateUtils { + + public static Date plusYears(int year){ + LocalDate currentDate = LocalDate.now(); // 获取当前日期 + int yearsToAdd = 5; // 要添加的年数 + LocalDate futureDate = currentDate.plusYears(yearsToAdd); // 加年限 + return Date.from(futureDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); + } + + +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 62f80d0..1b8be37 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -2,7 +2,9 @@ server: port: 18012 servlet: context-path: / - +# 文件存储配置 +file: + upload-dir: D:/Temp_Spaces/ljlq-web/ruoyi/uploadPath seata: service: vgroup-mapping: @@ -27,7 +29,7 @@ spring: cloud: nacos: discovery: - server-addr: 127.0.0.1:8848 + server-addr: 10.0.0.125:8848 aop: auto: true #开启spring的aop配置 proxy-target-class: true @@ -117,7 +119,7 @@ mybatis-plus: auto-mapping-behavior: full # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - mapper-locations: classpath*:com/chinaunicom/mall/ebtp/**/mapper/*Mapper.xml + mapper-locations: classpath*:com/chinaunicom/**/mapper/*Mapper.xml global-config: # 逻辑删除配置 db-config: @@ -182,4 +184,4 @@ management: include: "*" cors: allowed-origins: "*" - allowed-methods: "*" \ No newline at end of file + allowed-methods: "*"