From 203b0054e4c6974608776950473ddd8bd9c075aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=98=89=E4=BC=9F?= <1724121454@qq.com> Date: Mon, 12 Jul 2021 09:22:07 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=84=E4=BB=B6=E4=B8=8A=E4=BC=A0=EF=BC=8C?= =?UTF-8?q?=E5=BC=82=E5=B8=B8bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- anomaly/pom.xml | 5 + .../controller/AbnormalBillController.java | 22 + .../controller/UploadPicturesController.java | 124 ++++++ .../anomaly/mapper/UploadPicturesMapper.java | 18 + .../mesnac/anomaly/model/AbnormalBill.java | 34 +- .../mesnac/anomaly/model/UploadPictures.java | 216 +++++++++ .../anomaly/service/AbnormalBillService.java | 16 +- .../anomaly/service/FileUploadedService.java | 22 + .../service/UploadPicturesService.java | 28 ++ .../service/impl/AbnormalBillServiceImpl.java | 86 +++- .../service/impl/FileUploadedServiceImpl.java | 167 +++++++ .../impl/UploadPicturesServiceImpl.java | 46 ++ .../resources/mapper/UploadPicturesMapper.xml | 418 ++++++++++++++++++ .../src/main/resources/application-local.yml | 15 +- pom.xml | 6 + 15 files changed, 1204 insertions(+), 19 deletions(-) create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/UploadPicturesController.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/UploadPicturesMapper.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/UploadPictures.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/FileUploadedService.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/UploadPicturesService.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/FileUploadedServiceImpl.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/UploadPicturesServiceImpl.java create mode 100644 anomaly/src/main/resources/mapper/UploadPicturesMapper.xml diff --git a/anomaly/pom.xml b/anomaly/pom.xml index 061f313a..1796024e 100644 --- a/anomaly/pom.xml +++ b/anomaly/pom.xml @@ -71,5 +71,10 @@ org.springframework spring-web + + commons-net + commons-net + 3.1 + \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/AbnormalBillController.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/AbnormalBillController.java index 4311eb88..093937dd 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/AbnormalBillController.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/AbnormalBillController.java @@ -6,6 +6,7 @@ import com.foreverwin.mesnac.anomaly.dto.AbnormalBillDto; import com.foreverwin.mesnac.anomaly.model.AbnormalBill; import com.foreverwin.mesnac.anomaly.model.AbnormalBillDispose; import com.foreverwin.mesnac.anomaly.service.AbnormalBillService; +import com.foreverwin.mesnac.anomaly.service.FileUploadedService; import com.foreverwin.mesnac.common.dto.SfcDispatchDto; import com.foreverwin.mesnac.common.service.SfcDispatchCommonService; import com.foreverwin.modular.core.util.FrontPage; @@ -13,6 +14,8 @@ import com.foreverwin.modular.core.util.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -30,6 +33,10 @@ public class AbnormalBillController { @Autowired private SfcDispatchCommonService sfcDispatchCommonService; + @Autowired + private FileUploadedService fileUploadedService; + + /** * 根据id查询 @@ -291,4 +298,19 @@ public class AbnormalBillController { public R findResrceBySfc(SfcDispatchDto sfcDispatch){ return R.ok(sfcDispatchCommonService.findResrceBySfc(sfcDispatch)); } + + @GetMapping("/show") + public R showFile(HttpServletRequest request, HttpServletResponse response) throws Exception { + return R.ok(fileUploadedService.showFile(request,response)); + } + + @PostMapping("/delete") + public R delete(String ftpPath,String fileName){ + return R.ok(fileUploadedService.deleteFile(ftpPath,fileName)); + } + + @GetMapping("/findUploadPictureByAbnormalBo") + public R findUploadPictureByAbnormalBo(AbnormalBill abnormalBill){ + return R.ok(abnormalBillService.findUploadPictureByAbnormalBo(abnormalBill)); + } } \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/UploadPicturesController.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/UploadPicturesController.java new file mode 100644 index 00000000..4eddbb96 --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/UploadPicturesController.java @@ -0,0 +1,124 @@ +package com.foreverwin.mesnac.anomaly.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.foreverwin.mesnac.anomaly.model.UploadPictures; +import com.foreverwin.mesnac.anomaly.service.UploadPicturesService; +import com.foreverwin.modular.core.util.FrontPage; +import com.foreverwin.modular.core.util.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * + * @author Leon.L + * @since 2021-07-11 + */ +@RestController +@RequestMapping("/Z-UPLOAD-PICTURES") +public class UploadPicturesController { + + @Autowired + public UploadPicturesService uploadPicturesService; + + /** + * 根据id查询 + * + * @param id 主键 + * @return + */ + @ResponseBody + @GetMapping("/{id:.+}") + public R getUploadPicturesById(@PathVariable String id) { + return R.ok( uploadPicturesService.getById(id)); + } + + /** + * 查询所有数据 + * + * @return + */ + @ResponseBody + @GetMapping("") + public R getUploadPicturesList(UploadPictures uploadPictures){ + List result; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(uploadPictures); + result = uploadPicturesService.list(queryWrapper); + return R.ok(result); + } + + /** + * 分页查询数据 + * + * @param frontPage 分页信息 + * @return + */ + @ResponseBody + @GetMapping("/page") + public R page(FrontPage frontPage, UploadPictures uploadPictures){ + IPage result; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(uploadPictures); + if (frontPage.getGlobalQuery() != null && !"".equals(frontPage.getGlobalQuery().trim())) { + //TODO modify global query + queryWrapper.lambda().and(wrapper -> wrapper + .like(UploadPictures::getHandle, frontPage.getGlobalQuery()) + .or().like(UploadPictures::getSite, frontPage.getGlobalQuery()) + .or().like(UploadPictures::getPicturePath, frontPage.getGlobalQuery()) + .or().like(UploadPictures::getPictureAddress, frontPage.getGlobalQuery()) + .or().like(UploadPictures::getObjectBo, frontPage.getGlobalQuery()) + .or().like(UploadPictures::getNum, frontPage.getGlobalQuery()) + .or().like(UploadPictures::getType, frontPage.getGlobalQuery()) + .or().like(UploadPictures::getCreatedUser, frontPage.getGlobalQuery()) + .or().like(UploadPictures::getModifiedUser, frontPage.getGlobalQuery()) + ); + } + result = uploadPicturesService.page(frontPage.getPagePlus(), queryWrapper); + return R.ok(result); + } + + /** + * 新增 + * @param uploadPictures 传递的实体 + * @return null 失败 实体成功 + */ + @PostMapping + public R save(@RequestBody UploadPictures uploadPictures) { + return R.ok(uploadPicturesService.save(uploadPictures)); + } + + /** + * 修改 + * @param uploadPictures 传递的实体 + * @return null 失败 实体成功 + */ + @PutMapping + public R updateById(@RequestBody UploadPictures uploadPictures) { + return R.ok(uploadPicturesService.updateById(uploadPictures)); + } + + /** + * 根据id删除对象 + * @param id 实体ID + * @return 0 失败 1 成功 + */ + @ResponseBody + @RequestMapping(method = RequestMethod.DELETE, value = "/{id:.+}") + public R removeById(@PathVariable("id") String id){ + return R.ok(uploadPicturesService.removeById(id)); + } + + /** + * 批量删除对象 + * @param ids 实体集合ID + * @return 0 失败 1 成功 + */ + @ResponseBody + @RequestMapping(method = RequestMethod.POST, value = "/delete-batch") + public R removeByIds(List ids){ + return R.ok(uploadPicturesService.removeByIds(ids)); + } +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/UploadPicturesMapper.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/UploadPicturesMapper.java new file mode 100644 index 00000000..d4fe2ba7 --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/UploadPicturesMapper.java @@ -0,0 +1,18 @@ +package com.foreverwin.mesnac.anomaly.mapper; + +import com.foreverwin.mesnac.anomaly.model.UploadPictures; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * Mapper 接口 + *

+ * + * @author Leon.L + * @since 2021-07-11 + */ +@Repository +public interface UploadPicturesMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/AbnormalBill.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/AbnormalBill.java index b0ab7eac..148aaa4b 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/AbnormalBill.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/AbnormalBill.java @@ -200,6 +200,14 @@ public class AbnormalBill extends Model { @TableField("MODIFIED_DATE_TIME") private LocalDateTime modifiedDateTime; + @TableField(exist = false) + private String filePath; + + @TableField(exist = false) + private String fileName; + + @TableField(exist = false) + private String fileNum; public String getHandle() { return handle; @@ -481,7 +489,31 @@ public class AbnormalBill extends Model { this.modifiedDateTime = modifiedDateTime; } -public static final String HANDLE = "HANDLE"; + public String getFilePath() { + return filePath; + } + + public void setFilePath(String filePath) { + this.filePath = filePath; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public String getFileNum() { + return fileNum; + } + + public void setFileNum(String fileNum) { + this.fileNum = fileNum; + } + + public static final String HANDLE = "HANDLE"; public static final String SITE = "SITE"; diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/UploadPictures.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/UploadPictures.java new file mode 100644 index 00000000..a445753f --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/UploadPictures.java @@ -0,0 +1,216 @@ +package com.foreverwin.mesnac.anomaly.model; + +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 com.baomidou.mybatisplus.extension.activerecord.Model; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + *

+ * + *

+ * + * @author Leon.L + * @since 2021-07-11 + */ + +@TableName("Z_UPLOAD_PICTURES") + +public class UploadPictures extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "HANDLE", type = IdType.INPUT) + private String handle; + /** + * 站点 + */ + @TableField("SITE") + private String site; + /** + * 图片路径 + */ + @TableField("PICTURE_PATH") + private String picturePath; + /** + * 图片路径详细地址 + */ + @TableField("PICTURE_ADDRESS") + private String pictureAddress; + /** + * 单号 + */ + @TableField("OBJECT_BO") + private String objectBo; + /** + * 数量 + */ + @TableField("NUM") + private String num; + /** + * 类型 + */ + @TableField("TYPE") + private String type; + /** + * 创建人 + */ + @TableField("CREATED_USER") + private String createdUser; + /** + * 创建时间 + */ + @TableField("CREATED_DATE_TIME") + private LocalDateTime createdDateTime; + /** + * 修改人 + */ + @TableField("MODIFIED_USER") + private String modifiedUser; + /** + * 修改日期 + */ + @TableField("MODIFIED_DATE_TIME") + private LocalDateTime modifiedDateTime; + + + public String getHandle() { + return handle; + } + + public void setHandle(String handle) { + this.handle = handle; + } + + public String getSite() { + return site; + } + + public void setSite(String site) { + this.site = site; + } + + public String getPicturePath() { + return picturePath; + } + + public void setPicturePath(String picturePath) { + this.picturePath = picturePath; + } + + public String getPictureAddress() { + return pictureAddress; + } + + public void setPictureAddress(String pictureAddress) { + this.pictureAddress = pictureAddress; + } + + public String getObjectBo() { + return objectBo; + } + + public void setObjectBo(String objectBo) { + this.objectBo = objectBo; + } + + public String getNum() { + return num; + } + + public void setNum(String num) { + this.num = num; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCreatedUser() { + return createdUser; + } + + public void setCreatedUser(String createdUser) { + this.createdUser = createdUser; + } + + public LocalDateTime getCreatedDateTime() { + return createdDateTime; + } + + public void setCreatedDateTime(LocalDateTime createdDateTime) { + this.createdDateTime = createdDateTime; + } + + public String getModifiedUser() { + return modifiedUser; + } + + public void setModifiedUser(String modifiedUser) { + this.modifiedUser = modifiedUser; + } + + public LocalDateTime getModifiedDateTime() { + return modifiedDateTime; + } + + public void setModifiedDateTime(LocalDateTime modifiedDateTime) { + this.modifiedDateTime = modifiedDateTime; + } + +public static final String HANDLE = "HANDLE"; + +public static final String SITE = "SITE"; + +public static final String PICTURE_PATH = "PICTURE_PATH"; + +public static final String PICTURE_ADDRESS = "PICTURE_ADDRESS"; + +public static final String OBJECT_BO = "OBJECT_BO"; + +public static final String NUM = "NUM"; + +public static final String TYPE = "TYPE"; + +public static final String CREATED_USER = "CREATED_USER"; + +public static final String CREATED_DATE_TIME = "CREATED_DATE_TIME"; + +public static final String MODIFIED_USER = "MODIFIED_USER"; + +public static final String MODIFIED_DATE_TIME = "MODIFIED_DATE_TIME"; + + + @Override + protected Serializable pkVal() { + return this.handle; + } + + @Override + public String toString() { + return "UploadPictures{" + + "handle = " + handle + + ", site = " + site + + ", picturePath = " + picturePath + + ", pictureAddress = " + pictureAddress + + ", objectBo = " + objectBo + + ", num = " + num + + ", type = " + type + + ", createdUser = " + createdUser + + ", createdDateTime = " + createdDateTime + + ", modifiedUser = " + modifiedUser + + ", modifiedDateTime = " + modifiedDateTime + + "}"; + } +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/AbnormalBillService.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/AbnormalBillService.java index 93fe07d4..f47fc8f9 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/AbnormalBillService.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/AbnormalBillService.java @@ -6,6 +6,7 @@ import com.foreverwin.mesnac.anomaly.dto.AbnormalBillDisposeDto; import com.foreverwin.mesnac.anomaly.dto.AbnormalBillDto; import com.foreverwin.mesnac.anomaly.model.AbnormalBill; import com.foreverwin.mesnac.anomaly.model.AbnormalBillDispose; +import com.foreverwin.mesnac.anomaly.model.UploadPictures; import com.foreverwin.modular.core.util.FrontPage; import java.util.HashMap; @@ -46,7 +47,7 @@ public interface AbnormalBillService extends IService { * @param abnormalBill * @param abnormalBillDispose */ - void generateAbnormalBill(AbnormalBill abnormalBill, AbnormalBillDispose abnormalBillDispose,List dutyCauseType,List dutyType); + String generateAbnormalBill(AbnormalBill abnormalBill, AbnormalBillDispose abnormalBillDispose,List dutyCauseType,List dutyType); void cancelBrowse(String handle,String cancelBrowse,String code); @@ -98,4 +99,17 @@ public interface AbnormalBillService extends IService { */ void anomalyShutDown(AbnormalBill abnormalBill,AbnormalBillDispose abnormalBillDispose); + /** + * 放置图片 + * @param abnormalBill + */ + public void fileUpload(AbnormalBill abnormalBill); + + /** + * 查看照片 + * @param abnormalBill + * @return + */ + public UploadPictures findUploadPictureByAbnormalBo(AbnormalBill abnormalBill); + } \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/FileUploadedService.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/FileUploadedService.java new file mode 100644 index 00000000..62d0cd53 --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/FileUploadedService.java @@ -0,0 +1,22 @@ +package com.foreverwin.mesnac.anomaly.service; + +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * @Description TODO + * @Author zhaojiawei + * @Since 2021-07-11 + */ +public interface FileUploadedService { + + public void uploadAttachment(MultipartFile fileItem, String site, String taskNo, String fileType); + + public String showFile(HttpServletRequest request, HttpServletResponse response) throws Exception ; + + public boolean deleteFile(String pathname, String filename); + + +} diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/UploadPicturesService.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/UploadPicturesService.java new file mode 100644 index 00000000..49b343ec --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/UploadPicturesService.java @@ -0,0 +1,28 @@ +package com.foreverwin.mesnac.anomaly.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.foreverwin.mesnac.anomaly.model.UploadPictures; +import com.baomidou.mybatisplus.extension.service.IService; +import com.foreverwin.modular.core.util.FrontPage; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author Leon.L + * @since 2021-07-11 + */ +public interface UploadPicturesService extends IService { + + /** + * 分页查询 + * @param frontPage + * @return + */ + IPage selectPage(FrontPage frontPage, UploadPictures uploadPictures); + + List selectList(UploadPictures uploadPictures); +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalBillServiceImpl.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalBillServiceImpl.java index 125e4ef8..a3533e55 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalBillServiceImpl.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalBillServiceImpl.java @@ -89,6 +89,9 @@ public class AbnormalBillServiceImpl extends ServiceImpl dutyCauseType, List dutyType) { - this.generateAbnormalBill(abnormalBill,abnormalBillDispose,dutyCauseType,dutyType); + String message = this.generateAbnormalBill(abnormalBill, abnormalBillDispose, dutyCauseType, dutyType); this.saveOrUpdate(abnormalBill); abnormalBillDisposeService.saveOrUpdate(abnormalBillDispose); - return abnormalBill.getAbnormalNo(); + return message; } @Override @@ -122,7 +125,7 @@ public class AbnormalBillServiceImpl extends ServiceImpl ncGroupAndNcCodes, List dutyCauseType, List dutyType) { - this.generateAbnormalBill(abnormalBill,abnormalBillDispose,dutyCauseType,dutyType); + String message = this.generateAbnormalBill(abnormalBill, abnormalBillDispose, dutyCauseType, dutyType); //获取当前时间 LocalDateTime now = LocalDateTime.now(); //生成不良代码和不良代码组,并把它放到hashMap里面,ncCode是存放在异常单里面的ncCode @@ -167,13 +170,13 @@ public class AbnormalBillServiceImpl extends ServiceImpl ncByNG = ncCodeService.findNcByNG(abnormalBill.getMessageType(), abnormalBill.getNcCode()); if(ncByNG == null || ncByNG.size() <= 0){ @@ -181,7 +184,7 @@ public class AbnormalBillServiceImpl extends ServiceImpl dutyCauseType,List dutyType) { + public String generateAbnormalBill(AbnormalBill abnormalBill, AbnormalBillDispose abnormalBillDispose,List dutyCauseType,List dutyType) { String site = CommonMethods.getSite(); + String message = null; LocalDateTime currentTime = LocalDateTime.now(); String user = CommonMethods.getUser(); - if(StringUtil.isBlank(abnormalBill.getAbnormalNo())){ + if(StringUtil.isBlank(abnormalBill.getAbnormalNo())) { throw BusinessException.build("异常单号不存在"); - } - - - abnormalBill.setHandle(HandleEnum.Z_ABNORMAL_BILL.getHandle(site,abnormalBill.getAbnormalNo())); //更新的时候,判断该异常当的状态是否为新建 AbnormalBill abnormalBill1 = abnormalBillMapper.selectById(abnormalBill.getHandle()); @@ -395,6 +395,9 @@ public class AbnormalBillServiceImpl extends ServiceImpl 0){ abnormalCauseService.saveOrUpdateBatch(causeTypes); } + //放置图片 + this.fileUpload(abnormalBill); + + return message; } @@ -518,4 +525,57 @@ public class AbnormalBillServiceImpl extends ServiceImpl name = null; + if(StringUtil.notBlank(abnormalBill.getFileName())){ + name = Arrays.asList(abnormalBill.getFileName().split(",")); + } + if(name != null && name.size() != 0){ + //String uuid = UUID.randomUUID().toString(); + UploadPictures uploadPictures = new UploadPictures(); + uploadPictures.setHandle("UploadPicturesBO:"+abnormalBill.getSite()+","+abnormalBill.getAbnormalNo()); + uploadPictures.setSite(abnormalBill.getSite()); + uploadPictures.setPicturePath(abnormalBill.getFilePath()); + StringBuilder pictureAddress = new StringBuilder(); + for (int i = 0; i <= name.size() -1; i++) { + if(i != name.size() -1){ + pictureAddress.append(abnormalBill.getFilePath()).append("/").append(name.get(i)).append(","); + }else{ + pictureAddress.append(abnormalBill.getFilePath()).append("/").append(name.get(i)); + } + } + uploadPictures.setPictureAddress(pictureAddress.toString()); + uploadPictures.setObjectBo(abnormalBill.getHandle()); + uploadPictures.setNum(abnormalBill.getFileNum()); + uploadPictures.setType("ABNORMAL"); + uploadPictures.setCreatedUser(user); + uploadPictures.setCreatedDateTime(now); + uploadPictures.setModifiedUser(user); + uploadPictures.setModifiedDateTime(now); + uploadPicturesService.saveOrUpdate(uploadPictures); + } + } + + @Override + public UploadPictures findUploadPictureByAbnormalBo(AbnormalBill abnormalBill) { + String site = CommonMethods.getSite(); + UploadPictures uploadPictures = new UploadPictures(); + uploadPictures.setSite(site); + uploadPictures.setObjectBo(abnormalBill.getHandle()); + List uploadPictures1 = uploadPicturesService.selectList(uploadPictures); + if(uploadPictures1 != null && uploadPictures1.size() == 1){ + return uploadPictures1.get(0); + } + return null; + } +} + + + + + + diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/FileUploadedServiceImpl.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/FileUploadedServiceImpl.java new file mode 100644 index 00000000..a5e970f1 --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/FileUploadedServiceImpl.java @@ -0,0 +1,167 @@ +package com.foreverwin.mesnac.anomaly.service.impl; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.ftp.Ftp; +import com.foreverwin.mesnac.anomaly.service.FileUploadedService; +import com.foreverwin.modular.core.exception.BusinessException; +import com.foreverwin.modular.core.util.CommonMethods; +import org.apache.commons.net.ftp.FTP; +import org.apache.commons.net.ftp.FTPClient; +import org.apache.commons.net.ftp.FTPReply; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +/** + * @Description TODO + * @Author zhaojiawei + * @Since 2021-07-10 + */ +@Service("FileUploaded") +@Transactional(rollbackFor = Exception.class) +@ConditionalOnProperty( prefix = "ftp",name = {"host","port","username","password"}) +public class FileUploadedServiceImpl implements FileUploadedService { + + @Value("${ftp.host}") + private String host; + @Value("${ftp.port}") + private Integer port; + @Value("${ftp.username}") + private String username; + @Value("${ftp.password}") + private String password; + + private final static Logger logger = LoggerFactory.getLogger("FileUploadedServiceImpl"); + + /** + * 附件上传 + * + * @param fileItem + * @return + */ + @Override + public void uploadAttachment(MultipartFile fileItem,String site,String taskNo,String fileType) { + if (StrUtil.isBlank(site)) { + site = CommonMethods.getSite(); + } + //上传附件目录:年/月/日 + String path = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd"))+"/"+taskNo; + //上传附件名称 + String fileName = fileItem.getOriginalFilename(); + try { + Ftp ftp = new Ftp(host, port,username,password); + + ftp.upload(path, fileName, fileItem.getInputStream()); + ftp.close(); + } catch (IOException e) { + logger.info(e.getMessage()); + throw BusinessException.build("" + e.getMessage()); + } + + } + + public String showFile(HttpServletRequest request, HttpServletResponse response) throws Exception { + String path = request.getParameter("PATH"); +// InputStream in = null; + OutputStream out = null; + try { + String coderPath = new String(path.getBytes("ISO8859_1")); + String newPath = new String(coderPath.getBytes("GBK"), FTPClient.DEFAULT_CONTROL_ENCODING); + // + // in = ftpClient.getFtp(path); +// in = ftpClient.getFtp(newPath); + FTPClient ftpClient = new FTPClient(); + ftpClient.connect(host,port); + ftpClient.login(username,password); + if(!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){ + ftpClient.disconnect(); + } + ftpClient.enterLocalActiveMode(); + // 设置文件类型为二进制,与ASCII有区别 + ftpClient.setFileType(FTP.BINARY_FILE_TYPE); + // 设置编码格式 + ftpClient.setControlEncoding("GBK"); + // 提取绝对地址的目录以及文件名 + path = path.replace("ftp://"+path+":"+port+"/", ""); + String dir = path.substring(0, path.lastIndexOf("/")); + String file = path.substring(path.lastIndexOf("/")+1); + // 进入文件所在目录,注意编码格式,以能够正确识别中文目录 + boolean cdStatus = ftpClient.changeWorkingDirectory(new String(dir.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING)); + // 检验文件是否存在 + InputStream in = ftpClient.retrieveFileStream(new String(file.getBytes("GBK"),FTP.DEFAULT_CONTROL_ENCODING)); + if(in == null || ftpClient.getReplyCode() == FTPReply.FILE_UNAVAILABLE){ + return "该文件不存在"; + } + + ByteArrayOutputStream outStream = new ByteArrayOutputStream(); + byte[] buffer = new byte[1024]; + int len = 0; + while( (len=in.read(buffer)) != -1 ){ + outStream.write(buffer, 0, len); + } + byte[] data = outStream.toByteArray(); + out = response.getOutputStream(); + out.write(data); + out.flush(); + }catch (Exception e){ + return "图片获取失败"+e.getMessage(); + }finally { + out.close(); +// in.close(); + } + + return "渲染图片成功"; + } + + @Override + public boolean deleteFile(String pathname, String filename){ + boolean flag = false; + FTPClient ftpClient = null; + try { + //System.out.println("开始删除文件"); + ftpClient = new FTPClient(); + ftpClient.connect(host,port); + ftpClient.login(username,password); + if(!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){ + ftpClient.disconnect(); + } + ftpClient.enterLocalActiveMode(); + // 设置文件类型为二进制,与ASCII有区别 + ftpClient.setFileType(FTP.BINARY_FILE_TYPE); + // 设置编码格式 + ftpClient.setControlEncoding("GBK"); + //切换FTP目录 + ftpClient.changeWorkingDirectory(pathname); + ftpClient.dele(filename); + ftpClient.logout(); + flag = true; + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } finally { + if(ftpClient.isConnected()){ + try{ + ftpClient.disconnect(); + }catch(IOException e){ + e.printStackTrace(); + } + } + } + } + + +} diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/UploadPicturesServiceImpl.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/UploadPicturesServiceImpl.java new file mode 100644 index 00000000..470ad05e --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/UploadPicturesServiceImpl.java @@ -0,0 +1,46 @@ +package com.foreverwin.mesnac.anomaly.service.impl; + +import com.foreverwin.modular.core.util.FrontPage; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.foreverwin.mesnac.anomaly.model.UploadPictures; +import com.foreverwin.mesnac.anomaly.mapper.UploadPicturesMapper; +import com.foreverwin.mesnac.anomaly.service.UploadPicturesService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +/** + *

+ * 服务实现类 + *

+ * + * @author Leon.L + * @since 2021-07-11 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class UploadPicturesServiceImpl extends ServiceImpl implements UploadPicturesService { + + + @Autowired + private UploadPicturesMapper uploadPicturesMapper; + + @Override + public IPage selectPage(FrontPage frontPage, UploadPictures uploadPictures) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(uploadPictures); + return super.page(frontPage.getPagePlus(), queryWrapper); + } + + @Override + public List selectList(UploadPictures uploadPictures) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(uploadPictures); + return super.list(queryWrapper); + } + + +} \ No newline at end of file diff --git a/anomaly/src/main/resources/mapper/UploadPicturesMapper.xml b/anomaly/src/main/resources/mapper/UploadPicturesMapper.xml new file mode 100644 index 00000000..2aee9399 --- /dev/null +++ b/anomaly/src/main/resources/mapper/UploadPicturesMapper.xml @@ -0,0 +1,418 @@ + + + + + + + + + + + + + + + + + + + + + + HANDLE, SITE, PICTURE_PATH, PICTURE_ADDRESS, OBJECT_BO, NUM, TYPE, CREATED_USER, CREATED_DATE_TIME, MODIFIED_USER, MODIFIED_DATE_TIME + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO Z_UPLOAD_PICTURES + + HANDLE, + SITE, + PICTURE_PATH, + PICTURE_ADDRESS, + OBJECT_BO, + NUM, + TYPE, + CREATED_USER, + CREATED_DATE_TIME, + MODIFIED_USER, + MODIFIED_DATE_TIME, + VALUES + + #{handle}, + #{site}, + #{picturePath}, + #{pictureAddress}, + #{objectBo}, + #{num}, + #{type}, + #{createdUser}, + #{createdDateTime}, + #{modifiedUser}, + #{modifiedDateTime}, + + + + + INSERT INTO Z_UPLOAD_PICTURES + + + VALUES + + #{handle}, + #{site}, + #{picturePath}, + #{pictureAddress}, + #{objectBo}, + #{num}, + #{type}, + #{createdUser}, + #{createdDateTime}, + #{modifiedUser}, + #{modifiedDateTime}, + + + + + + UPDATE Z_UPLOAD_PICTURES + SITE=#{et.site}, + PICTURE_PATH=#{et.picturePath}, + PICTURE_ADDRESS=#{et.pictureAddress}, + OBJECT_BO=#{et.objectBo}, + NUM=#{et.num}, + TYPE=#{et.type}, + CREATED_USER=#{et.createdUser}, + CREATED_DATE_TIME=#{et.createdDateTime}, + MODIFIED_USER=#{et.modifiedUser}, + MODIFIED_DATE_TIME=#{et.modifiedDateTime}, + WHERE HANDLE=#{et.handle} and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL} + + + + + UPDATE Z_UPLOAD_PICTURES + SITE=#{et.site}, + PICTURE_PATH=#{et.picturePath}, + PICTURE_ADDRESS=#{et.pictureAddress}, + OBJECT_BO=#{et.objectBo}, + NUM=#{et.num}, + TYPE=#{et.type}, + CREATED_USER=#{et.createdUser}, + CREATED_DATE_TIME=#{et.createdDateTime}, + MODIFIED_USER=#{et.modifiedUser}, + MODIFIED_DATE_TIME=#{et.modifiedDateTime}, + WHERE HANDLE=#{et.handle} and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL} + + + + + UPDATE Z_UPLOAD_PICTURES + SITE=#{et.site}, + PICTURE_PATH=#{et.picturePath}, + PICTURE_ADDRESS=#{et.pictureAddress}, + OBJECT_BO=#{et.objectBo}, + NUM=#{et.num}, + TYPE=#{et.type}, + CREATED_USER=#{et.createdUser}, + CREATED_DATE_TIME=#{et.createdDateTime}, + MODIFIED_USER=#{et.modifiedUser}, + MODIFIED_DATE_TIME=#{et.modifiedDateTime}, + + + + + HANDLE=#{ew.entity.handle} + AND SITE=#{ew.entity.site} + AND PICTURE_PATH=#{ew.entity.picturePath} + AND PICTURE_ADDRESS=#{ew.entity.pictureAddress} + AND OBJECT_BO=#{ew.entity.objectBo} + AND NUM=#{ew.entity.num} + AND TYPE=#{ew.entity.type} + AND CREATED_USER=#{ew.entity.createdUser} + AND CREATED_DATE_TIME=#{ew.entity.createdDateTime} + AND MODIFIED_USER=#{ew.entity.modifiedUser} + AND MODIFIED_DATE_TIME=#{ew.entity.modifiedDateTime} + + + ${ew.sqlSegment} + + + + + ${ew.sqlSegment} + + + + + DELETE FROM Z_UPLOAD_PICTURES WHERE HANDLE=#{handle} + + + + DELETE FROM Z_UPLOAD_PICTURES + + + + + ${k} = #{cm[${k}]} + + + + + + + + DELETE FROM Z_UPLOAD_PICTURES + + + + + HANDLE=#{ew.entity.handle} + + AND SITE=#{ew.entity.site} + AND PICTURE_PATH=#{ew.entity.picturePath} + AND PICTURE_ADDRESS=#{ew.entity.pictureAddress} + AND OBJECT_BO=#{ew.entity.objectBo} + AND NUM=#{ew.entity.num} + AND TYPE=#{ew.entity.type} + AND CREATED_USER=#{ew.entity.createdUser} + AND CREATED_DATE_TIME=#{ew.entity.createdDateTime} + AND MODIFIED_USER=#{ew.entity.modifiedUser} + AND MODIFIED_DATE_TIME=#{ew.entity.modifiedDateTime} + + + ${ew.sqlSegment} + + + + + ${ew.sqlSegment} + + + + + DELETE FROM Z_UPLOAD_PICTURES WHERE HANDLE IN ( + #{item} + ) + + + + diff --git a/console/src/main/resources/application-local.yml b/console/src/main/resources/application-local.yml index 756104aa..7d58d3c6 100644 --- a/console/src/main/resources/application-local.yml +++ b/console/src/main/resources/application-local.yml @@ -47,8 +47,15 @@ wechat: postUrl: https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN #ftp文档服务器 +#ftp: +# host: 10.4.1.53 +# port: 21 +# username: +# password: + ftp: - host: 10.4.1.53 - port: 21 - username: - password: + host: 106.52.244.124 + port: 21 + username: zjw + password: zhaojiawei + diff --git a/pom.xml b/pom.xml index abc37b8d..b3841d93 100644 --- a/pom.xml +++ b/pom.xml @@ -52,6 +52,12 @@ + + commons-net + commons-net + 3.1 + + org.springframework.boot spring-boot-starter-tomcat