XiaoRuby
2023-07-27 ad7151b14f2721b0fa40a903c6e65a2c511dd4c5
LIMS管理系统框架-开发7-27第二次标准库完成修改
已修改38个文件
已添加3个文件
781 ■■■■ 文件已修改
framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionMaterialListController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/EquipmentPointController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/InstrumentController.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/EquipmentPointMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MetricalInformationMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Instrument.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInformation.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/EquipmentPointService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MetricalInformationService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/EquipmentPointServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MetricalInformationServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/resources/mapper/EquipmentPointMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory-server/src/main/resources/mapper/MetricalInformationMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/controller/MaterialController.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/controller/ProductController.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/controller/SpecificationsController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/controller/StandardController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/MaterialMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/ProductMapper.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Material.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Specifications.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Standard.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/AddMaterialDto.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/AddSpecifications.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/AddStandardDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/service/MaterialService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/service/ProductService.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/service/SpecificationsService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/service/StandardService.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java 117 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ProductServiceImpl.java 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/SpecificationsServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/StandardServiceImpl.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/resources/mapper/MaterialMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
standard-server/src/main/resources/mapper/ProductMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java
@@ -14,13 +14,18 @@
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.jdbc.BadSqlGrammarException;
import org.springframework.validation.ObjectError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.multipart.MultipartException;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.BindException;
import java.sql.SQLException;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@@ -191,6 +196,16 @@
        return Result.fail("抱歉不支持【" + e.getMessage() +"】后缀的文件!");
    }
    /**
     * å‚数检验
     */
    @ExceptionHandler({MethodArgumentNotValidException.class})
    public Result<?> methodArgumentNotValidException(MethodArgumentNotValidException e) {
        List<ObjectError> allErrors = e.getBindingResult().getAllErrors();
        String message = allErrors.stream().map(s -> s.getDefaultMessage()).collect(Collectors.joining(";"));
        return Result.fail(message);
    }
    /** å…¶ä»–错误 */
    @ExceptionHandler({Exception.class})
    public Result<?> exception(Exception e) {
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionController.java
@@ -8,6 +8,7 @@
import com.yuanchu.limslaboratory.pojo.Product;
import com.yuanchu.limslaboratory.service.*;
import com.yuanchu.limslaboratory.utils.JackSonUtil;
import com.yuanchu.limslaboratory.utils.MyUtil;
import com.yuanchu.limslaboratory.utils.RedisUtil;
import com.yuanchu.limslaboratory.vo.Result;
import io.swagger.annotations.*;
@@ -80,11 +81,12 @@
    @ApiOperation("查询物料信息")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "pageSize", value = "页数", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "countSize", value = "条数/页", dataTypeClass = Integer.class, required = true)
            @ApiImplicitParam(name = "countSize", value = "条数/页", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "type", value = "类型", dataTypeClass = Integer.class, required = true)
    })
    @GetMapping("/selectMaterialLimit")
    public Result selectMaterialLimit(int pageSize, int countSize) {
        return Result.success(materialService.selectMaterialLimit(pageSize, countSize));
    public Result selectMaterialLimit(int pageSize, int countSize, int type) {
        return Result.success(materialService.selectMaterialLimit(pageSize, countSize, type));
    }
    @ApiOperation("选择物料信息")
inspection-server/src/main/java/com/yuanchu/limslaboratory/controller/InspectionMaterialListController.java
@@ -1,6 +1,7 @@
package com.yuanchu.limslaboratory.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yuanchu.limslaboratory.pojo.InspectionMaterialList;
import com.yuanchu.limslaboratory.service.InspectionMaterialListService;
import com.yuanchu.limslaboratory.utils.JackSonUtil;
@@ -50,11 +51,11 @@
    @ApiOperation("根据Id查询样品信息")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "inspectionMaterialListId", value = "样品ID", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "inspectionId", value = "样品ID", dataTypeClass = String.class, required = true),
    })
    @PutMapping("/selectInspectionMaterialListById/{inspectionMaterialListId}")
    public Result selectInspectionMaterialListById(@PathVariable Integer inspectionMaterialListId) {
        return Result.success(inspectionMaterialListService.getById(inspectionMaterialListId));
    @GetMapping("/selectInspectionMaterialListById/{inspectionId}")
    public Result selectInspectionMaterialListById(@PathVariable String inspectionId) {
        return Result.success(inspectionMaterialListService.list(new QueryWrapper<InspectionMaterialList>().eq("inspection_id", inspectionId).eq("state", 1)));
    }
    @ApiOperation("根据样品id修改样品信息")
laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/EquipmentPointController.java
@@ -17,6 +17,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -51,10 +52,13 @@
        return Result.fail("添加【"+ equipmentPoint.getEquipmentPointName() +"】失败!设备码点编码重复!");
    }
    @ApiOperation("查询所有设备码点数据")
    @ApiOperation("根据仪器Id查询对应设备码点数据")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "InstrumentId", value = "仪器模块Id", dataTypeClass = String.class, required = true)
    })
    @GetMapping("/list")
    public Result<?> getListEquipmentPointInformation() {
        List<Map<String, Object>> list = equipmentPointService.getListEquipmentPointInformation();
    public Result<?> getListEquipmentPointInformation(String InstrumentId) {
        List<Map<String, Object>> list = equipmentPointService.getListEquipmentPointInformation(InstrumentId);
        return Result.success(list);
    }
laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/InstrumentController.java
@@ -1,9 +1,25 @@
package com.yuanchu.limslaboratory.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.pojo.Instrument;
import com.yuanchu.limslaboratory.pojo.dto.UpdateInstrumentDto;
import com.yuanchu.limslaboratory.service.InstrumentService;
import com.yuanchu.limslaboratory.service.UserService;
import com.yuanchu.limslaboratory.utils.JackSonUtil;
import com.yuanchu.limslaboratory.utils.RedisUtil;
import com.yuanchu.limslaboratory.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
 * <p>
@@ -13,8 +29,91 @@
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2023-07-20
 */
@Api(tags = "实验室-->设备台账-->2、仪器模块")
@RestController
@RequestMapping("/instrument")
public class InstrumentController {
    @Autowired
    private InstrumentService instrumentService;
    @Autowired
    private UserService userService;
    @ApiOperation("添加仪器设备")
    @PostMapping("/add")
    public Result<?> addInstrumentInformation(@RequestHeader("X-Token") String token, @RequestBody Instrument instrument) throws Exception {
        Object object = RedisUtil.get(token);
        Map<String, Object> unmarshal = JackSonUtil.unmarshal(JackSonUtil.marshal(object), Map.class);
        instrument.setCreateUserId((Integer) unmarshal.get("id"));
        Integer isInsertSuccess = instrumentService.addInstrumentInformation(instrument);
        if (isInsertSuccess == 1){
            return Result.success("添加【" + instrument.getEquipmentName() + "】成功!");
        }
        return Result.fail("仪器设备编号重复,添加【" + instrument.getEquipmentName() + "】失败! ");
    }
    @ApiOperation("根据分类Id:分页列表展示")
    @GetMapping("/list")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "classifyId", value = "分类Id", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "pageNo", value = "起始页", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "pageSize", value = "每一页数量", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "conditions", value = "查询状态:默认全部", dataTypeClass = Integer.class),
            @ApiImplicitParam(name = "whetherWhether", value = "是否已过期", dataTypeClass = Boolean.class),
            @ApiImplicitParam(name = "numberOrNameOrSpecifications", value = "编号/设备名称/规格型号", dataTypeClass = String.class)
    })
    public Result<?> getListInstrumentInformation(Integer pageNo,
                                                  Integer pageSize,
                                                  Integer conditions,
                                                  Integer classifyId,
                                                  Boolean whetherWhether,
                                                  String numberOrNameOrSpecifications) {
        IPage<Map<String, Object>> pageList = instrumentService.getListInstrumentInformation(conditions, whetherWhether, numberOrNameOrSpecifications,
                classifyId, new Page<Objects>(pageNo, pageSize));
        Map<String, Object> map = new HashMap<>();
        map.put("row", pageList.getRecords());
        map.put("total", pageList.getTotal());
        return Result.success(map);
    }
    @ApiOperation("删除仪器数据")
    @DeleteMapping("/delete")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "instrumentId", value = "仪器Id", dataTypeClass = String.class, required = true)
    })
    public Result<?> deleteInstrumentInformation(String instrumentId) {
        Boolean isDeleteSuccess = instrumentService.deleteInstrumentInformation(instrumentId);
        if (isDeleteSuccess){
            return Result.success("删除仪器成功!");
        }
        return Result.fail("删除仪器失败!");
    }
    @ApiOperation("添加仪器时保管人下拉框数据")
    @GetMapping("/get_user")
    public Result<?> getMapUserInformation() {
        return Result.success(userService.getUserNameAndId());
    }
    @ApiOperation("根据仪器Id获取信息用于编辑")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "InstrumentId", value = "分类Id", dataTypeClass = Integer.class, required = true)
    })
    @GetMapping("/get_instrument")
    public Result<?> getIdInstrumentInformation(Integer InstrumentId) {
        Instrument idInstrumentInformation = instrumentService.getIdInstrumentInformation(InstrumentId);
        return Result.success(idInstrumentInformation);
    }
    @ApiOperation("根据仪器Id更新数据")
    @PutMapping("/update")
    public Result<?> updateEquipmentPointInformation(@RequestBody UpdateInstrumentDto updateInstrumentDto) throws Exception {
        Instrument instrument = JackSonUtil.unmarshal(JackSonUtil.marshal(updateInstrumentDto), Instrument.class);
        Integer isUpdateSuccess = instrumentService.updateEquipmentPointInformation(instrument);
        if (isUpdateSuccess == 1){
            return Result.success("更新【" + instrument.getEquipmentName() + "】成功!");
        }
        return Result.fail("仪器设备编号重复,更新【" + instrument.getEquipmentName() + "】失败! ");
    }
}
laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/MetricalInformationController.java
@@ -1,9 +1,21 @@
package com.yuanchu.limslaboratory.controller;
import com.yuanchu.limslaboratory.pojo.MetricalInformation;
import com.yuanchu.limslaboratory.pojo.dto.UpdateMetricalInformationDto;
import com.yuanchu.limslaboratory.service.MetricalInformationService;
import com.yuanchu.limslaboratory.service.UserService;
import com.yuanchu.limslaboratory.utils.JackSonUtil;
import com.yuanchu.limslaboratory.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -13,8 +25,66 @@
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2023-07-20
 */
@Api(tags = "实验室-->设备台账-->4、计量信息")
@RestController
@RequestMapping("/metrical-information")
public class MetricalInformationController {
    @Autowired
    private MetricalInformationService metricalInformationService;
    @Autowired
    private UserService userService;
    @ApiOperation("添加计量信息")
    @PostMapping("/add")
    public Result<?> addMetricalInformation(MetricalInformation metricalInformation,
                                            @RequestPart(value = "file", required = false) MultipartFile file) {
        Integer isInsertSuccess = metricalInformationService.addEquipmentPointInformation(metricalInformation, file);
        if (isInsertSuccess == 1){
            return Result.success("添加【"+ metricalInformation.getMeasurementUnit() +"】成功!");
        }
        return Result.fail("添加【"+ metricalInformation.getMeasurementUnit() +"】失败!设备码点编码重复!");
    }
    @ApiOperation("查询所有计量信息数据")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "InstrumentId", value = "仪器模块Id", dataTypeClass = String.class, required = true)
    })
    @GetMapping("/list")
    public Result<?> getListMetricalInformation(String InstrumentId) {
        List<Map<String, Object>> list = metricalInformationService.getListEquipmentPointInformation(InstrumentId);
        return Result.success(list);
    }
    @ApiOperation("根据计量信息Id删除数据")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "metricalInformationId", value = "计量信息Id", dataTypeClass = Integer.class, required = true)
    })
    @DeleteMapping("/delete")
    public Result<?> deleteMetricalInformation(Integer metricalInformationId) {
        Integer isDeleteSuccess = metricalInformationService.deleteMetricalInformation(metricalInformationId);
        if (isDeleteSuccess == 1){
            return Result.success("删除成功!");
        }
        return Result.fail("删除失败!");
    }
    @ApiOperation("根据计量信息Id更新数据")
    @PutMapping("/update")
    public Result<?> updateMetricalInformation(UpdateMetricalInformationDto updateMetricalInformationDto,
                                                     @RequestPart(value = "file", required = false) MultipartFile file) throws Exception {
        MetricalInformation metricalInformation = JackSonUtil.unmarshal(JackSonUtil.marshal(updateMetricalInformationDto), MetricalInformation.class);
        Integer isUpdateSuccess = metricalInformationService.updateMetricalInformation(metricalInformation, file);
        if (isUpdateSuccess == 1){
            return Result.success("更新成功!");
        }
        return Result.fail("更新失败!");
    }
    @ApiOperation("添加计量信息时负责人下拉框数据")
    @GetMapping("/get_user")
    public Result<?> getMapUserInformation() {
        return Result.success(userService.getUserNameAndId());
    }
}
laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/EquipmentPointMapper.java
@@ -19,5 +19,5 @@
 */
public interface EquipmentPointMapper extends BaseMapper<EquipmentPoint> {
    List<Map<String, Object>> getListEquipmentPointInformation();
    List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId);
}
laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/MetricalInformationMapper.java
@@ -16,5 +16,5 @@
 */
public interface MetricalInformationMapper extends BaseMapper<MetricalInformation> {
    List<Map<String, Object>> getListEquipmentPointInformation();
    List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId);
}
laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/Instrument.java
@@ -11,6 +11,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * <p>
@@ -37,6 +38,9 @@
    @ApiModelProperty(value = "保管人:用户表关联Id", example = "9", required = true)
    private Integer userId;
    @ApiModelProperty(value = "保管人:用户表关联Id", hidden = true)
    private Integer createUserId;
    @ApiModelProperty(value = "仪器设备编号", example = "JSTC-W1-00001", required = true)
    private String equipmentCode;
@@ -60,10 +64,12 @@
    @ApiModelProperty(value = "到货日期", example = "2001-07-06", dataType = "date")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date arrivalDate;
    @ApiModelProperty(value = "验收日期", example = "2060-07-06", dataType = "date")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date acceptanceDate;
    @ApiModelProperty(value = "存放地", example = "地球亚洲中国江苏南通")
@@ -86,9 +92,9 @@
    @ApiModelProperty(value = "逻辑删除 æ­£å¸¸>=1,删除<=0", hidden = true)
    private Integer state;
    @JsonIgnore
    @TableField(fill = FieldFill.INSERT)
    @ApiModelProperty(value = "创建时间", hidden = true)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date createTime;
    @JsonIgnore
laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/MetricalInformation.java
@@ -35,6 +35,9 @@
    @ApiModelProperty(value = "用户关联Id", example = "7", required = true)
    private Integer userId;
    @ApiModelProperty(value = "仪器关联Id", example = "1", required = true)
    private Integer instrumentId;
    @ApiModelProperty(value = "计量单位", example = "GB", required = true)
    private String measurementUnit;
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/EquipmentPointService.java
@@ -21,7 +21,7 @@
    Integer addEquipmentPointInformation(EquipmentPoint equipmentPoint);
    List<Map<String, Object>> getListEquipmentPointInformation();
    List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId);
    Integer deleteEquipmentPointInformation(Integer equipmentPointId);
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/MetricalInformationService.java
@@ -19,7 +19,7 @@
    Integer addEquipmentPointInformation(MetricalInformation metricalInformation, MultipartFile file);
    List<Map<String, Object>> getListEquipmentPointInformation();
    List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId);
    Integer deleteMetricalInformation(Integer metricalInformationId);
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/EquipmentPointServiceImpl.java
@@ -45,8 +45,8 @@
    }
    @Override
    public List<Map<String, Object>> getListEquipmentPointInformation() {
        return equipmentPointMapper.getListEquipmentPointInformation();
    public List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId) {
        return equipmentPointMapper.getListEquipmentPointInformation(InstrumentId);
    }
    @Override
laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MetricalInformationServiceImpl.java
@@ -40,8 +40,8 @@
    }
    @Override
    public List<Map<String, Object>> getListEquipmentPointInformation() {
        return metricalInformationMapper.getListEquipmentPointInformation();
    public List<Map<String, Object>> getListEquipmentPointInformation(String InstrumentId) {
        return metricalInformationMapper.getListEquipmentPointInformation(InstrumentId);
    }
    @Override
laboratory-server/src/main/resources/mapper/EquipmentPointMapper.xml
@@ -6,5 +6,6 @@
        SELECT e.`id`, e.`equipment_point` equipmentPoint, e.`equipment_point_name` equipmentPointName, e.`unit`,u.`name`, DATE_FORMAT(e.`update_time`, '%Y-%m-%d') updateTime, e.`descriptiveness`
        FROM equipment_point e, `user` u
        WHERE e.`user_id` = u.`id`
        AND e.`instrument_id` = #{InstrumentId}
    </select>
</mapper>
laboratory-server/src/main/resources/mapper/MetricalInformationMapper.xml
@@ -8,5 +8,6 @@
        FROM metrical_information m, `user` u
        WHERE m.`user_id` = u.`id`
          AND m.`state` = 1
        AND m.`instrument_id` = #{InstrumentId}
    </select>
</mapper>
pom.xml
@@ -79,6 +79,12 @@
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <!--后端注释检验工具-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
standard-server/src/main/java/com/yuanchu/limslaboratory/controller/MaterialController.java
@@ -1,7 +1,6 @@
package com.yuanchu.limslaboratory.controller;
import com.yuanchu.limslaboratory.pojo.Material;
import com.yuanchu.limslaboratory.pojo.dto.AddMaterialDto;
import com.yuanchu.limslaboratory.service.MaterialService;
import com.yuanchu.limslaboratory.vo.Result;
import io.swagger.annotations.Api;
@@ -9,7 +8,11 @@
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -29,24 +32,34 @@
    @ApiOperation("添加物料")
    @PostMapping("/add")
    public Result<?> addMaterialInformation(@RequestBody Material material) {
        Integer isMaterialSuccess = null;
    public Result<?> addMaterialInformation(@Validated @RequestBody AddMaterialDto addMaterialDto) {
        Integer isMaterialSuccess = materialService.addMaterialInformation(addMaterialDto);
        if (isMaterialSuccess == 1) {
            return Result.success("添加物料【"+ material.getName() +"】成功!");
            return Result.success("添加物料【"+ addMaterialDto.getMaterialName() +"】成功!");
        }
        return Result.fail("添加物料【"+ material.getName() +"】失败!");
        return Result.fail("添加物料【"+ addMaterialDto.getMaterialName() +"】失败!");
    }
    @ApiOperation("根据物料ID删除物料")
    @DeleteMapping("/delete")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(value = "物料ID", name = "materialId", dataTypeClass = String.class)
            @ApiImplicitParam(value = "物料ID", name = "materialId", dataTypeClass = Integer.class)
    })
    public Result<?> deleteMaterialInformation(String materialId) {
    public Result<?> deleteMaterialInformation(Integer materialId) {
        Integer isDeleteMaterialSuccess = materialService.deleteMaterialInformation(materialId);
        if (isDeleteMaterialSuccess == 1) {
            return Result.success("删除成功!");
        }
        return Result.fail("删除失败!");
    }
    @ApiOperation("侧边栏四级展开")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(value = "型号/型号名称", name = "specificationName", dataTypeClass = String.class)
    })
    @GetMapping("/list")
    public Result<?> getFourLevelInformation(String specificationName) {
        List<Map<String, Object>> fourLevelInformation = materialService.getFourLevelInformation(specificationName);
        return Result.success(fourLevelInformation);
    }
}
standard-server/src/main/java/com/yuanchu/limslaboratory/controller/ProductController.java
@@ -1,17 +1,17 @@
package com.yuanchu.limslaboratory.controller;
import com.yuanchu.limslaboratory.pojo.Product;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.service.ProductService;
import com.yuanchu.limslaboratory.utils.JackSonUtil;
import com.yuanchu.limslaboratory.utils.RedisUtil;
import com.yuanchu.limslaboratory.vo.Result;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
 * <p>
@@ -29,16 +29,28 @@
    @Autowired
    private ProductService productService;
    @ApiOperation("删除测试标准模块数据")
    @DeleteMapping("/delete")
    @ApiOperation("1、分页查询项目")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(value = "测试标准ID", name = "productId", dataTypeClass = String.class)
            @ApiImplicitParam(name = "pageNo", value = "起始页", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(name = "pageSize", value = "每一页数量", dataTypeClass = Integer.class, required = true),
            @ApiImplicitParam(value = "原材料编码/原材料名称", name = "productCodeOrName", dataTypeClass = String.class)
    })
    public Result<?> deleteProductInformation(Integer productId) {
        Integer isDeleteProduct = productService.deleteProductInformation(productId);
        if (isDeleteProduct == 1) {
            return Result.success("删除成功!");
    @GetMapping("/page")
    public Result<?> pageProductInformation(Integer pageNo, Integer pageSize,String productCodeOrName) {
        IPage<Map<String, Object>> maps = productService.pageProductInformation(productCodeOrName, new Page<Objects>(pageNo, pageSize));
        Map<String, Object> map = new HashMap<>();
        map.put("row", maps.getRecords());
        map.put("total", maps.getTotal());
        return Result.success(map);
        }
        return Result.fail("删除失败!");
    @ApiOperation("2、根据父类查子类")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(value = "父类名称", name = "fatherName", dataTypeClass = String.class)
    })
    @GetMapping("/father")
    public Result<?> pageFatherNameProductInformation(String fatherName) {
        List<Map<String, Object>> maps = productService.pageFatherNameProductInformation(fatherName);
        return Result.success(maps);
    }
}
standard-server/src/main/java/com/yuanchu/limslaboratory/controller/SpecificationsController.java
@@ -1,6 +1,8 @@
package com.yuanchu.limslaboratory.controller;
import com.yuanchu.limslaboratory.pojo.dto.AddSpecifications;
import com.yuanchu.limslaboratory.pojo.dto.AddStandardDto;
import com.yuanchu.limslaboratory.service.SpecificationsService;
import com.yuanchu.limslaboratory.vo.Result;
import io.swagger.annotations.Api;
@@ -8,6 +10,7 @@
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
@@ -26,6 +29,16 @@
    @Autowired
    private SpecificationsService specificationsService;
    @ApiOperation("添加物料")
    @PostMapping("/add")
    public Result<?> addSpecificationsInformation(@Validated @RequestBody AddSpecifications addSpecifications) {
        Integer isMaterialSuccess = specificationsService.addSpecificationsInformation(addSpecifications);
        if (isMaterialSuccess == 1) {
            return Result.success("添加物料【"+ addSpecifications.getSpecificationsName() +"】成功!");
        }
        return Result.fail("添加物料【"+ addSpecifications.getSpecificationsName() +"】失败!");
    }
    @ApiOperation("删除产品规格")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "specificationsId", value = "规格Id", dataTypeClass = Integer.class, required = true)
standard-server/src/main/java/com/yuanchu/limslaboratory/controller/StandardController.java
@@ -1,11 +1,12 @@
package com.yuanchu.limslaboratory.controller;
import com.yuanchu.limslaboratory.pojo.dto.AddStandardDto;
import com.yuanchu.limslaboratory.service.StandardService;
import com.yuanchu.limslaboratory.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
@@ -24,11 +25,21 @@
    @Autowired
    private StandardService standardService;
    @ApiOperation("添加物料")
    @PostMapping("/add")
    public Result<?> addStandardInformation(@Validated @RequestBody AddStandardDto addStandardDto) {
        Integer isMaterialSuccess = standardService.addStandardInformation(addStandardDto);
        if (isMaterialSuccess == 1) {
            return Result.success("添加物料【"+ addStandardDto.getStandardName() +"】成功!");
        }
        return Result.fail("添加物料【"+ addStandardDto.getStandardName() +"】失败!");
    }
    @ApiOperation("根据ID删除数据")
    @DeleteMapping("/delete")
    public Result<?> deleteStandardsInformation(String standardsId) {
        Integer isDeleteSuccess = standardService.deleteStandardsInformation(standardsId);
        if (isDeleteSuccess == 1){
    public Result<?> deleteStandardsInformation(Integer standardsId) {
        Integer isDeleteMaterialSuccess = standardService.deleteStandardInformation(standardsId);
        if (isDeleteMaterialSuccess == 1) {
            return Result.success("删除成功!");
        }
        return Result.fail("删除失败!");
standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/MaterialMapper.java
@@ -17,7 +17,7 @@
public interface MaterialMapper extends BaseMapper<Material> {
    //查询物料信息
    List<Material> selectMaterialLimit(int num1,int num2);
    List<Material> selectMaterialLimit(int num1,int num2, int type);
    //根据物料id查询物料信息
    Map selectMaterialById(String materialId);
standard-server/src/main/java/com/yuanchu/limslaboratory/mapper/ProductMapper.java
@@ -1,11 +1,14 @@
package com.yuanchu.limslaboratory.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.pojo.Product;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
 * <p>
@@ -19,5 +22,7 @@
    List<Product> selectProductByMaterialId(String materialId);
    Map<String, Object> getProductInformation(Integer productId);
    IPage<Map<String, Object>> pageProductInformation(String productCodeOrName, Page<Objects> page);
    Map<String, Object> selectOneChildren(Object father);
}
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Material.java
@@ -11,6 +11,7 @@
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
@@ -20,6 +21,7 @@
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2023-07-17
 */
@Accessors(chain = true)
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="Material对象", description="")
@@ -29,9 +31,9 @@
    @ApiModelProperty(value = "物料id", hidden = true)
    @TableId(value = "id", type = IdType.AUTO)
    private String id;
    private Integer id;
    @ApiModelProperty(value = "物料编码", example = "152453211563212", required = true)
    @ApiModelProperty(value = "物料编码", hidden = true)
    private String code;
    @ApiModelProperty(value = "物料名称", example = "石头", required = true)
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Specifications.java
@@ -12,6 +12,7 @@
import io.swagger.models.auth.In;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
@@ -22,6 +23,7 @@
 * @since 2023-07-11
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="Specifications对象", description="规格")
public class Specifications implements Serializable {
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/Standard.java
@@ -10,6 +10,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
@@ -20,6 +21,7 @@
 * @since 2023-07-11
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="Standards对象", description="标准")
public class Standard implements Serializable {
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/AddMaterialDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.yuanchu.limslaboratory.pojo.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="AddMaterialDto对象", description="")
public class AddMaterialDto {
    @NotNull(message = "物料类型不能为空!")
    @ApiModelProperty(value = "0:原材料;1:成品;2:半成品", example = "1", required = true)
    private Integer type;
    @NotBlank(message = "物料名称不能为空!")
    @ApiModelProperty(value = "物料名称", example = "石头", required = true)
    private String materialName;
    @NotBlank(message = "标准名称不能为空!")
    @ApiModelProperty(value = "标准名称", example = "光纤", required = true)
    private String standardName;
    @NotBlank(message = "产品规格名称不能为空!")
    @ApiModelProperty(value = "产品规格名称", example = "AB", required = true)
    private String specificationsName;
}
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/AddSpecifications.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.yuanchu.limslaboratory.pojo.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="AddSpecifications对象", description="")
public class AddSpecifications {
    @NotNull(message = "标准ID不能为空!")
    @ApiModelProperty(value = "标准id", example = "1", required = true)
    private Integer standardId;
    @NotBlank(message = "产品规格名称不能为空!")
    @ApiModelProperty(value = "产品规格名称", example = "AB", required = true)
    private String specificationsName;
}
standard-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/AddStandardDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.limslaboratory.pojo.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="AddStandardDto对象", description="")
public class AddStandardDto {
    @NotNull(message = "物料ID不能为空!")
    @ApiModelProperty(value = "物料id", example = "1", required = true)
    private Integer materialId;
    @NotBlank(message = "标准名称不能为空!")
    @ApiModelProperty(value = "标准名称", example = "光纤", required = true)
    private String standardName;
    @NotBlank(message = "产品规格名称不能为空!")
    @ApiModelProperty(value = "产品规格名称", example = "AB", required = true)
    private String specificationsName;
}
standard-server/src/main/java/com/yuanchu/limslaboratory/service/MaterialService.java
@@ -2,6 +2,8 @@
import com.yuanchu.limslaboratory.pojo.Material;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.limslaboratory.pojo.dto.AddMaterialDto;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@@ -16,7 +18,7 @@
 */
public interface MaterialService extends IService<Material> {
    List<Material> selectMaterialLimit(int pageSize,int countSize);
    List<Material> selectMaterialLimit(int pageSize,int countSize, int type);
    Map selectMaterialById(String materialId);
@@ -25,12 +27,17 @@
     * @param materialId
     * @return
     */
    Integer deleteMaterialInformation(String materialId);
    @Transactional(rollbackFor = Exception.class)
    Integer deleteMaterialInformation(Integer materialId);
    /**
     * åˆ é™¤ç­‰äºŽSpecificationsId的物料数据
     * @param deleteSpecificationsId
     * @return
     * ä¸‰çº§æ·»åŠ å‚æ•°
     */
    List<String> specificationsIdDeleteMaterial(List<Integer> deleteSpecificationsId);
    @Transactional(rollbackFor = Exception.class)
    Integer addMaterialInformation(AddMaterialDto addMaterialDto);
    /**
     * å››çº§åˆ†å±‚显示
     */
    List<Map<String, Object>> getFourLevelInformation(String specificationName);
}
standard-server/src/main/java/com/yuanchu/limslaboratory/service/ProductService.java
@@ -1,10 +1,13 @@
package com.yuanchu.limslaboratory.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.pojo.Product;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
@@ -16,7 +19,9 @@
 * @since 2023-07-17
 */
public interface ProductService extends IService<Product> {
    Integer deleteProductInformation(Integer productId);
    void deleteProductInformation(List<Integer> SpecificationsId);
    void MaterialIdDeleteProduct(List<String> deleteMaterialId);
    IPage<Map<String, Object>> pageProductInformation(String productCodeOrName, Page<Objects> page);
    List<Map<String, Object>> pageFatherNameProductInformation(String fatherName);
}
standard-server/src/main/java/com/yuanchu/limslaboratory/service/SpecificationsService.java
@@ -1,7 +1,11 @@
package com.yuanchu.limslaboratory.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yuanchu.limslaboratory.pojo.Specifications;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.limslaboratory.pojo.Standard;
import com.yuanchu.limslaboratory.pojo.dto.AddSpecifications;
import com.yuanchu.limslaboratory.pojo.dto.AddStandardDto;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@@ -23,5 +27,7 @@
    @Transactional(rollbackFor = Exception.class)
    Integer deleteSpecifications(Integer specificationsId);
    List<Integer> SerialNumberIdDeleteSpecifications(List<String> deleteSerialNumberId);
    List<Integer> StandardIdDeleteSpecifications(List<Integer> deleteStandard);
    Integer addSpecificationsInformation(AddSpecifications addStandardDto);
}
standard-server/src/main/java/com/yuanchu/limslaboratory/service/StandardService.java
@@ -2,7 +2,11 @@
import com.yuanchu.limslaboratory.pojo.Standard;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.limslaboratory.pojo.dto.AddStandardDto;
import io.swagger.models.auth.In;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
 * <p>
@@ -16,9 +20,13 @@
    /**
     * æ ¹æ®æ ‡å‡†Id删除数据
     * @param standardsId
     * @param materialId
     * @return
     */
    List<Integer> deleteStandardsInformation(Integer materialId);
    @Transactional(rollbackFor = Exception.class)
    Integer deleteStandardsInformation(String standardsId);
    Integer deleteStandardInformation(Integer standardsId);
    Integer addStandardInformation(AddStandardDto addStandardDto);
}
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/MaterialServiceImpl.java
@@ -2,16 +2,23 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.yuanchu.limslaboratory.pojo.Material;
import com.yuanchu.limslaboratory.mapper.MaterialMapper;
import com.yuanchu.limslaboratory.pojo.Specifications;
import com.yuanchu.limslaboratory.pojo.Standard;
import com.yuanchu.limslaboratory.pojo.dto.AddMaterialDto;
import com.yuanchu.limslaboratory.service.MaterialService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.limslaboratory.service.ProductService;
import com.yuanchu.limslaboratory.service.SpecificationsService;
import com.yuanchu.limslaboratory.service.StandardService;
import com.yuanchu.limslaboratory.utils.MyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -27,12 +34,21 @@
public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> implements MaterialService {
    @Resource
    MaterialMapper materialMapper;
    private MaterialMapper materialMapper;
    @Autowired
    private StandardService standardService;
    @Autowired
    private SpecificationsService specificationsService;
    @Autowired
    private ProductService productService;
    //查询物料信息
    @Override
    public List<Material> selectMaterialLimit(int pageSize, int countSize) {
        return materialMapper.selectMaterialLimit((pageSize - 1) * countSize,pageSize * countSize);
    public List<Material> selectMaterialLimit(int pageSize, int countSize, int type) {
        return materialMapper.selectMaterialLimit((pageSize - 1) * countSize,pageSize * countSize, type);
    }
    //根据物料id查询物料信息
@@ -41,39 +57,92 @@
        return materialMapper.selectMaterialById(materialId);
    }
    @Autowired
    private ProductService productService;
    @Override
    public Integer deleteMaterialInformation(String materialId) {
    public Integer deleteMaterialInformation(Integer materialId) {
        LambdaUpdateWrapper<Material> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.eq(Material::getId, materialId);
        updateWrapper.set(Material::getState, 0);
        List<String> list = new ArrayList<>();
        list.add(materialId);
        int isDeleteSuccess = materialMapper.update(new Material(), updateWrapper);
        if (isDeleteSuccess == 1){
            productService.MaterialIdDeleteProduct(list);
            List<Integer> isDeleteStandard = standardService.deleteStandardsInformation(materialId);
            if (!ObjectUtils.isEmpty(isDeleteStandard)){
                List<Integer> idDeleteSpecifications = specificationsService.StandardIdDeleteSpecifications(isDeleteStandard);
                if (!ObjectUtils.isEmpty(idDeleteSpecifications)){
                    productService.deleteProductInformation(idDeleteSpecifications);
                }
            }
            return 1;
        }
        return 0;
    }
    @Override
    public List<String> specificationsIdDeleteMaterial(List<Integer> deleteSpecificationsId) {
        List<String> list = new ArrayList<>();
        for (Integer serialNumberId:deleteSpecificationsId){
            LambdaQueryWrapper<Material> wrapper = new LambdaQueryWrapper<>();
            wrapper.select(Material::getId);
            List<Material> maps1 = materialMapper.selectList(wrapper);
            for (Material material:maps1){
                LambdaUpdateWrapper<Material> updateWrapper = new LambdaUpdateWrapper<>();
                updateWrapper.eq(Material::getId, material.getId());
                updateWrapper.set(Material::getState, 0);
                materialMapper.update(new Material(), updateWrapper);
                list.add(material.getId());
    public Integer addMaterialInformation(AddMaterialDto addMaterialDto) {
        Material material = new Material()
                .setCode("BZ" + IdWorker.getIdStr())
                .setName(addMaterialDto.getMaterialName())
                .setType(addMaterialDto.getType());
        int isInsertSuccess = materialMapper.insert(material);
        if (isInsertSuccess > 0){
            Standard standard = new Standard()
                    .setMaterialId(material.getId())
                    .setName(addMaterialDto.getStandardName());
            boolean save = standardService.save(standard);
            if (save){
                Specifications specifications = new Specifications()
                        .setName(addMaterialDto.getSpecificationsName())
                        .setStandardId(standard.getId());
                boolean save1 = specificationsService.save(specifications);
                if (save1)
                    return 1;
            }
        }
        return list;
        return 0;
    }
    @Override
    public List<Map<String, Object>> getFourLevelInformation(String specificationName) {
        LambdaQueryWrapper<Material> typeWrapper = new LambdaQueryWrapper<>();
        typeWrapper.groupBy(Material::getType);
        typeWrapper.select(Material::getType);
        List<Map<String, Object>> typeMaps = materialMapper.selectMaps(typeWrapper);
        for (Map<String, Object> typeMap : typeMaps){
            LambdaQueryWrapper<Material> materialWrapper = new LambdaQueryWrapper<>();
            materialWrapper.eq(Material::getType, typeMap.get("type"));
            materialWrapper.select(Material::getId, Material::getName);
            List<Map<String, Object>> materialMaps = materialMapper.selectMaps(materialWrapper);
            if (!ObjectUtils.isEmpty(materialMaps)){
                for (Map<String, Object> materialMap : materialMaps){
                    LambdaQueryWrapper<Standard> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(Standard::getMaterialId, materialMap.get("id"));
                    wrapper.select(Standard::getId, Standard::getName);
                    List<Map<String, Object>> standardMaps = standardService.listMaps(wrapper);
                    if (!ObjectUtils.isEmpty(standardMaps)){
                        for (Map<String, Object> standardMap : standardMaps){
                            LambdaQueryWrapper<Specifications> specificationWrapper = new LambdaQueryWrapper<>();
                            MyUtil.PrintLog(standardMap.get("id").toString());
                            specificationWrapper.eq(Specifications::getStandardId, standardMap.get("id"));
                            if (!ObjectUtils.isEmpty(specificationName)){
                                specificationWrapper.eq(Specifications::getName, specificationName);
                            }
                            specificationWrapper.select(Specifications::getId, Specifications::getName);
                            List<Map<String, Object>> specificationsMaps = specificationsService.listMaps(specificationWrapper);
                            if (!ObjectUtils.isEmpty(specificationsMaps)){
                                standardMap.put("children", specificationsMaps);
                            } else {
                                standardMap.put("children", null);
                            }
                        }
                        materialMap.put("children", standardMaps);
                    } else {
                        materialMap.put("children", null);
                    }
                }
                typeMap.put("children", materialMaps);
            } else {
                typeMap.put("children", null);
            }
        }
        return typeMaps;
    }
}
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/ProductServiceImpl.java
@@ -2,10 +2,13 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.limslaboratory.pojo.Product;
import com.yuanchu.limslaboratory.mapper.ProductMapper;
import com.yuanchu.limslaboratory.service.ProductService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.limslaboratory.utils.MyUtil;
import org.springframework.beans.factory.annotation.Autowired;
import com.yuanchu.limslaboratory.service.UserService;
import org.springframework.stereotype.Service;
@@ -15,6 +18,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
 * <p>
@@ -31,20 +35,40 @@
    private ProductMapper productMapper;
    @Override
    public Integer deleteProductInformation(Integer productId) {
    public void deleteProductInformation(List<Integer> SpecificationsId) {
        for (Integer materialId : SpecificationsId){
        LambdaUpdateWrapper<Product> wrapper = new LambdaUpdateWrapper<>();
        wrapper.eq(Product::getId, productId);
        wrapper.set(Product::getState, 0);
        return productMapper.update(new Product(), wrapper);
    }
    @Override
    public void MaterialIdDeleteProduct(List<String> deleteMaterialId) {
        for (String materialId : deleteMaterialId){
            LambdaUpdateWrapper<Product> wrapper = new LambdaUpdateWrapper<>();
            wrapper.eq(Product::getId, materialId);
            wrapper.eq(Product::getSpecifications_id, materialId);
            wrapper.set(Product::getState, 0);
            productMapper.update(new Product(), wrapper);
        }
    }
    @Override
    public IPage<Map<String, Object>> pageProductInformation(String productCodeOrName, Page<Objects> page) {
        IPage<Map<String, Object>> iPage = productMapper.pageProductInformation(productCodeOrName, page);
        List<Map<String, Object>> maps = iPage.getRecords();
        MyUtil.PrintLog(maps.toString());
        maps.forEach(map -> {
            int num = Integer.parseInt(map.get("num").toString());
            boolean children = false;
            if (num > 1){
                children = true;
            } else {
                Map<String, Object> product = productMapper.selectOneChildren(map.get("father"));
                map.putAll(product);
            }
            map.put("children", children);
            map.remove("num");
        });
        return iPage;
    }
    @Override
    public List<Map<String, Object>> pageFatherNameProductInformation(String fatherName) {
        LambdaQueryWrapper<Product> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Product::getFather, fatherName);
        wrapper.select(Product::getId, Product::getName, Product::getUnit, Product::getRequired, Product::getInternal);
        return productMapper.selectMaps(wrapper);
    }
}
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/SpecificationsServiceImpl.java
@@ -4,9 +4,12 @@
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.yuanchu.limslaboratory.pojo.Specifications;
import com.yuanchu.limslaboratory.mapper.SpecificationsMapper;
import com.yuanchu.limslaboratory.pojo.dto.AddSpecifications;
import com.yuanchu.limslaboratory.pojo.dto.AddStandardDto;
import com.yuanchu.limslaboratory.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
@@ -29,9 +32,6 @@
    private SpecificationsMapper specificationsMapper;
    @Autowired
    private MaterialService materialService;
    @Autowired
    private ProductService productService;
    @Override
@@ -43,21 +43,18 @@
        list.add(specificationsId);
        int isDeleteSuccess = specificationsMapper.update(new Specifications(), updateWrapper);
        if (isDeleteSuccess == 1){
            List<String> deleteMaterialId = materialService.specificationsIdDeleteMaterial(list);
            if (!ObjectUtils.isEmpty(deleteMaterialId)){
                productService.MaterialIdDeleteProduct(deleteMaterialId);
            }
            productService.deleteProductInformation(list);
            return 1;
        }
        return 0;
    }
    @Override
    public List<Integer> SerialNumberIdDeleteSpecifications(List<String> deleteSerialNumberId) {
    public List<Integer> StandardIdDeleteSpecifications(List<Integer> deleteStandard) {
        List<Integer> list = new ArrayList<>();
        for (String serialNumberId:deleteSerialNumberId){
        for (Integer standard : deleteStandard){
            LambdaQueryWrapper<Specifications> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(Specifications::getId, serialNumberId);
            wrapper.eq(Specifications::getStandardId, standard);
            wrapper.select(Specifications::getId);
            List<Specifications> maps1 = specificationsMapper.selectList(wrapper);
            for (Specifications specifications:maps1){
@@ -70,4 +67,12 @@
        }
        return list;
    }
    @Override
    public Integer addSpecificationsInformation(AddSpecifications addStandardDto) {
        Specifications specifications = new Specifications()
                .setName(addStandardDto.getSpecificationsName())
                .setStandardId(addStandardDto.getStandardId());
        return specificationsMapper.insert(specifications);
    }
}
standard-server/src/main/java/com/yuanchu/limslaboratory/service/impl/StandardServiceImpl.java
@@ -1,17 +1,23 @@
package com.yuanchu.limslaboratory.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.yuanchu.limslaboratory.mapper.StandardMapper;
import com.yuanchu.limslaboratory.pojo.Material;
import com.yuanchu.limslaboratory.pojo.Specifications;
import com.yuanchu.limslaboratory.pojo.Standard;
import com.yuanchu.limslaboratory.pojo.dto.AddStandardDto;
import com.yuanchu.limslaboratory.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * <p>
@@ -27,34 +33,61 @@
    @Resource
    private StandardMapper standardMapper;
    @Autowired
    private UserService userService;
    @Lazy
    @Autowired
    private SpecificationsService specificationsService;
    @Autowired
    private MaterialService materialService;
    @Autowired
    private ProductService productService;
    @Override
    public Integer deleteStandardsInformation(String standardsId) {
    public List<Integer> deleteStandardsInformation(Integer materialId) {
        LambdaQueryWrapper<Standard> wrapper = new LambdaQueryWrapper<>();
        wrapper.eq(Standard::getMaterialId, materialId);
        wrapper.select(Standard::getId);
        List<Integer> list = new ArrayList<>();
        List<Standard> standards = standardMapper.selectList(wrapper);
        for (Standard standard : standards){
            LambdaUpdateWrapper<Standard> updateWrapper = new LambdaUpdateWrapper<>();
            updateWrapper.eq(Standard::getMaterialId, materialId);
            updateWrapper.set(Standard::getState, 0);
            standardMapper.update(new Standard(), updateWrapper);
            list.add(standard.getId());
        }
        return list;
    }
    @Override
    public Integer deleteStandardInformation(Integer standardsId) {
        LambdaUpdateWrapper<Standard> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.eq(Standard::getId, standardsId);
        updateWrapper.set(Standard::getState, 0);
        List<Integer> list = new ArrayList<>();
        int isDeleteSuccess = standardMapper.update(new Standard(), updateWrapper);
        if (isDeleteSuccess == 1){
            List<Integer> deleteSpecificationsId = specificationsService.SerialNumberIdDeleteSpecifications(null);
            if (!ObjectUtils.isEmpty(deleteSpecificationsId)){
                List<String> deleteMaterialId = materialService.specificationsIdDeleteMaterial(deleteSpecificationsId);
                if (!ObjectUtils.isEmpty(deleteMaterialId)){
                    productService.MaterialIdDeleteProduct(deleteMaterialId);
            list.add(standardsId);
            List<Integer> idDeleteSpecifications = specificationsService.StandardIdDeleteSpecifications(list);
            if (!ObjectUtils.isEmpty(idDeleteSpecifications)){
                productService.deleteProductInformation(idDeleteSpecifications);
                }
            return 1;
            }
        return 0;
    }
    @Override
    public Integer addStandardInformation(AddStandardDto addStandardDto) {
        Standard standard = new Standard()
                .setMaterialId(addStandardDto.getMaterialId())
                .setName(addStandardDto.getStandardName());
        int save = standardMapper.insert(standard);
        if (save == 1){
            Specifications specifications = new Specifications()
                    .setName(addStandardDto.getSpecificationsName())
                    .setStandardId(standard.getId());
            boolean save1 = specificationsService.save(specifications);
            if (save1)
            return 1;
        }
        return 0;
standard-server/src/main/resources/mapper/MaterialMapper.xml
@@ -6,6 +6,7 @@
        select id, name
        from material
        where state = 1
        and type = #{type}
        order by create_time desc
            limit #{num1},#{num2}
    </select>
standard-server/src/main/resources/mapper/ProductMapper.xml
@@ -2,4 +2,18 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yuanchu.limslaboratory.mapper.ProductMapper">
    <select id="pageProductInformation" resultType="map">
        SELECT COUNT(1) num, p.`father`
        FROM product p
        <if test="productCodeOrName != null and productCodeOrName != ''">
            WHERE p.`father` = #{productCodeOrName}
        </if>
        GROUP BY p.`father`
    </select>
    <select id="selectOneChildren" resultType="map">
        SELECT p.`id`, p.`unit`, p.`required`, p.`internal`
        FROM product p
        WHERE p.`father` = #{father}
    </select>
</mapper>
user-server/src/main/java/com/yuanchu/limslaboratory/service/UserService.java
@@ -7,13 +7,9 @@
import com.yuanchu.limslaboratory.vo.NewPersonnelVo;
import com.yuanchu.limslaboratory.vo.PagePersonnelVo;
import com.yuanchu.limslaboratory.vo.UpdatePersonnelVo;
import org.springframework.transaction.annotation.Transactional;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
 * <p>
@@ -80,4 +76,9 @@
     * @return
     */
    List<User> selectUser();
    /**
     * èŽ·å–æ‰€æœ‰ç”¨æˆ·çš„åç§°ä¸ŽId
     */
    List<Map<String, Object>> getUserNameAndId();
}
user-server/src/main/java/com/yuanchu/limslaboratory/service/impl/UserServiceImpl.java
@@ -12,7 +12,6 @@
import com.yuanchu.limslaboratory.vo.NewPersonnelVo;
import com.yuanchu.limslaboratory.vo.PagePersonnelVo;
import com.yuanchu.limslaboratory.vo.UpdatePersonnelVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
@@ -80,6 +79,13 @@
    }
    @Override
    public List<Map<String, Object>> getUserNameAndId() {
        LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
        wrapper.select(User::getId, User::getName);
        return userMapper.selectMaps(wrapper);
    }
    @Override
    public Map<String, String> selectUserByUserId(int userId) {
        return userMapper.selectUserByUserId(userId);
    }