diff --git a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java index 7c3d9a4a5..1e50eb4ff 100644 --- a/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java +++ b/src/main/java/com/glxp/api/controller/collect/IoCollectOrderController.java @@ -20,14 +20,12 @@ import com.glxp.api.entity.basic.BasicSkPrescribeEntity; import com.glxp.api.entity.basic.SysWorkplaceDocumentEntity; import com.glxp.api.entity.collect.*; import com.glxp.api.entity.dev.DeviceCheckDetailItemEntity; +import com.glxp.api.entity.inout.ExcelVO; import com.glxp.api.exception.JsonException; import com.glxp.api.req.basic.BasicCollectUserRequest; import com.glxp.api.req.basic.PrescribeBindWorkRequest; import com.glxp.api.req.basic.WorkBindBusTypeRequest; -import com.glxp.api.req.collect.CollectOrderBindWorkRequest; -import com.glxp.api.req.collect.CollectOrderBizRequest; -import com.glxp.api.req.collect.CollectOrderRequest; -import com.glxp.api.req.collect.CollectOrderSaveRequest; +import com.glxp.api.req.collect.*; import com.glxp.api.req.system.DeleteRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.SysWorkplaceDocumentResponse; @@ -38,7 +36,10 @@ import com.glxp.api.res.collect.IoCollectOrderResponse; import com.glxp.api.service.basic.BasicCollectUserService; import com.glxp.api.service.basic.SysWorkplaceDocumentService; import com.glxp.api.service.collect.*; +import com.glxp.api.service.inout.ExcelService; import com.glxp.api.service.inout.IoSplitCodeService; +import com.glxp.api.util.Excel.ExcelHandler; +import com.glxp.api.util.Excel.Exception.RenException; import com.glxp.api.util.IntUtil; import com.glxp.api.util.MsDateUtil; import org.springframework.beans.BeanUtils; @@ -49,6 +50,7 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import java.util.*; import java.util.stream.Collectors; @@ -532,6 +534,25 @@ public class IoCollectOrderController extends BaseController { collectOrderService.xlsxUpload(file); return ResultVOUtils.successMsg("上传成功!"); } + + @Resource + ExcelHandler excelHandler; + + /** + * excel导出-单个sheet + * + * @param response 响应流 + */ + @GetMapping("/udiwms/collect/order/excelExportOut") + public void export(HttpServletResponse response) { + try { + List excelVOS = new ArrayList<>(); + excelHandler.exportExcel(response, excelVOS, VA010Mx.class, "手动上传药品处方单模板", "sheet1"); + } catch (Exception e) { + throw new RenException("导出失败"); + } + } + /** * 置顶 * diff --git a/src/main/java/com/glxp/api/req/collect/VA010Mx.java b/src/main/java/com/glxp/api/req/collect/VA010Mx.java new file mode 100644 index 000000000..c088e44cd --- /dev/null +++ b/src/main/java/com/glxp/api/req/collect/VA010Mx.java @@ -0,0 +1,80 @@ +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 com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 药品处方查询-明细 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName(value = "v_a010_mx") +public class VA010Mx implements Serializable { + + @TableField(value = "CODEFK") + @ExcelProperty("本单据号") + @ColumnWidth(30) + private String codefk; + + + @TableField(value = "ITEMNAME") + @ExcelProperty("产品通用名称") + @ColumnWidth(30) + private String itemname; + + @TableField(value = "ITEMCODE") + @ExcelProperty("主系统产品编码") + @ColumnWidth(30) + private String itemcode; + + + @TableField(value = "MEASUREUNIT") + @ExcelProperty("计量单位") + @ColumnWidth(30) + private String measureunit; + + + + + @TableField(value = "COUNT") + @ExcelProperty("单据数量") + @ColumnWidth(30) + private String count; + + + @TableField(value = "HILIST_CODE") + @ExcelProperty("院内编码") + @ColumnWidth(30) + private String hiltstCode; + + @ExcelProperty("往来信息") + @ColumnWidth(30) + private String deptcode; + + + @ExcelProperty("往来信息名称") + @ColumnWidth(30) + private String sickname; + + @ExcelProperty("发货方名称") + @ColumnWidth(30) + private String deptname; + + + @ExcelProperty("单据时间") + @ColumnWidth(30) + private String prescribedate; + + @ExcelProperty("包装规格") + @ColumnWidth(30) + private String bzgg; + +} diff --git a/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java b/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java index 786071737..0fc4b9b26 100644 --- a/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java +++ b/src/main/java/com/glxp/api/service/collect/IoCollectOrderService.java @@ -24,6 +24,7 @@ import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.constant.ConstantType; +import com.glxp.api.dao.basic.UdiRelevanceDao; import com.glxp.api.dao.collect.IoCollectOrderMapper; import com.glxp.api.dao.inout.IoCodeTempDao; import com.glxp.api.entity.auth.AuthAdmin; @@ -41,10 +42,7 @@ import com.glxp.api.http.ErpBasicClient; import com.glxp.api.http.HttpOkClient; 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.collect.*; import com.glxp.api.req.inout.*; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.basic.BasicSkPrescribeResponse; @@ -80,6 +78,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.IOException; import java.io.InputStream; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -145,6 +145,8 @@ public class IoCollectOrderService extends ServiceImpl list = getList(file); - if (CollUtil.isEmpty(list)) { + List a010details = this.getList(file); + if (CollUtil.isEmpty(a010details)) { throw new JsonException("文件数据为空"); } - if (CollUtil.isNotEmpty(list)) { - CollectOrderRequest collectOrderRequest = new CollectOrderRequest(); + Map> detailsMap = a010details.stream() + .collect(Collectors.groupingBy(VA010Mx::getCodefk)); + + + List ioCollectOrders = new ArrayList<>(); + Map> finalDetailsMap = detailsMap; + for (Map.Entry> entry : finalDetailsMap.entrySet()) { + List bizList = new ArrayList<>(); + String billNo = entry.getKey(); + List itemDetails = entry.getValue(); + VA010Mx item = itemDetails.get(0); + + StringBuilder errorMsg = new StringBuilder(); + IoCollectOrder ioCollectOrder = new IoCollectOrder(); + ioCollectOrder.setBillNo(item.getCodefk()); + ioCollectOrder.setFromType("HIS系统"); + ioCollectOrder.setFromCorp(item.getDeptcode()); + ioCollectOrder.setWorkPlaceCode(null); + ioCollectOrder.setFromCorpName(item.getSickname()); + ioCollectOrder.setShipperName(item.getDeptname()); + ioCollectOrder.setBusType("YPCF002"); + Date date = null; + try { + date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(item.getPrescribedate()); + } catch (ParseException e) { + + } + ioCollectOrder.setBillTime(date); + ioCollectOrder.setCreateTime(new Date()); + ioCollectOrder.setCreateUser(String.valueOf(customerService.getUserId())); + ioCollectOrder.setBackupOrderRemark1(item.getCodefk()); + ioCollectOrder.setUpdateTime(new Date()); + ioCollectOrder.setSplitStatus(0); + ioCollectOrder.setTagStatus(0); + + if (CollUtil.isNotEmpty(itemDetails)) { + itemDetails.forEach(entity -> { + IoCollectOrderBiz collectOrderBiz = new IoCollectOrderBiz(); + BeanUtils.copyProperties(entity, collectOrderBiz); + + List basicUdirelEntities = udiRelevanceDao.selectList(new LambdaQueryWrapper().eq(UdiRelevanceEntity::getMainId, entity.getItemcode())); + if (CollUtil.isNotEmpty(basicUdirelEntities)) { + UdiRelevanceEntity basicUdirelEntity = basicUdirelEntities.get(0); + collectOrderBiz.setRelId(basicUdirelEntity.getId()); + } else { + errorMsg.append(entity.getItemname()).append("字典未对照").append(";"); + } + collectOrderBiz.setGgxh(entity.getBzgg()); + collectOrderBiz.setMeasureUnit(entity.getMeasureunit()); + collectOrderBiz.setCount(IntUtil.value(entity.getCount())); + collectOrderBiz.setThrCode(entity.getHiltstCode()); + collectOrderBiz.setYbbm(entity.getHiltstCode()); + collectOrderBiz.setCpmctymc(entity.getItemname()); + collectOrderBiz.setOrderIdFk(ioCollectOrder.getBillNo()); + collectOrderBiz.setNameCode(entity.getHiltstCode()); + collectOrderBiz.setTagStatus(1); + collectOrderBiz.setUnTagCount(0); + bizList.add(collectOrderBiz); + }); + + } + if (StrUtil.isNotBlank(errorMsg)) { + ioCollectOrder.setErrorMsg(errorMsg.toString()); + ioCollectOrder.setTagStatus(4); + } + ioCollectOrder.setBizList(this.summarizeByCode(bizList)); + ioCollectOrders.add(ioCollectOrder); + + } + + if (CollUtil.isNotEmpty(ioCollectOrders)){ + CollectOrderRequest collectOrderRequest = new CollectOrderRequest(); collectOrderRequest.setBusType("YPCF002"); collectOrderRequest.setCreateUser(String.valueOf(customerService.getUserId())); collectOrderRequest.setWorkPlaceCode(null); - - thrOrderDownload.importThrOrder(list, collectOrderRequest); + thrOrderDownload.importThrOrder(ioCollectOrders, collectOrderRequest); } - } + } - public List getList(MultipartFile file) { - List entities = new ArrayList<>(); + public List getList(MultipartFile file) { + List entities = new ArrayList<>(); try (InputStream inputStream = file.getInputStream()) { - EasyExcel.read(inputStream, IoCollectOrderUploadVo.class, new AnalysisEventListener() { + EasyExcel.read(inputStream, VA010Mx.class, new AnalysisEventListener() { @Override - public void invoke(IoCollectOrderUploadVo data, AnalysisContext context) { - // 每次读取到一行数据,都会调用这个方法 - IoCollectOrder ioCollectOrder = new IoCollectOrder(); - BeanUtils.copyProperties(data,ioCollectOrder); - entities.add(ioCollectOrder); + public void invoke(VA010Mx data, AnalysisContext context) { + entities.add(data); } @Override @@ -1163,4 +1231,21 @@ public class IoCollectOrderService extends ServiceImpl summarizeByCode(List bizList) { + Map summarizedMap = new HashMap<>(); + + for (IoCollectOrderBiz biz : bizList) { + String code = biz.getThrCode(); + + if (summarizedMap.containsKey(code)) { + IoCollectOrderBiz existingBiz = summarizedMap.get(code); + existingBiz.setCount(existingBiz.getCount() + biz.getCount()); + } else { + summarizedMap.put(code, biz); + } + } + + return new ArrayList<>(summarizedMap.values()); + } }