嘉禾二期

master
sunjianxi 2 years ago
parent d2b47aa260
commit ae6f643fd1
  1. 5
      lab-auth/src/main/java/org/springblade/auth/AuthApplication.java
  2. 4
      lab-common/src/main/java/org/springblade/common/launch/LauncherServiceImpl.java
  3. 5
      lab-gateway/src/main/java/org/springblade/gateway/GateWayApplication.java
  4. 5
      lab-ops/lab-resource/src/main/java/org/springblade/resource/ResourceApplication.java
  5. 14
      lab-service-api/lab-capital-api/src/main/java/org/springblade/lims/goods/entity/Goods.java
  6. 12
      lab-service-api/lab-dict-api/src/main/java/org/springblade/system/enums/DictBizEnum.java
  7. 64
      lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/Excel/InstrumentExcel.java
  8. 185
      lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/PurchaseApply.java
  9. 108
      lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/PurchaseCheck.java
  10. 81
      lab-service-api/lab-lims-api/src/main/java/org/springblade/lims/entry/PurchaseOrder.java
  11. 10
      lab-service-api/lab-user-api/src/main/java/org/springblade/system/user/feign/IUserClient.java
  12. 5
      lab-service/lab-capital/src/main/java/org/springblade/lims/CapitalApplication.java
  13. 8
      lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/ApplyController.java
  14. 54
      lab-service/lab-capital/src/main/java/org/springblade/lims/goods/controller/GoodsController.java
  15. 8
      lab-service/lab-capital/src/main/java/org/springblade/lims/goods/service/IGoodsService.java
  16. 67
      lab-service/lab-capital/src/main/java/org/springblade/lims/goods/service/impl/GoodsServiceImpl.java
  17. 7
      lab-service/lab-file/src/main/java/org/springblade/file/FileApplication.java
  18. 5
      lab-service/lab-lims/src/main/java/org/springblade/lims/LimsApplication.java
  19. 156
      lab-service/lab-lims/src/main/java/org/springblade/lims/controller/InstrumentController.java
  20. 62
      lab-service/lab-lims/src/main/java/org/springblade/lims/controller/PurchaseApplyController.java
  21. 106
      lab-service/lab-lims/src/main/java/org/springblade/lims/controller/PurchaseCheckController.java
  22. 67
      lab-service/lab-lims/src/main/java/org/springblade/lims/controller/PurchaseOrderController.java
  23. 15
      lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/PurchaseApplyMapper.java
  24. 15
      lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/PurchaseCheckMapper.java
  25. 15
      lab-service/lab-lims/src/main/java/org/springblade/lims/mapper/PurchaseOrderMapper.java
  26. 20
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/IPurchaseApplyService.java
  27. 27
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/IPurchaseCheckService.java
  28. 22
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/IPurchaseOrderService.java
  29. 121
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/PurchaseApplyServiceImpl.java
  30. 153
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/PurchaseCheckServiceImpl.java
  31. 78
      lab-service/lab-lims/src/main/java/org/springblade/lims/service/impl/PurchaseOrderServiceImpl.java
  32. 5
      lab-service/lab-system/src/main/java/org/springblade/system/SystemApplication.java
  33. 5
      lab-service/lab-user/src/main/java/org/springblade/system/user/UserApplication.java
  34. 8
      lab-service/lab-user/src/main/java/org/springblade/system/user/feign/UserClient.java

@ -18,6 +18,11 @@ public class AuthApplication {
public static void main(String[] args) {
BladeApplication.run(AppConstant.APPLICATION_AUTH_NAME, AuthApplication.class, args);
System.out.println("==============================");
System.out.println("==============================");
System.out.println("===========Auth启动成功!=======");
System.out.println("==============================");
System.out.println("==============================");
}
}

@ -24,8 +24,8 @@ public class LauncherServiceImpl implements LauncherService {
// PropsUtil.setProperty(props, "spring.cloud.nacos.config.server-addr", LauncherConstant.nacosAddr(profile));
// PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.namespace", "44debeab-5f49-41b6-a664-2f0a33825f8f");
// PropsUtil.setProperty(props, "spring.cloud.nacos.config.namespace", "44debeab-5f49-41b6-a664-2f0a33825f8f");
PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.namespace", "e9bcb975-a8b3-43d1-812f-8408ce571137");
PropsUtil.setProperty(props, "spring.cloud.nacos.config.namespace", "e9bcb975-a8b3-43d1-812f-8408ce571137");
PropsUtil.setProperty(props, "spring.cloud.nacos.discovery.namespace", "e9bcb975-a8b3-43d1-812f-8408ce571136");
PropsUtil.setProperty(props, "spring.cloud.nacos.config.namespace", "e9bcb975-a8b3-43d1-812f-8408ce571136");
// PropsUtil.setProperty(props, "spring.cloud.sentinel.transport.dashboard", LauncherConstant.sentinelAddr(profile));
// PropsUtil.setProperty(props, "spring.zipkin.base-url", LauncherConstant.zipkinAddr(profile));
PropsUtil.setProperty(props, "spring.datasource.dynamic.enabled", "false");

@ -19,6 +19,11 @@ public class GateWayApplication {
public static void main(String[] args) {
BladeApplication.run(AppConstant.APPLICATION_GATEWAY_NAME, GateWayApplication.class, args);
System.out.println("==============================");
System.out.println("==============================");
System.out.println("========Gateway启动成功!=======");
System.out.println("==============================");
System.out.println("==============================");
}
}

@ -17,6 +17,11 @@ public class ResourceApplication {
public static void main(String[] args) {
BladeApplication.run(AppConstant.APPLICATION_RESOURCE_NAME, ResourceApplication.class, args);
System.out.println("==============================");
System.out.println("==============================");
System.out.println("========Resource启动成功!======");
System.out.println("==============================");
System.out.println("==============================");
}
}

@ -12,7 +12,6 @@ import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.lims.capital.entity.ProductStoreDetial;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@ -114,4 +113,17 @@ public class Goods extends BaseEntity {
// 出库数量
@TableField(exist = false)
private Integer outNum;
@ApiModelProperty(value = "附件链接")
private String attach;
@ApiModelProperty(value = "附件名称")
private String attachName;
@ApiModelProperty(value = "库存上限")
private Integer warnNumUpper;
@ApiModelProperty(value = "库存下限")
private Integer warnNumLower;
}

@ -88,7 +88,17 @@ public enum DictBizEnum {
/**
* 样品处理方式
*/
SAMPLE_HANDLING("sample_handling")
SAMPLE_HANDLING("sample_handling"),
/**
* 设备名称
*/
INSTRUMENT("instrument"),
/**
* 仪器设备管理状态
*/
EQUIP_STATUS("equip_status"),
;

@ -0,0 +1,64 @@
package org.springblade.lims.Excel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* @author sjx
*/
@Data
public class InstrumentExcel implements Serializable {
private static final long serialVersionUID = 1L;
@ExcelProperty("仪器/设备编号")
private String code;
@ExcelProperty("仪器/设备名称")
private String name;
@ExcelProperty("仪器/设备类型(实验设备、存贮仪器、计算仪器)")
private String type;
@ExcelProperty("型号")
private String model;
@ExcelProperty("出厂日期")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date productionDate;
@ExcelProperty("启用日期")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date enableDate;
@ExcelProperty("存放地点")
private String storagePlace;
@ExcelProperty("保管人")
private String saveByName;
@ExcelProperty("生产厂家及品牌")
private String manufacturerBrand;
@ExcelProperty("购置时间")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date purchaseTime;
@ExcelProperty("是否需要检定(是、否)")
private String isVerification;
@ExcelProperty("报废年限")
private Integer scrapYears;
@ExcelProperty("状态(正常、维修中、报废申请中、已报废)")
private String instrumentStatus;
}

@ -0,0 +1,185 @@
package org.springblade.lims.entry;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
import org.springframework.data.annotation.Id;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* @author sjx
* @date 2023年11月27日15:34:17
*/
@Data
@TableName("t_purchase_apply")
public class PurchaseApply extends BaseEntity implements Serializable {
/**
* 业务主键
*/
@Id
private Long id;
/**
* 业务编号
*/
private String businessCode;
/**
* 流程
*/
private String procId;
/**
* 业务名称
*/
private String name;
/**
* 申请状态
*/
private String applyStatus;
/**
* 申请部门
*/
private String applyOrgId;
/**
* 采购人
*/
private String purchaseUserId;
/**
* 供应商
*/
private String supplierId;
/**
* 采购说明
*/
private String applyContent;
/**
* 采购日期
*/
private String applyDate;
/**
* 到货时间
*/
@DateTimeFormat(
pattern = "yyyy-MM-dd"
)
@JsonFormat(
pattern = "yyyy-MM-dd"
)
private Date expectedArrivalDate;
/**
* 验收单
*/
private String checkId;
/**
* 验收情况
*/
private String assetCheck;
/**
* 备注
*/
private String notes;
/**
* 附件
*/
private String attach;
/**
* 制单人
*/
private String originatorId;
/**
* 租户
*/
private String tenantId;
/**
* 变更类型
*/
private String chsType;
/**
* 变更状态
*/
private String chsStatus;
/**
* 变更版本号
*/
private String chsVersion;
/**
* 变更ID
*/
private String changeInstanceId;
/**
* 流程概要
*/
private String summary;
/**
* 最后审批人账户ID
*/
private String latestApproverId;
/**
* 最后审批人姓名
*/
private String latestApproverName;
/**
* 下一节点审批人
*/
private String nextApproverIds;
/**
* 下一个审批节点审批人姓名用逗号隔开
*/
private String nextApproverNames;
/**
* 审批意见
*/
private String approvalOpinion;
/**
* 采购日期开始
*/
@TableField(exist = false)
private String applyDateBegin;
/**
* 采购日期结束
*/
@TableField(exist = false)
private String applyDateEnd;
/**
* 采购清单list
*/
@TableField(exist = false)
private List<PurchaseOrder> orderList;
}

@ -0,0 +1,108 @@
package org.springblade.lims.entry;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
import org.springframework.data.annotation.Id;
import java.io.Serializable;
/**
* @author sjx
* @date 2023年11月27日15:34:17
*/
@Data
@TableName("t_purchase_check")
public class PurchaseCheck extends BaseEntity implements Serializable {
/**
* 业务主键
*/
@Id
private Long id;
/**
* 业务编号
*/
private String businessCode;
/**
* 名称
*/
private String name;
/**
* 采购申请
*/
private String applyId;
/**
* 供应商
*/
private String supplierId;
/**
* 验收人
*/
private String checkUserName;
/**
* 到货日期
*/
private String receiveDate;
/**
* 验收时间
*/
private String checkDate;
/**
* 验收信息
*/
private String checkInformation;
/**
* 备注
*/
private String notes;
/**
* 附件
*/
private String attach;
/**
* 附件名称
*/
private String attachName;
/**
* 制单人
*/
private String originatorId;
/**
* 到货日期开始
*/
@TableField(exist = false)
private String receiveDateBegin;
/**
* 到货日期结束
*/
@TableField(exist = false)
private String receiveDateEnd;
/**
* 验收时间开始
*/
@TableField(exist = false)
private String checkDateBegin;
/**
* 验收时间结束
*/
@TableField(exist = false)
private String checkDateEnd;
}

@ -0,0 +1,81 @@
package org.springblade.lims.entry;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springblade.core.mp.base.BaseEntity;
import org.springframework.data.annotation.Id;
import java.io.Serializable;
/**
* @author sjx
* @date 2023年11月27日15:34:17
*/
@Data
@TableName("t_purchase_order")
public class PurchaseOrder extends BaseEntity implements Serializable {
/**
* 业务主键
*/
@Id
private Long id;
/**
* 物品编码
*/
private String code;
/**
* 物品名称
*/
private String name;
/**
* 物品档案
*/
private String goodsId;
/**
* 物品类型
*/
private String goodsType;
/**
* 存放类型
*/
private String storageType;
/**
* 采购数量
*/
private Integer purchaseNumber;
/**
* 采购单价
*/
private Double unitPrice;
/**
* 备注
*/
private String notes;
/**
* 采购单
*/
private String applyId;
/**
* 验收单
*/
private String checkId;
/**
* 制单人
*/
private String originatorId;
}

@ -37,6 +37,7 @@ public interface IUserClient {
String SELECT_USER_LIST = API_PREFIX + "/user-list";
String SELECT_ID_BY_ROLEIDS = API_PREFIX + "/select-id-by-roleids";
String USER_INFO_BY_NAME = API_PREFIX + "/user-name";
String FIND_BY_NAME = API_PREFIX + "/find-by-name";
/**
@ -141,4 +142,13 @@ public interface IUserClient {
*/
@GetMapping(USER_INFO_BY_NAME)
R<User> userInfoByName(@RequestParam("tenantId")String tenantId,@RequestParam("userName") String userName);
/**
* 获取用户信息
* @param userName 用户
* @return
*/
@GetMapping(FIND_BY_NAME)
R<User> findByName(@RequestParam("userName") String userName);
}

@ -16,6 +16,11 @@ public class CapitalApplication {
public static void main(String[] args) {
BladeApplication.run(LauncherConstant.APPLICATION_CAPITAL_NAME, CapitalApplication.class, args);
System.out.println("==============================");
System.out.println("==============================");
System.out.println("========Capital启动成功!=======");
System.out.println("==============================");
System.out.println("==============================");
}
}

@ -211,7 +211,7 @@ public class ApplyController extends BladeController {
goodsService.updateById(goods);
}
// 扣批次数量
String batchNum = applyDetail.getBatchNum();
/*String batchNum = applyDetail.getBatchNum();
if (batchNum != null && !"".equals(batchNum)) {
String[] split = batchNum.split(",");
for (String s : split) {
@ -224,7 +224,7 @@ public class ApplyController extends BladeController {
productStoreDetial.setNum(i);
productStoreDetialService.updateById(productStoreDetial);
}
}
}*/
}
applyDetailService.saveBatch(detailList);
}
@ -419,7 +419,7 @@ public class ApplyController extends BladeController {
if (detail.getOutNum() != null && detail.getReturnNum() != null) {
detail.setNeedReturnNum(detail.getOutNum() - detail.getReturnNum());
// 批次号及其数量
/*// 批次号及其数量
String[] split = detail.getBatchNum().split(":");
// 条件查询对应的物品详情
@ -429,7 +429,7 @@ public class ApplyController extends BladeController {
ProductStoreDetial productStoreDetial = productStoreDetialService.getOne(queryWrapper);
// 过期时间
detail.setBeyondTime(productStoreDetial.getBeyondTime());
detail.setBeyondTime(productStoreDetial.getBeyondTime());*/
}
}
apply1.setDetailList(applyDetails);

@ -11,7 +11,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import org.apache.commons.lang.math.RandomUtils;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springblade.core.boot.ctrl.BladeController;
@ -20,18 +22,19 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.BeanUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.lims.capital.entity.*;
import org.springblade.lims.capital.excel.ApplyDetailExcel;
import org.springblade.lims.capital.excel.DetailExcel;
import org.springblade.core.tool.utils.*;
import org.springblade.lims.capital.entity.GoodsCheckLog;
import org.springblade.lims.capital.entity.ProductClass;
import org.springblade.lims.capital.entity.ProductStoreDetial;
import org.springblade.lims.capital.excel.GoodsExcel;
import org.springblade.lims.capital.excel.InAndOutExcel;
import org.springblade.lims.capital.service.IGoodsCheckLogService;
import org.springblade.lims.capital.service.IProductClassService;
import org.springblade.lims.capital.service.IProductStoreDetialService;
import org.springblade.lims.goods.entity.*;
import org.springblade.lims.goods.entity.ApplyDetail;
import org.springblade.lims.goods.entity.Goods;
import org.springblade.lims.goods.entity.InAndOutRecord;
import org.springblade.lims.goods.entity.Report;
import org.springblade.lims.goods.service.IApplyDetailService;
import org.springblade.lims.goods.service.IApplyService;
import org.springblade.lims.goods.service.IGoodsService;
@ -43,9 +46,15 @@ import org.springblade.system.enums.DictBizEnum;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
@ -80,6 +89,8 @@ public class GoodsController extends BladeController {
private final IApplyService applyService;
private final HttpServletResponse response;
//物品列表 分页
@GetMapping("/list")
public IPage<Goods> list(Goods goods, Query query) {
@ -938,4 +949,33 @@ public class GoodsController extends BladeController {
return map;
}
/**
* 上传文件
*/
@PostMapping("/uploadFile")
public R<Map<String,String>> uploadFile(@RequestParam MultipartFile file) {
return R.data(goodsService.uploadFile(file));
}
@SneakyThrows
@GetMapping("/download/{id}")
@ApiOperationSupport(order = 0)
@ApiOperation(value = "下载文件", notes = "下载文件")
public void download(@ApiParam(value = "下载的文件id", required = true) @Valid @NotNull @PathVariable("id") Long id) {
Goods entry = goodsService.getById(id);
String fileName = entry.getAttachName();
// 查询
InputStream inputStream = goodsService.getInputStreamById(id);
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding(Charsets.UTF_8.name());
if (fileName != null) {
fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name());
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
}
ServletOutputStream outputStream = response.getOutputStream();
IoUtil.copy(inputStream, outputStream);
IoUtil.closeQuietly(inputStream);
IoUtil.closeQuietly(outputStream);
}
}

@ -2,12 +2,16 @@ package org.springblade.lims.goods.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.support.Query;
import org.springblade.lims.goods.entity.Goods;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.io.InputStream;
import java.util.Map;
public interface IGoodsService extends BaseService<Goods> {
IPage<Goods> listByPnum(Goods goods,IPage<Goods> page);
Map<String,String> uploadFile(MultipartFile file);
InputStream getInputStreamById(Long id);
}

@ -1,28 +1,25 @@
package org.springblade.lims.goods.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.lims.capital.entity.ProductStoreDetial;
import org.springblade.lims.capital.service.IGoodsCheckLogService;
import org.springblade.lims.capital.service.IProductStoreDetialService;
import org.springblade.lims.goods.entity.ApplyDetail;
import org.springblade.lims.goods.entity.Goods;
import org.springblade.lims.goods.mapper.GoodsMapper;
import org.springblade.lims.goods.service.IApplyDetailService;
import org.springblade.lims.goods.service.IApplyService;
import org.springblade.lims.goods.service.IGoodsService;
import org.springblade.system.user.feign.IUserClient;
import org.springblade.system.feign.ISysClient;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.text.SimpleDateFormat;
import java.util.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
* 物品表 服务实现类
@ -31,8 +28,50 @@ import java.util.*;
@AllArgsConstructor
public class GoodsServiceImpl extends BaseServiceImpl<GoodsMapper, Goods> implements IGoodsService {
private final GoodsMapper goodsMapper;
private final ISysClient sysClient;
@Override
public IPage<Goods> listByPnum(Goods goods, IPage<Goods> page) {
return goodsMapper.listByPnum(goods, page);
}
@Override
public Map<String, String> uploadFile(MultipartFile file) {
Map<String,String> map = new HashMap<>();
String fileName = "";
String path = "";
String originalFilename = "";
if (file != null) {
originalFilename = file.getOriginalFilename();
String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
fileName = UUID.randomUUID().toString() + fileSuffix;
path = sysClient.getParamValue("jiahe").getData() + fileName;
FileOutputStream fout;
try {
fout = new FileOutputStream(path);
fout.write(file.getBytes());
fout.close();
} catch (Exception e) {
e.printStackTrace();
}
}
map.put("filename",originalFilename);
map.put("path",path);
return map;
}
@Override
@SneakyThrows
public InputStream getInputStreamById(Long id) {
Goods entry = this.getById(id);
InputStream inputStream;
File file = new File(entry.getAttach());
if (file.exists()) {
inputStream = new FileInputStream(file);
} else {
inputStream = new ClassPathResource("FileNotFound.xlsx").getInputStream();
}
return inputStream;
}
}

@ -1,10 +1,8 @@
package org.springblade.file;
import org.springblade.common.constant.LauncherConstant;
import org.springblade.core.cloud.feign.EnableBladeFeign;
import org.springblade.core.launch.BladeApplication;
import org.springblade.core.launch.constant.AppConstant;
import org.springframework.cloud.client.SpringCloudApplication;
/**
@ -18,6 +16,11 @@ public class FileApplication {
public static void main(String[] args) {
BladeApplication.run("blade-file", FileApplication.class, args);
System.out.println("==============================");
System.out.println("==============================");
System.out.println("========File启动成功!==========");
System.out.println("==============================");
System.out.println("==============================");
}
}

@ -18,6 +18,11 @@ public class LimsApplication {
public static void main(String[] args) {
BladeApplication.run(LauncherConstant.APPLICATION_LIMS_NAME, LimsApplication.class, args);
System.out.println("==============================");
System.out.println("==============================");
System.out.println("===========Lims启动成功!=======");
System.out.println("==============================");
System.out.println("==============================");
}

@ -3,32 +3,39 @@ package org.springblade.lims.controller;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.models.auth.In;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.base.BaseEntity;
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.BeanUtil;
import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.ObjectUtil;
import org.springblade.file.entity.EquipVerification;
import org.springblade.file.fegin.IEquipVerificationClient;
import org.springblade.lims.ao.CommonAo;
import org.springblade.lims.entry.*;
import org.springblade.lims.service.*;
import org.springblade.lims.Excel.InstrumentExcel;
import org.springblade.lims.entry.Instrument;
import org.springblade.lims.service.IInstrumentService;
import org.springblade.system.cache.DictBizCache;
import org.springblade.system.cache.DictCache;
import org.springblade.system.enums.DictBizEnum;
import org.springblade.system.enums.DictEnum;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.feign.IUserClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
@ -154,4 +161,137 @@ public class InstrumentController extends BladeController {
return R.data(map);
}
}
/**
* 导出模板
*/
@GetMapping("importTmplate")
@ApiOperationSupport(order = 8)
@ApiOperation(value = "设备导入模板")
public void importTmplate(HttpServletResponse response) {
List<InstrumentExcel> list = new ArrayList<>();
ExcelUtil.export(response, "仪器设备导入模板", "仪器设备管理", list, InstrumentExcel.class);
}
/**
* 批量导入设备数据
*/
@PostMapping("/import")
public R Import(MultipartFile file) throws Exception {
List<InstrumentExcel> excelList = ExcelUtil.read(file, InstrumentExcel.class);
List<Instrument> list = new ArrayList<>();
StringBuilder builder = new StringBuilder();
StringBuilder builder1 = new StringBuilder();
StringBuilder builder2 = new StringBuilder();
int success = 0;
int fail = 0;
if (excelList != null && excelList.size() > 0) {
//非空校验
builder = checkExcel(excelList);
if(builder.length() > 0){
return R.data(builder);
}
for (InstrumentExcel instrumentExcel : excelList) {
//验证仪器/设备编号是否重复
LambdaQueryWrapper<Instrument> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Instrument::getCode,instrumentExcel.getCode());
wrapper.eq(BaseEntity::getIsDeleted,0);
Instrument oldInstrument = service.getOne(wrapper);
if(ObjectUtil.isNotEmpty(oldInstrument)){
builder1.append(oldInstrument.getCode()).append(",");
fail++;
continue;
}
//构建实体类
Instrument instrument = new Instrument();
//根据保管人名称查询保管人id
R<User> user = userClient.findByName(instrumentExcel.getSaveByName());
if(user.getData().getId() == null){
builder2.append(instrument.getCode()).append(",");
fail++;
continue;
}
instrument.setCode(instrumentExcel.getCode());
instrument.setName(instrumentExcel.getName());
instrument.setType(DictBizCache.getKey(DictBizEnum.INSTRUMENT.getName(), instrumentExcel.getType()));
instrument.setModel(instrumentExcel.getModel());
instrument.setProductionDate(instrumentExcel.getProductionDate());
instrument.setEnableDate(instrumentExcel.getEnableDate());
instrument.setStoragePlace(instrumentExcel.getStoragePlace());
instrument.setSaveByName(instrumentExcel.getSaveByName());
instrument.setSaveById(user.getData().getId());
instrument.setManufacturerBrand(instrumentExcel.getManufacturerBrand());
instrument.setPurchaseTime(instrumentExcel.getPurchaseTime());
instrument.setIsVerification(DictCache.getKey(DictEnum.YES_NO.getName(), instrumentExcel.getType()));
instrument.setScrapYears(instrumentExcel.getScrapYears());
instrument.setInstrumentStatus(DictBizCache.getKey(DictBizEnum.EQUIP_STATUS.getName(), instrumentExcel.getInstrumentStatus()));
success++;
list.add(instrument);
}
}
service.saveBatch(list);
builder = builder.append("导入成功").append(success).append("条,失败").append(fail).append("条。");
if(builder1.length() > 0){
builder = builder.append("设备编码重复:").append(builder1.substring(0,builder1.length()-1)).append(";");
}
if(builder2.length() > 0){
builder = builder.append("未查询到保管人:").append(builder2.substring(0,builder2.length()-1)).append(";");
}
return R.data(builder);
}
/**
* 导出模板
*/
@GetMapping("export")
@ApiOperationSupport(order = 14)
@ApiOperation(value = "导出仪器设备")
public void export(HttpServletResponse response,@RequestParam String ids) {
String[] strIds = ids.split(",");
List<Instrument> listInstrument = service.listByIds(Arrays.asList(strIds));
List<InstrumentExcel> list = BeanUtil.copy(listInstrument, InstrumentExcel.class);
list.forEach(item -> {
item.setType(DictBizCache.getValue(DictBizEnum.INSTRUMENT.getName(), item.getType()));
item.setInstrumentStatus(DictBizCache.getValue(DictBizEnum.EQUIP_STATUS.getName(), item.getInstrumentStatus()));
item.setIsVerification(DictCache.getValue(DictEnum.YES_NO.getName(), item.getIsVerification()));
});
ExcelUtil.export(response, "仪器设备管理数据", "仪器设备管理", list, InstrumentExcel.class);
}
public StringBuilder checkExcel(List<InstrumentExcel> excelList){
StringBuilder builder = new StringBuilder();
for(int i=0;i< excelList.size(); i++){
InstrumentExcel excel = excelList.get(i);
if(StringUtils.isEmpty(excel.getCode())){
builder.append("第").append(i+2).append("行仪器/设备编号不能为空;");
continue;
}
if(StringUtils.isEmpty(excel.getName())){
builder.append("第").append(i+2).append("行仪器/设备名称不能为空;");
continue;
}
if(excel.getProductionDate() == null){
builder.append("第").append(i+2).append("行出厂日期不能为空;");
continue;
}
if(excel.getEnableDate() == null){
builder.append("第").append(i+2).append("行启用日期不能为空;");
continue;
}
if(StringUtils.isEmpty(excel.getStoragePlace())){
builder.append("第").append(i+2).append("行存放地点不能为空;");
continue;
}
if(StringUtils.isEmpty(excel.getSaveByName())){
builder.append("第").append(i+2).append("行保管人不能为空;");
continue;
}
if(StringUtils.isEmpty(excel.getIsVerification())){
builder.append("第").append(i+2).append("行是否需要鉴定不能为空;");
}
}
return builder;
}
}

@ -0,0 +1,62 @@
package org.springblade.lims.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.lims.entry.PurchaseApply;
import org.springblade.lims.service.IPurchaseApplyService;
import org.springframework.web.bind.annotation.*;
/**
* @author sjx
* @date 2023年11月27日15:34:17
*/
@RestController
@AllArgsConstructor
@RequestMapping("/purchaseApply")
@Api(value = "", tags = "")
public class PurchaseApplyController extends BladeController {
private final IPurchaseApplyService service;
@GetMapping("/page")
public R<Object> page(PurchaseApply entry, Query query) {
return R.data(service.findPage(entry, query));
}
/**
* 保存申请单
*/
@PostMapping("/saveApply")
@ApiOperation(value = "保存申请单", notes = "保存申请单")
public R saveApply(@RequestBody PurchaseApply entry) {
return R.data(service.saveApply(entry));
}
/**
* 根据id查询信息
*/
@GetMapping("/getById")
@ApiOperation(value = "根据id查询信息", notes = "根据id查询信息")
public R getById(String id) {
return R.data(service.findById(id));
}
/**
* 删除
*/
@GetMapping("/deleteById")
@ApiOperation(value = "逻辑删除", notes = "传入id")
public R deleteById(@ApiParam(value = "主键集合", required = true) @RequestParam String id) {
return R.status(service.deleteLogic(Func.toLongList(id)));
}
}

@ -0,0 +1,106 @@
package org.springblade.lims.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Charsets;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.IoUtil;
import org.springblade.lims.entry.PurchaseCheck;
import org.springblade.lims.service.IPurchaseCheckService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.Map;
/**
* @author sjx
* @date 2023年11月27日15:34:17
*/
@RestController
@AllArgsConstructor
@RequestMapping("/purchaseCheck")
@Api(value = "", tags = "")
public class PurchaseCheckController extends BladeController {
private final IPurchaseCheckService service;
private final HttpServletResponse response;
@GetMapping("/page")
public R<Object> page(PurchaseCheck entry, Query query) {
return R.data(service.findPage(entry, query));
}
/**
* 保存申请单
*/
@PostMapping("/saveCheck")
@ApiOperation(value = "保存验收单", notes = "保存验收单")
public R saveApply(@RequestBody PurchaseCheck entry) {
return R.data(service.saveCheck(entry));
}
/**
* 根据id查询信息
*/
@GetMapping("/getById")
@ApiOperation(value = "根据id查询信息", notes = "根据id查询信息")
public R getById(String id) {
return R.data(service.getById(id));
}
/**
* 删除
*/
@GetMapping("/deleteById")
@ApiOperation(value = "逻辑删除", notes = "传入id")
public R deleteById(@ApiParam(value = "主键集合", required = true) @RequestParam String id) {
return R.status(service.deleteLogic(Func.toLongList(id)));
}
/**
* 上传文件
*/
@PostMapping("/uploadFile")
public R<Map<String,String>> uploadFile(@RequestParam MultipartFile file) {
return R.data(service.uploadFile(file));
}
@SneakyThrows
@GetMapping("/download/{id}")
@ApiOperationSupport(order = 0)
@ApiOperation(value = "下载文件", notes = "下载文件")
public void download(@ApiParam(value = "下载的文件id", required = true) @Valid @NotNull @PathVariable("id") Long id) {
PurchaseCheck entry = service.getById(id);
String fileName = entry.getAttachName();
// 查询
InputStream inputStream = service.getInputStreamById(id);
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding(Charsets.UTF_8.name());
if (fileName != null) {
fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name());
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
}
ServletOutputStream outputStream = response.getOutputStream();
IoUtil.copy(inputStream, outputStream);
IoUtil.closeQuietly(inputStream);
IoUtil.closeQuietly(outputStream);
}
}

@ -0,0 +1,67 @@
package org.springblade.lims.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.lims.entry.PurchaseOrder;
import org.springblade.lims.service.IPurchaseOrderService;
import org.springframework.web.bind.annotation.*;
/**
* @author sjx
* @date 2023年11月27日15:34:17
*/
@RestController
@AllArgsConstructor
@RequestMapping("/purchaseOrder")
@Api(value = "", tags = "")
public class PurchaseOrderController extends BladeController {
private final IPurchaseOrderService service;
@GetMapping("/page")
public R<Object> page(PurchaseOrder entry, Query query) {
return R.data(service.findPage(entry, query));
}
@GetMapping("/findLIst")
public R<Object> findLIst(PurchaseOrder entry, Query query) {
return R.data(service.findList(entry));
}
/**
* 保存申请单
*/
@PostMapping("/saveOrder")
@ApiOperation(value = "保存采购清单", notes = "保存采购清单")
public R saveOrder(@RequestBody PurchaseOrder entry) {
return R.data(service.saveOrder(entry));
}
/**
* 根据id查询信息
*/
@GetMapping("/ById")
@ApiOperation(value = "根据id查询信息", notes = "根据id查询信息")
public R getById(String id) {
return R.data(service.getById(id));
}
/**
* 删除
*/
@GetMapping("/deleteById")
@ApiOperation(value = "逻辑删除", notes = "传入id")
public R deleteById(@ApiParam(value = "主键集合", required = true) @RequestParam String id) {
return R.status(service.deleteLogic(Func.toLongList(id)));
}
}

@ -0,0 +1,15 @@
package org.springblade.lims.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.lims.entry.PurchaseApply;
/**
*
*
* @author sjx
* @since 2023年11月27日15:47:39
*/
public interface PurchaseApplyMapper extends BaseMapper<PurchaseApply> {
}

@ -0,0 +1,15 @@
package org.springblade.lims.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.lims.entry.PurchaseCheck;
/**
*
*
* @author sjx
* @since 2023年11月27日15:47:39
*/
public interface PurchaseCheckMapper extends BaseMapper<PurchaseCheck> {
}

@ -0,0 +1,15 @@
package org.springblade.lims.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.lims.entry.PurchaseOrder;
/**
*
*
* @author sjx
* @since 2023年11月27日15:47:39
*/
public interface PurchaseOrderMapper extends BaseMapper<PurchaseOrder> {
}

@ -0,0 +1,20 @@
package org.springblade.lims.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.support.Query;
import org.springblade.lims.entry.PurchaseApply;
/**
* @author sjx
* @date 2023年11月27日15:34:17
*/
public interface IPurchaseApplyService extends BaseService<PurchaseApply> {
IPage<PurchaseApply> findPage(PurchaseApply entry, Query query);
boolean saveApply(PurchaseApply entry);
PurchaseApply findById(String id);
}

@ -0,0 +1,27 @@
package org.springblade.lims.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.support.Query;
import org.springblade.lims.entry.PurchaseCheck;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.Map;
/**
* @author sjx
* @date 2023年11月27日15:34:17
*/
public interface IPurchaseCheckService extends BaseService<PurchaseCheck> {
IPage<PurchaseCheck> findPage(PurchaseCheck entry, Query query);
boolean saveCheck(PurchaseCheck entry);
Map<String,String> uploadFile(MultipartFile file);
InputStream getInputStreamById(Long id);
}

@ -0,0 +1,22 @@
package org.springblade.lims.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.mp.support.Query;
import org.springblade.lims.entry.PurchaseOrder;
import java.util.List;
/**
* @author sjx
* @date 2023年11月27日15:34:17
*/
public interface IPurchaseOrderService extends BaseService<PurchaseOrder> {
IPage<PurchaseOrder> findPage(PurchaseOrder entry, Query query);
List<PurchaseOrder> findList(PurchaseOrder entry);
boolean saveOrder(PurchaseOrder entry);
}

@ -0,0 +1,121 @@
package org.springblade.lims.service.impl;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.lims.entry.PurchaseApply;
import org.springblade.lims.entry.PurchaseOrder;
import org.springblade.lims.mapper.PurchaseApplyMapper;
import org.springblade.lims.service.IPurchaseApplyService;
import org.springblade.lims.service.IPurchaseOrderService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
*
* @author swj
* @since 2022年6月2日15:53:01
*/
@Service
@AllArgsConstructor
public class PurchaseApplyServiceImpl extends BaseServiceImpl<PurchaseApplyMapper, PurchaseApply> implements IPurchaseApplyService {
private final IPurchaseOrderService purchaseOrderService;
@Override
public IPage<PurchaseApply> findPage(PurchaseApply entry, Query query) {
LambdaQueryWrapper<PurchaseApply> wrapper = new LambdaQueryWrapper<>();
if(entry.getApplyStatus() != null){
wrapper.eq(PurchaseApply::getApplyStatus,entry.getApplyStatus());
}
if(StringUtils.isNotBlank(entry.getSupplierId())){
wrapper.eq(PurchaseApply::getSupplierId,entry.getSupplierId());
}
if(StringUtils.isNotBlank(entry.getBusinessCode())){
wrapper.eq(PurchaseApply::getBusinessCode,entry.getBusinessCode());
}
if(StringUtils.isNotBlank(entry.getName())){
wrapper.eq(PurchaseApply::getName,entry.getName());
}
if(StringUtils.isNotBlank(entry.getAssetCheck())){
wrapper.eq(PurchaseApply::getAssetCheck,entry.getAssetCheck());
}
if(StringUtils.isNotBlank(entry.getApplyDateBegin())){
wrapper.ge(PurchaseApply::getApplyDate,entry.getApplyDateBegin());
}
if(StringUtils.isNotBlank(entry.getApplyDateEnd())){
wrapper.le(PurchaseApply::getApplyDate,entry.getApplyDateEnd());
}
wrapper.eq(BaseEntity::getIsDeleted,0);
wrapper.orderByDesc(PurchaseApply::getCreateTime);
IPage<PurchaseApply> page = this.page(Condition.getPage(query), wrapper);
return page;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveApply(PurchaseApply entry) {
Date date = new Date();
if(entry.getId() == null){
entry.setCreateUser(AuthUtil.getUserId());
entry.setCreateTime(date);
entry.setBusinessCode("CGSQ"+ DateFormatUtils.format(date,"yyyyMMddhhmmss")+ StringUtil.randomUUID().substring(0,5));
entry.setOriginatorId(AuthUtil.getUserId().toString());
entry.setAssetCheck("0");
baseMapper.insert(entry);
}else{
entry.setUpdateUser(AuthUtil.getUserId());
entry.setUpdateTime(date);
baseMapper.updateById(entry);
}
//保存id到采购清单
if("0".equals(entry.getApplyStatus()) || "1".equals(entry.getApplyStatus())){
if(CollectionUtil.isNotEmpty(entry.getOrderList())){
//采购清单全删全增
PurchaseOrder oldOrder = new PurchaseOrder();
oldOrder.setApplyId(entry.getId().toString());
List<PurchaseOrder> oldOrderList = purchaseOrderService.findList(oldOrder);
if(CollectionUtil.isNotEmpty(oldOrderList)){
for(PurchaseOrder order : oldOrderList){
purchaseOrderService.removeById(order.getId());
}
}
for(PurchaseOrder order : entry.getOrderList()){
order.setId(null);
order.setApplyId(entry.getId().toString());
order.setUpdateUser(AuthUtil.getUserId());
order.setUpdateTime(date);
purchaseOrderService.save(order);
}
}
}
return true;
}
@Override
public PurchaseApply findById(String id) {
PurchaseApply entry = this.getById(id);
//根据id查询对应采购清单
LambdaQueryWrapper<PurchaseOrder> orderQueryWrapper = new LambdaQueryWrapper<>();
orderQueryWrapper.eq(PurchaseOrder::getApplyId,entry.getId());
orderQueryWrapper.eq(BaseEntity::getIsDeleted,0);
List<PurchaseOrder> orderList = purchaseOrderService.list(orderQueryWrapper);
entry.setOrderList(orderList);
return entry;
}
}

@ -0,0 +1,153 @@
package org.springblade.lims.service.impl;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.lims.entry.PurchaseApply;
import org.springblade.lims.entry.PurchaseCheck;
import org.springblade.lims.mapper.PurchaseCheckMapper;
import org.springblade.lims.service.IPurchaseApplyService;
import org.springblade.lims.service.IPurchaseCheckService;
import org.springblade.system.feign.ISysClient;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/**
*
* @author swj
* @since 2022年6月2日15:53:01
*/
@Service
@AllArgsConstructor
public class PurchaseCheckServiceImpl extends BaseServiceImpl<PurchaseCheckMapper, PurchaseCheck> implements IPurchaseCheckService {
private final ISysClient sysClient;
private final IPurchaseApplyService purchaseApplyService;
@Override
public IPage<PurchaseCheck> findPage(PurchaseCheck entry, Query query) {
LambdaQueryWrapper<PurchaseCheck> wrapper = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(entry.getBusinessCode())){
wrapper.eq(PurchaseCheck::getBusinessCode,entry.getBusinessCode());
}
if(StringUtils.isNotBlank(entry.getName())){
wrapper.like(PurchaseCheck::getName,entry.getName());
}
if(StringUtils.isNotBlank(entry.getCheckUserName())){
wrapper.eq(PurchaseCheck::getCheckUserName,entry.getCheckUserName());
}
if(StringUtils.isNotBlank(entry.getCheckUserName())){
wrapper.eq(PurchaseCheck::getCheckUserName,entry.getCheckUserName());
}
if(StringUtils.isNotBlank(entry.getReceiveDateBegin())){
wrapper.ge(PurchaseCheck::getReceiveDate,entry.getReceiveDateBegin());
}
if(StringUtils.isNotBlank(entry.getReceiveDateEnd())){
wrapper.le(PurchaseCheck::getReceiveDate,entry.getReceiveDateEnd());
}
if(StringUtils.isNotBlank(entry.getCheckDateBegin())){
wrapper.ge(PurchaseCheck::getCheckDate,entry.getCheckDateBegin());
}
if(StringUtils.isNotBlank(entry.getCheckDateEnd())){
wrapper.le(PurchaseCheck::getCheckDate,entry.getCheckDateEnd());
}
wrapper.eq(BaseEntity::getIsDeleted,0);
wrapper.orderByDesc(PurchaseCheck::getCreateTime);
IPage<PurchaseCheck> page = this.page(Condition.getPage(query), wrapper);
return page;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveCheck(PurchaseCheck entry) {
Date date = new Date();
entry.setBusinessCode("CGYS"+ DateFormatUtils.format(date,"yyyyMMddhhmmss")+ StringUtil.randomUUID().substring(0,5));
entry.setCreateUser(AuthUtil.getUserId());
entry.setCreateTime(date);
entry.setOriginatorId(AuthUtil.getUserId().toString());
baseMapper.insert(entry);
//根据采购申请id更新采购申请单
LambdaQueryWrapper<PurchaseApply> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(PurchaseApply::getId,entry.getApplyId());
wrapper.eq(BaseEntity::getIsDeleted,0);
PurchaseApply apply = purchaseApplyService.getOne(wrapper);
apply.setApplyStatus("4");
apply.setCheckId(entry.getId().toString());
apply.setAssetCheck("1");
purchaseApplyService.updateById(apply);
return true;
}
@Override
public Map<String,String> uploadFile(MultipartFile file) {
Map<String,String> map = new HashMap<>();
String fileName = "";
String path = "";
String originalFilename = "";
if (file != null) {
originalFilename = file.getOriginalFilename();
String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
fileName = UUID.randomUUID().toString() + fileSuffix;
path = sysClient.getParamValue("jiahe").getData() + fileName;
FileOutputStream fout;
try {
fout = new FileOutputStream(path);
fout.write(file.getBytes());
fout.close();
} catch (Exception e) {
e.printStackTrace();
}
}
map.put("filename",originalFilename);
map.put("path",path);
return map;
}
@Override
@SneakyThrows
public InputStream getInputStreamById(Long id) {
PurchaseCheck entry = this.getById(id);
InputStream inputStream;
File file = new File(entry.getAttach());
if (file.exists()) {
inputStream = new FileInputStream(file);
} else {
inputStream = new ClassPathResource("FileNotFound.xlsx").getInputStream();
}
return inputStream;
}
}

@ -0,0 +1,78 @@
package org.springblade.lims.service.impl;
import com.alibaba.nacos.common.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.base.BaseEntity;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.lims.entry.PurchaseOrder;
import org.springblade.lims.mapper.PurchaseOrderMapper;
import org.springblade.lims.service.IPurchaseOrderService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
*
* @author swj
* @since 2022年6月2日15:53:01
*/
@Service
@AllArgsConstructor
public class PurchaseOrderServiceImpl extends BaseServiceImpl<PurchaseOrderMapper, PurchaseOrder> implements IPurchaseOrderService {
@Override
public IPage<PurchaseOrder> findPage(PurchaseOrder entry, Query query) {
LambdaQueryWrapper<PurchaseOrder> wrapper = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(entry.getName())){
wrapper.like(PurchaseOrder::getName,entry.getName());
}
wrapper.eq(BaseEntity::getIsDeleted,0);
wrapper.orderByDesc(PurchaseOrder::getCreateTime);
IPage<PurchaseOrder> page = this.page(Condition.getPage(query), wrapper);
return page;
}
@Override
public List<PurchaseOrder> findList(PurchaseOrder entry) {
LambdaQueryWrapper<PurchaseOrder> wrapper = new LambdaQueryWrapper<>();
if(StringUtils.isNotBlank(entry.getName())){
wrapper.like(PurchaseOrder::getName,entry.getName());
}
if(StringUtils.isNotBlank(entry.getApplyId())){
wrapper.like(PurchaseOrder::getApplyId,entry.getApplyId());
}
wrapper.eq(BaseEntity::getIsDeleted,0);
wrapper.orderByDesc(PurchaseOrder::getCreateTime);
List<PurchaseOrder> list = this.list(wrapper);
return list;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveOrder(PurchaseOrder entry) {
Date date = new Date();
if(entry.getId() == null){
entry.setCreateUser(AuthUtil.getUserId());
entry.setCreateTime(date);
entry.setOriginatorId(AuthUtil.getUserId().toString());
baseMapper.insert(entry);
}else{
entry.setUpdateUser(AuthUtil.getUserId());
entry.setUpdateTime(date);
baseMapper.updateById(entry);
}
return true;
}
}

@ -16,6 +16,11 @@ public class SystemApplication {
public static void main(String[] args) {
BladeApplication.run(AppConstant.APPLICATION_SYSTEM_NAME, SystemApplication.class, args);
System.out.println("==============================");
System.out.println("==============================");
System.out.println("========System启动成功!========");
System.out.println("==============================");
System.out.println("==============================");
}
}

@ -19,6 +19,11 @@ public class UserApplication {
public static void main(String[] args) {
BladeApplication.run(AppConstant.APPLICATION_USER_NAME, UserApplication.class, args);
System.out.println("==============================");
System.out.println("==============================");
System.out.println("========User启动成功!==========");
System.out.println("==============================");
System.out.println("==============================");
}
}

@ -6,7 +6,6 @@ import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.system.entity.Dept;
import org.springblade.system.feign.ISysClient;
import org.springblade.system.user.entity.User;
import org.springblade.system.user.entity.UserInfo;
@ -18,7 +17,6 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
@ -101,4 +99,10 @@ public class UserClient implements IUserClient {
return R.data(user);
}
@Override
@GetMapping(FIND_BY_NAME)
public R<User> findByName(String userName) {
User user = service.getOne(Wrappers.<User>query().lambda().eq(User::getName,userName));
return R.data(user);
}
}

Loading…
Cancel
Save