| | |
| | | */ |
| | | package org.springblade.modules.licetuser.controller; |
| | | |
| | | import io.minio.*; |
| | | import io.minio.errors.*; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; |
| | | import lombok.AllArgsConstructor; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.validation.Valid; |
| | | |
| | | import org.springblade.common.constant.FtpConstant; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springblade.common.config.FileConfig; |
| | | import org.springblade.common.config.FtpConfig; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.mp.support.Query; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.modules.FTP.FtpUtil; |
| | | import org.springblade.modules.licet.entity.Licet; |
| | | import org.springblade.modules.licet.service.ILicetService; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import org.springblade.modules.licetuser.entity.Licetuser; |
| | | import org.springblade.modules.licetuser.vo.LicetuserVO; |
| | | import org.springblade.modules.licetuser.service.ILicetuserService; |
| | | import org.springblade.core.boot.ctrl.BladeController; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.util.Map; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.security.InvalidKeyException; |
| | | import java.security.NoSuchAlgorithmException; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static org.springblade.common.config.FtpConfig.*; |
| | | |
| | | /** |
| | | * 控制器 |
| | |
| | | public class LicetuserController extends BladeController { |
| | | |
| | | private final ILicetuserService licetuserService; |
| | | |
| | | private final ILicetService licetService; |
| | | |
| | | /** |
| | | * 详情 |
| | |
| | | for (int i = 0; i < split.length; i++) { |
| | | String s = split[i].substring(26, split[i].length()); |
| | | String[] splits = split[i].split("/"); |
| | | url += FtpConstant.ip +"/zhba/upload/picture/"+ splits[6] + ","; |
| | | url += FtpConfig.ip +"/zhba/upload/picture/"+ splits[6] + ","; |
| | | } |
| | | String substring = url.substring(0, url.length() - 1); |
| | | licetuser.setLinks(substring); |
| | |
| | | for (int i = 0; i < split.length; i++) { |
| | | String s = split[i].substring(26, split[i].length()); |
| | | String[] splits = split[i].split("/"); |
| | | url += FtpConstant.ip +"/zhba/upload/picture/"+ splits[6] + ","; |
| | | url += FtpConfig.ip +"/zhba/upload/picture/"+ splits[6] + ","; |
| | | } |
| | | String substring = url.substring(0, url.length() - 1); |
| | | licetuser.setLinks(substring); |
| | |
| | | return R.status(licetuserService.removeByIds(Func.toLongList(ids))); |
| | | } |
| | | |
| | | /** |
| | | * 许可审批备案文件上传(对接政务平台) |
| | | * @param file 文件 |
| | | * @param licetId 附件材料id |
| | | * @param ptype 类型 |
| | | * @param cardid 用户唯一id |
| | | * @return |
| | | */ |
| | | @PostMapping("/liceUpload") |
| | | public R liceUpload(@RequestParam MultipartFile file, String licetId, String ptype, String cardid, HttpServletRequest request) throws IOException, InvalidResponseException, InvalidKeyException, NoSuchAlgorithmException, ServerException, ErrorResponseException, XmlParserException, InsufficientDataException, InternalException { |
| | | String fieldNames = request.getHeader("_fieldNames"); |
| | | System.out.println("fieldNames = " + fieldNames); |
| | | //文件上传 |
| | | String urls = putFile(file); |
| | | String link = urls.split(",")[0]; |
| | | //内网 |
| | | String inlink = urls.split(",")[1]; |
| | | Licetuser licetuser = new Licetuser(); |
| | | licetuser.setPtype(ptype); |
| | | |
| | | Licet licet = new Licet(); |
| | | licet.setPtype(ptype); |
| | | licetuser.setUserid(cardid); |
| | | |
| | | //查询上传的材料信息 |
| | | Licetuser licetuser1 = licetuserService.getOne(Condition.getQueryWrapper(licetuser)); |
| | | if (null==licetuser1){ |
| | | licetuser.setTemplateid(licetId); |
| | | licetuser.setLinks(link); |
| | | //新增 |
| | | licetuserService.save(licetuser); |
| | | |
| | | //数据同步 |
| | | String s1 = |
| | | "insert into sys_licetuser(id,userid,ptype,templateid,links) " + |
| | | "values(" + "'" + licetuser.getId() + "'" + "," + |
| | | "'" + licetuser.getUserid() + "'" + "," + |
| | | "'" + licetuser.getPtype() + "'" + "," + |
| | | "'" + licetuser.getTemplateid() + "'" + "," + |
| | | "'" + inlink + "'" + ")"; |
| | | FtpUtil.sqlFileUpload(s1); |
| | | }else { |
| | | //判断是否是重复上传 |
| | | List<String> asList = Arrays.asList(licetuser1.getTemplateid().split(",")); |
| | | List<String> linksList = Arrays.asList(licetuser1.getLinks().split(",")); |
| | | boolean status = asList.contains(licetId); |
| | | if(status) { |
| | | //重复上传 |
| | | int i = 0; |
| | | for (int j = 0; j < asList.size(); j++) { |
| | | if (asList.get(j).equals(licetId)){ |
| | | i = j; |
| | | } |
| | | } |
| | | //替换link |
| | | linksList.set(i,link); |
| | | licetuser1.setLinks(StringUtils.join(linksList.toArray(), ",")); |
| | | }else { |
| | | //替换 下标集合,id集合,links |
| | | licetuser1.setTemplateid(licetuser1.getTemplateid()+","+licetId); |
| | | licetuser1.setLinks(licetuser1.getLinks()+","+link); |
| | | } |
| | | //修改 |
| | | licetuserService.updateById(licetuser1); |
| | | |
| | | //内网 links |
| | | String url = ""; |
| | | String[] split = licetuser1.getLinks().split(","); |
| | | for (int i = 0; i < split.length; i++) { |
| | | String s = split[i].substring(26); |
| | | String[] splits = split[i].split("/"); |
| | | url += FtpConfig.ip +"/zhba/upload/picture/"+ splits[6] + ","; |
| | | } |
| | | String inlinks = url.substring(0, url.length() - 1); |
| | | |
| | | //同步数据 |
| | | String s1 = "update sys_licetuser set userid = " + "'" + licetuser1.getUserid() + "'" + |
| | | ",ptype = " + "'" + licetuser1.getPtype() + "'" + |
| | | ",templateid = " + "'" + licetuser1.getTemplateid() + "'" + |
| | | ",links = " + "'" + inlinks + "'" + |
| | | " " + "where id = " + "'" + licetuser1.getId() + "'"; |
| | | FtpUtil.sqlFileUpload(s1); |
| | | } |
| | | return R.data("成功"); |
| | | } |
| | | |
| | | /** |
| | | * 文件上传 |
| | | * @param file |
| | | */ |
| | | private String putFile(MultipartFile file) throws IOException, InvalidKeyException, InvalidResponseException, InsufficientDataException, NoSuchAlgorithmException, ServerException, InternalException, XmlParserException, ErrorResponseException { |
| | | String url = FileConfig.url; |
| | | String access = FileConfig.access; |
| | | String secret = FileConfig.secret; |
| | | String bucket = FileConfig.bucket; |
| | | MinioClient minioClient = |
| | | MinioClient.builder() |
| | | .endpoint(url) |
| | | .credentials(access, secret) |
| | | .build(); |
| | | // 检查存储桶是否已经存在 |
| | | boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucket).build()); |
| | | if (!isExist) { |
| | | // 创建一个名为zip的存储桶,用于zip文件。 |
| | | minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucket).build()); |
| | | minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucket).build()); |
| | | } |
| | | String fileName = file.getOriginalFilename(); |
| | | String newName = "upload/picture/" + UUID.randomUUID().toString().replaceAll("-", "") |
| | | + fileName.substring(fileName.lastIndexOf(".")); |
| | | InputStream in = file.getInputStream(); |
| | | String[] split = newName.split("/"); |
| | | //创建头部信息 |
| | | Map<String, String> headers = new HashMap<>(1 << 2); |
| | | //添加自定义内容类型 |
| | | headers.put("Content-Type", "application/octet-stream"); |
| | | //上传 |
| | | minioClient.putObject( |
| | | PutObjectArgs.builder().bucket(bucket).object(newName).stream( |
| | | in, in.available(), -1) |
| | | .headers(headers) |
| | | .build()); |
| | | InputStream inputStream = file.getInputStream(); |
| | | FtpUtil.uploadFile(FtpConfig.ftpHost, ftpPort, FtpConfig.ftpUserName, ftpPassword, ftpPath, "/", split[2], inputStream); |
| | | in.close(); |
| | | String urls = "http://61.131.136.25/zhba/" + newName; |
| | | //内网 |
| | | String inUrl = FtpConfig.ip + "/zhba/" + newName; |
| | | //返回url |
| | | return urls+","+inUrl; |
| | | } |
| | | |
| | | |
| | | } |