feat:手动上传药品处方单据

dev_fifo_z
chenhc 6 months ago
parent 7458c4e250
commit 7adc9d681e

@ -66,4 +66,7 @@ public interface RedissonCacheKey {
String XML_UPLOAD="xml_upload";
String XLSX_UPLOAD="xlsx_upload";
}

@ -8,9 +8,12 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageInfo;
import com.glxp.api.annotation.CusRedissonAnnotation;
import com.glxp.api.annotation.RepeatSubmit;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.RedissonCacheKey;
import com.glxp.api.constant.WorkOperType;
import com.glxp.api.controller.BaseController;
import com.glxp.api.entity.basic.BasicSkPrescribeEntity;
@ -42,10 +45,8 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.*;
@ -523,6 +524,14 @@ public class IoCollectOrderController extends BaseController {
return ResultVOUtils.success();
}
@RepeatSubmit()
@CusRedissonAnnotation(cacheName = RedissonCacheKey.XLSX_UPLOAD, key = {"#uuid"}, timeOutMsg = "系统正在处理,请勿重复上传")
@PostMapping("/udiwms/collect/order/xlsxUpload")
public BaseResponse xlsxUpload(@RequestParam("uuid") String uuid, @RequestParam("file") MultipartFile file) {
collectOrderService.xlsxUpload(file);
return ResultVOUtils.successMsg("上传成功!");
}
/**
*
*

@ -0,0 +1,340 @@
package com.glxp.api.req.collect;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
public class IoCollectOrderUploadVo {
/**
*
*/
@TableField(value = "orderId")
@ApiModelProperty(value = "本单据号")
@ExcelProperty("本单据号")
@ColumnWidth(30)
private String orderId;
/**
*
*/
@TableField(value = "billNo")
@ApiModelProperty(value = "原始单据号")
@ExcelProperty("原始单据号")
@ColumnWidth(30)
private String billNo;
/**
*
*/
@TableField(value = "busType")
@ApiModelProperty(value = "单据类型")
@ExcelProperty("单据类型")
@ColumnWidth(30)
private String busType;
/**
*
*/
@TableField(value = "fromType")
@ApiModelProperty(value = "来源业务")
@ExcelProperty("来源业务")
@ColumnWidth(30)
private String fromType;
/**
*
*/
@TableField(value = "fromTypeDesc")
@ApiModelProperty(value = "来源业务说明")
@ExcelProperty("来源业务说明")
@ColumnWidth(30)
private String fromTypeDesc;
/**
*
*/
@TableField(value = "localFromCorp")
@ApiModelProperty(value = "本系统往来单位编码")
@ExcelProperty("本系统往来单位编码")
@ColumnWidth(30)
private String localFromCorp;
/**
*
*/
@TableField(value = "fromCorp")
@ApiModelProperty(value = "往来信息")
@ExcelProperty("往来信息")
@ColumnWidth(30)
private String fromCorp;
/**
*
*/
@TableField(value = "fromCorpName")
@ApiModelProperty(value = "往来信息名称")
@ExcelProperty("往来信息名称")
@ColumnWidth(30)
private String fromCorpName;
/**
*
*/
@TableField(value = "billTime")
@ApiModelProperty(value = "单据时间")
@ExcelProperty("单据时间")
@ColumnWidth(30)
private Date billTime;
/**
*
*/
@TableField(value = "createTime")
@ApiModelProperty(value = "创建时间")
@ExcelProperty("创建时间")
@ColumnWidth(30)
private Date createTime;
/**
*
*/
@TableField(value = "collectTime")
@ApiModelProperty(value = "采集时间")
@ExcelProperty("采集时间")
@ColumnWidth(30)
private Date collectTime;
/**
*
*/
@TableField(value = "workPlaceCode")
@ApiModelProperty(value = "工位编码")
@ExcelProperty("工位编码")
@ColumnWidth(30)
private Long workPlaceCode;
/**
*
*/
@TableField(value = "remark")
@ApiModelProperty(value = "备注")
@ExcelProperty("备注")
@ColumnWidth(30)
private String remark;
/**
*
*/
@TableField(value = "`createUser`")
@ApiModelProperty(value = "创建人")
@ExcelProperty("创建人")
@ColumnWidth(30)
private String createUser;
/**
*
*/
@TableField(value = "updateTime")
@ApiModelProperty(value = "更新时间")
@ExcelProperty("更新时间")
@ColumnWidth(30)
private Date updateTime;
/**
*
*/
@TableField(value = "finishTime")
@ApiModelProperty(value = "完成时间")
@ExcelProperty("完成时间")
@ColumnWidth(30)
private Date finishTime;
/**
*
*/
@TableField(value = "draftTime")
@ApiModelProperty(value = "单据挂起时间")
@ExcelProperty("单据挂起时间")
@ColumnWidth(30)
private Date draftTime;
/**
*
*/
@TableField(value = "updateUser")
@ApiModelProperty(value = "更新人")
@ExcelProperty("更新人")
@ColumnWidth(30)
private Long updateUser;
/**
* 0:1:234,-1:稿5
*/
@TableField(value = "tagStatus")
@ExcelProperty("赋码状态")
@ColumnWidth(30)
private Integer tagStatus;
/**
* 012,3.
*/
@TableField(value = "splitStatus")
@ExcelProperty("拆零状态")
@ColumnWidth(30)
private Integer splitStatus;
/**
*
*/
@TableField(value = "splitMsg")
@ExcelProperty("拆零异常信息")
@ColumnWidth(30)
private String splitMsg;
/**
*
*/
@TableField(value = "tagMsg")
@ExcelProperty("处方赋码信息")
@ColumnWidth(30)
private String tagMsg;
/**
* 1:; 2:使
*/
@TableField(value = "orderCirType")
@ExcelProperty("单据流通方式")
@ColumnWidth(30)
private Integer orderCirType;
/**
* 1
*/
@TableField(value = "backupOrderRemark1")
@ApiModelProperty(value = "单据备注1")
@ExcelProperty("单据备注1")
@ColumnWidth(30)
private String backupOrderRemark1;
/**
* 2
*/
@TableField(value = "backupOrderRemark2")
@ApiModelProperty(value = "单据备注2")
@ExcelProperty("单据备注2")
@ColumnWidth(30)
private String backupOrderRemark2;
/**
* 3
*/
@TableField(value = "backupOrderRemark3")
@ApiModelProperty(value = "单据备注3")
@ExcelProperty("单据备注3")
@ColumnWidth(30)
private String backupOrderRemark3;
/**
* 4
*/
@TableField(value = "backupOrderRemark4")
@ApiModelProperty(value = "单据备注4")
@ExcelProperty("单据备注4")
@ColumnWidth(30)
private String backupOrderRemark4;
/**
* 5
*/
@TableField(value = "backupOrderRemark5")
@ApiModelProperty(value = "单据备注5")
@ExcelProperty("单据备注5")
@ColumnWidth(30)
private String backupOrderRemark5;
/**
* 6
*/
@TableField(value = "backupOrderRemark6")
@ApiModelProperty(value = "单据备注6")
@ExcelProperty("单据备注6")
@ColumnWidth(30)
private String backupOrderRemark6;
/**
*
*/
@TableField(value = "orderTime")
@ApiModelProperty(value = "排序时间")
@ExcelProperty("排序时间")
@ColumnWidth(30)
private Date orderTime;
/**
* 1:; 2:3:
*/
@TableField(value = "invAlert")
@ExcelProperty("库存预警")
@ColumnWidth(30)
private Integer invAlert;
/**
*
*/
@TableField(value = "errorMsg")
@ExcelProperty("异常信息")
@ColumnWidth(30)
private String errorMsg;
/**
* (1.,2.,3.)
*/
@TableField(value = "uploadStatus")
@ExcelProperty("上传状态")
@ColumnWidth(30)
private Integer uploadStatus;
/**
*
*/
@TableField(value = "uploadError")
@ExcelProperty("上传错误信息")
@ColumnWidth(30)
private String uploadError;
@TableField(value = "shipper")
@ApiModelProperty(value = "发货方编码")
@ExcelProperty("发货方编码")
@ColumnWidth(30)
private String shipper;
@TableField(value = "shipperName")
@ApiModelProperty(value = "发货方名称")
@ExcelProperty("发货方名称")
@ColumnWidth(30)
private String shipperName;
@TableField(value = "thrBusType")
@ApiModelProperty(value = "第三方单据类型编码")
@ExcelProperty("第三方单据类型编码")
@ColumnWidth(30)
private String thrBusType;
}

@ -2,10 +2,14 @@ package com.glxp.api.service.collect;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@ -39,6 +43,7 @@ import com.glxp.api.http.sync.SpGetHttpClient;
import com.glxp.api.req.basic.FilterUdiRelRequest;
import com.glxp.api.req.collect.CollectOrderBizRequest;
import com.glxp.api.req.collect.CollectOrderRequest;
import com.glxp.api.req.collect.IoCollectOrderUploadVo;
import com.glxp.api.req.collect.PostCollectOrderRequest;
import com.glxp.api.req.inout.*;
import com.glxp.api.res.PageSimpleResponse;
@ -56,6 +61,7 @@ import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.auth.DeptService;
import com.glxp.api.service.auth.SysWorkplaceService;
import com.glxp.api.service.basic.*;
import com.glxp.api.service.collect.down.ThrOrderDownload;
import com.glxp.api.service.inout.*;
import com.glxp.api.service.inout.impl.IoCodeService;
import com.glxp.api.service.sync.HeartService;
@ -69,8 +75,11 @@ import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@ -132,6 +141,10 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC
@Resource
SpGetHttpClient spGetHttpClient;
@Resource
DownloadFactory downloadFactory;
@Resource
ThrOrderDownload thrOrderDownload;
public IoCollectOrder getByBillNo(String billNo) {
@ -1087,4 +1100,67 @@ public class IoCollectOrderService extends ServiceImpl<IoCollectOrderMapper, IoC
}
public void xlsxUpload(MultipartFile file) {
try {
String fileName = file.getOriginalFilename();
String suffix = FileUtil.getSuffix(fileName);
if (!"xlsx".equals(suffix)) {
throw new JsonException("仅支持.xlsx文件类型错误" + suffix);
}
if (file.getSize() > 5 * 1024 * 1024) {
throw new JsonException("上传文件超过5M");
}
} catch (Exception e) {
throw new JsonException("上传失败:" + e.getMessage());
}
List<IoCollectOrder> list = getList(file);
if (CollUtil.isEmpty(list)) {
throw new JsonException("文件数据为空");
}
if (CollUtil.isNotEmpty(list)) {
CollectOrderRequest collectOrderRequest = new CollectOrderRequest();
collectOrderRequest.setBusType("YPCF002");
collectOrderRequest.setCreateUser(String.valueOf(customerService.getUserId()));
collectOrderRequest.setWorkPlaceCode(null);
thrOrderDownload.importThrOrder(list, collectOrderRequest);
}
}
public List<IoCollectOrder> getList(MultipartFile file) {
List<IoCollectOrder> entities = new ArrayList<>();
try (InputStream inputStream = file.getInputStream()) {
EasyExcel.read(inputStream, IoCollectOrderUploadVo.class, new AnalysisEventListener<IoCollectOrderUploadVo>() {
@Override
public void invoke(IoCollectOrderUploadVo data, AnalysisContext context) {
// 每次读取到一行数据,都会调用这个方法
IoCollectOrder ioCollectOrder = new IoCollectOrder();
BeanUtils.copyProperties(data,ioCollectOrder);
entities.add(ioCollectOrder);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 所有数据解析完成后的操作,可以在这里进行后续处理
// 比如:保存数据到数据库
}
// 可以选择性地覆盖其他方法,比如处理表头、异常等
}).sheet().doRead();
} catch (IOException e) {
e.printStackTrace();
}
return entities;
}
}

Loading…
Cancel
Save