From 4ea1efaa921ff4814d44476800af2e328049c1d3 Mon Sep 17 00:00:00 2001 From: anthonywj Date: Wed, 26 Apr 2023 18:13:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=95=B0=E6=8D=AEbug?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../glxp/api/constant/BasicProcessStatus.java | 2 +- .../com/glxp/api/constant/ConstantStatus.java | 4 +- .../sync/SpsSyncExportStatusController.java | 61 +++++++++++++++++++ .../com/glxp/api/dao/auth/InvSpaceDao.java | 4 +- .../com/glxp/api/dao/sync/BasicExportDao.java | 9 ++- .../com/glxp/api/entity/auth/InvSpace.java | 6 -- .../entity/sync/BasicExportStatusEntity.java | 22 +++++-- .../auth/impl/InvWarehouseServiceImpl.java | 1 - .../api/service/sync/BasicExportService.java | 3 +- .../glxp/api/service/sync/HeartService.java | 33 +++++++++- .../sync/impl/BasicExportServiceImpl.java | 11 ++-- .../mybatis/mapper/auth/InvSpaceDao.xml | 4 +- .../mapper/sync/BasicExportTimeDao.xml | 2 +- 13 files changed, 127 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/glxp/api/constant/BasicProcessStatus.java b/src/main/java/com/glxp/api/constant/BasicProcessStatus.java index 95bd9208b..e49e64115 100644 --- a/src/main/java/com/glxp/api/constant/BasicProcessStatus.java +++ b/src/main/java/com/glxp/api/constant/BasicProcessStatus.java @@ -27,7 +27,7 @@ public class BasicProcessStatus { public static final int BASIC_THIRD_ORDER = 6; //往来单位 public static final String NEW_ALL_DATA = "7"; //所有最新数据 public static final String NEW_ALL_BUS = "8"; - public static final String NEW_ALL_ORDER = "9"; + public static final String NEW_ALL_ORDER = "出入库扫码单据"; /** * 基础数据 */ diff --git a/src/main/java/com/glxp/api/constant/ConstantStatus.java b/src/main/java/com/glxp/api/constant/ConstantStatus.java index 7e96e7e28..e63753a92 100644 --- a/src/main/java/com/glxp/api/constant/ConstantStatus.java +++ b/src/main/java/com/glxp/api/constant/ConstantStatus.java @@ -251,8 +251,8 @@ public class ConstantStatus { //自动下载其他数据 public static final String SYNC_DOWNLOAD_OTHER_DATA = "AutoDownloadOtherData"; - public static final int SYNC_STATUS_SUCCESS = 1; //处理成功 - public static final int SYNC_STATUS_FAIL = 2; //处理失败 + public static final int SYNC_STATUS_SUCCESS = 2; //处理成功 + public static final int SYNC_STATUS_FAIL = 1; //处理失败 public static final int SYNC_STATUS_WAIT = 0; //等待处理 public static final int THIRD_ORDER_UPLOAD = 1; //业务单据上传至第三方 diff --git a/src/main/java/com/glxp/api/controller/sync/SpsSyncExportStatusController.java b/src/main/java/com/glxp/api/controller/sync/SpsSyncExportStatusController.java index a15eccff2..4202e677b 100644 --- a/src/main/java/com/glxp/api/controller/sync/SpsSyncExportStatusController.java +++ b/src/main/java/com/glxp/api/controller/sync/SpsSyncExportStatusController.java @@ -3,6 +3,7 @@ package com.glxp.api.controller.sync; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.github.pagehelper.PageInfo; +import com.glxp.api.annotation.AuthRuleAnnotation; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.entity.sync.BasicExportStatusEntity; @@ -22,6 +23,13 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.Date; import java.util.List; @@ -111,4 +119,57 @@ public class SpsSyncExportStatusController { } + @AuthRuleAnnotation("") + @PostMapping("/spssync/basic/udiinfo/infoByStatus") + public void infoByStatus(HttpServletResponse response, @RequestBody DeleteRequest deleteRequest) throws IOException { + if (StrUtil.isBlank(deleteRequest.getId())) { + throw new RuntimeException("缺少唯一标识"); + } + BasicExportStatusEntity info = basicExportService.getById(deleteRequest.getId()); + if (info == null) { + throw new RuntimeException("数据不存在"); + } + if (StrUtil.isBlank(info.getCacheFilePath())) { + throw new RuntimeException("文件未生成"); + } + File file = new File(info.getCacheFilePath()); + if (!file.exists()) { + throw new RuntimeException("文件丢失"); + } + String[] split = info.getCacheFilePath().split("/"); + String enFileName = URLEncoder.encode(split[split.length - 1], StandardCharsets.UTF_8); + // 设值返回文件属性,浏览器会根据属性调用下载文件方法 + response.addHeader("Content-Disposition", "attachment;filename=" + enFileName); + // 前端获取文件名,需要解码 + response.addHeader("downLoadName", enFileName); + // 定义输出流 + ServletOutputStream outputStream = null; + FileInputStream fileInputStream = null; + try { + outputStream = response.getOutputStream(); + // 定义输出类型为二进制流输出 + response.setContentType("application/octet-stream"); + fileInputStream = new FileInputStream(file); + byte[] bytes = new byte[fileInputStream.available()]; + fileInputStream.read(bytes); + // 把流写入response + outputStream.write(bytes); + // flush落盘 + outputStream.flush(); + // 关闭输出流 + outputStream.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + if (outputStream != null) { + outputStream.close(); + } + if (fileInputStream != null) { + fileInputStream.close(); + } + } + + } + + } diff --git a/src/main/java/com/glxp/api/dao/auth/InvSpaceDao.java b/src/main/java/com/glxp/api/dao/auth/InvSpaceDao.java index 15c473646..fdb5931f0 100644 --- a/src/main/java/com/glxp/api/dao/auth/InvSpaceDao.java +++ b/src/main/java/com/glxp/api/dao/auth/InvSpaceDao.java @@ -42,7 +42,7 @@ public interface InvSpaceDao extends BaseMapperPlus selectList(InvSpace invSpace); + List selectAllList(InvSpace invSpace); /** * 查询货位编码和名称 @@ -103,4 +103,4 @@ public interface InvSpaceDao extends BaseMapperPlus { List filterExportStatus(BasicExportStatusRequest basicExportStatusRequest); @@ -17,10 +17,9 @@ public interface BasicExportDao { boolean deleteById(@Param("id") String id); - boolean updateExportStatus(BasicExportStatusEntity warehouseEntity); - - boolean deleteByTime(); + boolean updateExportStatus(BasicExportStatusEntity warehouseEntity); + void deleteByDate(@Param("date") String date); } diff --git a/src/main/java/com/glxp/api/entity/auth/InvSpace.java b/src/main/java/com/glxp/api/entity/auth/InvSpace.java index 5172c4215..80884f4ee 100644 --- a/src/main/java/com/glxp/api/entity/auth/InvSpace.java +++ b/src/main/java/com/glxp/api/entity/auth/InvSpace.java @@ -33,13 +33,11 @@ public class InvSpace { /** * 所属仓库 */ - @TableField("invStorageCode") private String invStorageCode; /** * 所属分库 */ - @TableField("invWarehouseCode") private String invWarehouseCode; /** @@ -50,25 +48,21 @@ public class InvSpace { /** * 创建时间 */ - @TableField("createTime") private Date createTime; /** * 更新时间 */ - @TableField("updateTime") private Date updateTime; /** * 创建人 */ - @TableField("createUser") private String createUser; /** * 更新人 */ - @TableField("updateUser") private String updateUser; /** diff --git a/src/main/java/com/glxp/api/entity/sync/BasicExportStatusEntity.java b/src/main/java/com/glxp/api/entity/sync/BasicExportStatusEntity.java index 96eefbe77..867f13a0d 100644 --- a/src/main/java/com/glxp/api/entity/sync/BasicExportStatusEntity.java +++ b/src/main/java/com/glxp/api/entity/sync/BasicExportStatusEntity.java @@ -2,6 +2,10 @@ package com.glxp.api.entity.sync; import java.util.Date; +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.glxp.api.constant.BasicExportStatusEnum; import lombok.AllArgsConstructor; import lombok.Builder; @@ -9,25 +13,31 @@ import lombok.Data; import lombok.NoArgsConstructor; @Data +@TableName("basic_export_status") +@Builder @AllArgsConstructor @NoArgsConstructor -@Builder + public class BasicExportStatusEntity { + @TableId(type = IdType.INPUT) private String id; + @TableField(value = "idDatas") private String idDatas; private Integer status; private String type; + @TableField(value = "updateTime") private Date updateTime; + @TableField(value = "scheduleType") private Integer scheduleType; + @TableField(value = "startTime") private Date startTime; + @TableField(value = "endTime") private Date endTime; private String remark; - private String cacheFilePath; - - /** - * 接收状态 1:接收失败 2:接收成功 - */ + @TableField(value = "receiveStatus") private Integer receiveStatus; + @TableField(value = "cacheFilePath") + private String cacheFilePath; } diff --git a/src/main/java/com/glxp/api/service/auth/impl/InvWarehouseServiceImpl.java b/src/main/java/com/glxp/api/service/auth/impl/InvWarehouseServiceImpl.java index c2b616865..91bff5a72 100644 --- a/src/main/java/com/glxp/api/service/auth/impl/InvWarehouseServiceImpl.java +++ b/src/main/java/com/glxp/api/service/auth/impl/InvWarehouseServiceImpl.java @@ -203,7 +203,6 @@ public class InvWarehouseServiceImpl extends ServiceImpl { BasicExportStatusEntity findByData(String idDatas, Integer status); diff --git a/src/main/java/com/glxp/api/service/sync/HeartService.java b/src/main/java/com/glxp/api/service/sync/HeartService.java index 7af006ff4..c5e3f3bb7 100644 --- a/src/main/java/com/glxp/api/service/sync/HeartService.java +++ b/src/main/java/com/glxp/api/service/sync/HeartService.java @@ -3,6 +3,7 @@ package com.glxp.api.service.sync; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; @@ -36,6 +37,7 @@ import com.glxp.api.service.inout.*; import com.glxp.api.service.thrsys.*; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.DateUtil; +import com.glxp.api.util.JsonUtils; import com.glxp.api.util.RedisUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -50,6 +52,9 @@ import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; import java.util.*; import java.util.function.Function; @@ -129,9 +134,9 @@ public class HeartService { spsSyncOrderResponse.setTaskId(basicExportStatusEntity1.getId()); BaseResponse baseResponse1 = spGetHttp.postAllOrder(spsSyncOrderResponse); if (baseResponse1.getCode() == 20000) { - basicExportStatusEntity1.setStatus(ConstantStatus.SYNC_STATUS_SUCCESS); + basicExportStatusEntity1.setStatus(2); } else { - basicExportStatusEntity1.setStatus(ConstantStatus.SYNC_STATUS_FAIL); + basicExportStatusEntity1.setStatus(1); } basicExportStatusEntity1.setEndTime(new Date()); basicExportTimeService.insertExportStatus(basicExportStatusTimeEntity); @@ -422,7 +427,7 @@ public class HeartService { if (needExec(info.getUdiCodeLost())) { Map map; if (syncTime == null) { - map = basicExportStatusTimeInfo(now, BasicExportStatusTimeEnum.BASIC_PRODUCTS); + map = basicExportStatusTimeInfo(now, BasicExportStatusTimeEnum.IO_CODE_LOST); } else { map = syncTimeMap; } @@ -463,6 +468,28 @@ public class HeartService { return dataResponse; } + + private String writeFile(String filePath, String fileDesc, String content) throws IOException { + filePath = String.format("%s/%s", filePath, DateUtil.getDate()); + String fileFullPath = String.format("%s/%s-%s.udi", filePath, fileDesc, IdUtil.fastSimpleUUID()); + File file = new File(filePath); + if (!file.exists()) { + file.mkdirs(); + } + file = new File(fileFullPath); + while (!file.createNewFile()) { + fileFullPath = String.format("%s/%s/%s-%s.udi", filePath, DateUtil.getDate(), fileDesc, IdUtil.fastSimpleUUID()); + file = new File(fileFullPath); + } + + FileWriter fileWriter = new FileWriter(file); + fileWriter.write(content); + fileWriter.flush(); + fileWriter.close(); + return fileFullPath; + } + + private final IBasicBussinessTypeService bussinessTypeService; private final IBasicBusTypeChangeService busTypeChangeService; private final IThrBusTypeOriginService thrBusTypeOriginService; diff --git a/src/main/java/com/glxp/api/service/sync/impl/BasicExportServiceImpl.java b/src/main/java/com/glxp/api/service/sync/impl/BasicExportServiceImpl.java index 5cfd22f23..74f0f2525 100644 --- a/src/main/java/com/glxp/api/service/sync/impl/BasicExportServiceImpl.java +++ b/src/main/java/com/glxp/api/service/sync/impl/BasicExportServiceImpl.java @@ -1,6 +1,7 @@ package com.glxp.api.service.sync.impl; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.sync.BasicExportDao; import com.glxp.api.entity.sync.BasicExportStatusEntity; @@ -15,7 +16,7 @@ import java.util.List; @Service @Transactional(rollbackFor = Exception.class) -public class BasicExportServiceImpl implements BasicExportService { +public class BasicExportServiceImpl extends ServiceImpl implements BasicExportService { @Resource BasicExportDao basicExportDao; @@ -55,12 +56,12 @@ public class BasicExportServiceImpl implements BasicExportService { } @Override - public boolean updateExportStatus(BasicExportStatusEntity basicExportStatusEntity) { - return basicExportDao.updateExportStatus(basicExportStatusEntity); + public boolean deleteByTime() { + return basicExportDao.deleteByTime(); } @Override - public boolean deleteByTime() { - return basicExportDao.deleteByTime(); + public boolean updateExportStatus(BasicExportStatusEntity basicExportStatusEntity) { + return basicExportDao.updateExportStatus(basicExportStatusEntity); } } diff --git a/src/main/resources/mybatis/mapper/auth/InvSpaceDao.xml b/src/main/resources/mybatis/mapper/auth/InvSpaceDao.xml index 951a85e72..7847c6588 100644 --- a/src/main/resources/mybatis/mapper/auth/InvSpaceDao.xml +++ b/src/main/resources/mybatis/mapper/auth/InvSpaceDao.xml @@ -293,7 +293,7 @@ - select * from auth_space @@ -408,4 +408,4 @@ - \ No newline at end of file + diff --git a/src/main/resources/mybatis/mapper/sync/BasicExportTimeDao.xml b/src/main/resources/mybatis/mapper/sync/BasicExportTimeDao.xml index 794dde2b0..b798a1865 100644 --- a/src/main/resources/mybatis/mapper/sync/BasicExportTimeDao.xml +++ b/src/main/resources/mybatis/mapper/sync/BasicExportTimeDao.xml @@ -17,7 +17,7 @@ - replace INTO basic_export_status_time(`key`, lastUpdateTime, remark)