标准库新增导出功能+标准库中点击光纤大类(后端生成的id重复报错)
已修改12个文件
已添加1个文件
183 ■■■■■ 文件已修改
cnas-server/src/main/java/com/yuanchu/mom/pojo/Laboratory.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/dto/standardTreeDto.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/mapper/StandardTreeMapper.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/pojo/StandardProductList.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardProductListServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/StandardTreeMapper.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system-run/pom.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system-run/src/main/resources/application-dev.yml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system-run/src/main/resources/application-prod.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/pojo/Laboratory.java
@@ -53,6 +53,7 @@
    @ValueTableShow(7)
    @ApiModelProperty(value = "创建人")
    @TableField(exist = false)
    private String createUserName;
    @ApiModelProperty(value = "修改人id")
inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java
@@ -19,6 +19,8 @@
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
@RestController
@@ -181,6 +183,13 @@
        return Result.success();
    }
    @ValueClassify("标准库")
    @ApiOperation("导出标准库")
    @GetMapping("/exportStandTree")
    public void exportStandTree(HttpServletResponse response) throws IOException  {
        standardTreeService.exportStandTree(response);
    }
    @ValueAuth
    @ApiOperation("重置标准库单价")
    @PostMapping("/resetTreeOfPrice")
inspect-server/src/main/java/com/yuanchu/mom/dto/standardTreeDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.yuanchu.mom.dto;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.pojo.StandardProductList;
import com.yuanchu.mom.pojo.StandardTree;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class standardTreeDto extends StandardProductList {
    @ExcelProperty(value = "标准编号")
    private String standardMethodNo;
    @ExcelProperty(value = "原始记录模版")
    private String templateName;
}
inspect-server/src/main/java/com/yuanchu/mom/mapper/StandardTreeMapper.java
@@ -1,10 +1,7 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.mom.dto.FactoryDto;
import com.yuanchu.mom.dto.ProductDto;
import com.yuanchu.mom.dto.SampleDto;
import com.yuanchu.mom.dto.SampleTypeDto;
import com.yuanchu.mom.dto.*;
import com.yuanchu.mom.pojo.StandardMethodList;
import com.yuanchu.mom.pojo.StandardProductList;
import com.yuanchu.mom.pojo.StandardTree;
@@ -46,6 +43,9 @@
    List<ProductDto> selectPList(String name);
    String selSample(String sample);
    List<standardTreeDto> exportStandTree();
}
inspect-server/src/main/java/com/yuanchu/mom/pojo/StandardProductList.java
@@ -1,5 +1,7 @@
package com.yuanchu.mom.pojo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -22,136 +24,164 @@
     */
    @TableId(value = "id",type = IdType.ASSIGN_ID)
    @JsonSerialize(using = ToStringSerializer.class)
    @ExcelIgnore
    private Long id;
    /**
     * æ£€éªŒé¡¹
     */
    @ApiModelProperty("检验项")
    @ExcelProperty(value = "检测参数名称")
    private String inspectionItem;
    @ApiModelProperty("检验项EN")
    @ExcelProperty(value = "检测参数名称(EN)")
    private String inspectionItemEn;
    /**
     * æ£€éªŒé¡¹å°ç±»
     */
    @ApiModelProperty("检验项小类")
    @ExcelProperty(value = "检测子项")
    private String inspectionItemSubclass;
    @ApiModelProperty("检验项小类EN")
    @ExcelProperty(value = "检测子项(EN)")
    private String inspectionItemSubclassEn;
    /**
     * å®žéªŒå®¤
     */
    @ApiModelProperty("实验室")
    @ExcelIgnore
    private String laboratory;
    @ApiModelProperty("子实验室")
    @ExcelProperty(value = "试验室")
    private String sonLaboratory;
    /**
     * è®¡é‡å•位
     */
    @ApiModelProperty("计量单位")
    @ExcelProperty(value = "计量单位")
    private String unit;
    /**
     * å•ä»·(元)
     */
    @ApiModelProperty("单价")
    @ExcelProperty(value = "单价")
    private String price;
    /**
     * å·¥æ—¶(H)
     */
    @ApiModelProperty("工时")
    @ExcelProperty(value = "工时系数")
    private String manHour;
    /**
     * å·¥æ—¶åˆ†ç»„
     */
    @ApiModelProperty("工时分组")
    @ExcelProperty(value = "工时分组")
    private String manHourGroup;
    /**
     * æ£€éªŒé¡¹ç±»åž‹
     */
    @ApiModelProperty("检验项类型")
    @ExcelProperty(value = "检验项类型")
    private String inspectionItemType;
    /**
     * æ£€éªŒå€¼ç±»åž‹
     */
    @ApiModelProperty("检验值类型")
    @ExcelProperty(value = "数据类型")
    private String inspectionValueType;
    /**
     * æ£€éªŒæ¬¡æ•°
     */
    @ApiModelProperty("检验次数")
    @ExcelIgnore
    private Integer checkoutNumber;
    /**
     * åŒºé—´
     */
    @ApiModelProperty("区间")
    @ExcelIgnore
    private String section;
    /**
     * æ–¹æ³•
     */
    @ApiModelProperty("方法列表")
    @ExcelIgnore
    private String method;
    @ApiModelProperty("方法")
    @ExcelProperty(value = "方法名称")
    private String methodS;
    /**
     * é¢„计时间(天)
     */
    @ApiModelProperty("预计时间")
    @ExcelProperty(value = "预计完成时间")
    private Integer manDay;
    /**
     * ç‰¹æ®Šæ ‡è¯†
     */
    @ApiModelProperty("特殊标识")
    @ExcelProperty(value = "特殊标识")
    private String bsm;
    /**
     * è¦æ±‚值
     */
    @ApiModelProperty("要求值")
    @ExcelProperty(value = "判断要求")
    private String ask;
    @ApiModelProperty("要求描述")
    @ExcelProperty(value = "标准显示")
    private String tell;
    /**
     * å¤–键:标准方法id
     */
    @ApiModelProperty("标准方法id")
    @ExcelIgnore
    private Integer standardMethodListId;
    @ApiModelProperty("工厂")
    @ExcelIgnore
    private String factory;
    @ApiModelProperty("样品分类")
    @ExcelProperty(value = "测试对象")
    private String sampleType;
    @ApiModelProperty("样品")
    @ExcelProperty(value = "产品")
    private String sample;
    @ApiModelProperty("型号")
    @ExcelProperty(value = "型号")
    private String model;
    @ApiModelProperty("型号")
    @ApiModelProperty("模版id")
    @ExcelIgnore
    private Integer templateId;
    @ApiModelProperty("")
    @TableField(fill = FieldFill.INSERT)
    @ExcelIgnore
    private Integer createUser;
    /**
     *
@@ -159,12 +189,14 @@
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelIgnore
    private LocalDateTime createTime;
    /**
     *
     */
    @ApiModelProperty("")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @ExcelIgnore
    private Integer updateUser;
    /**
     *
@@ -172,20 +204,27 @@
    @ApiModelProperty("修改时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ExcelIgnore
    private LocalDateTime updateTime;
    @ApiModelProperty("1:有效 0:无效")
    @ExcelIgnore
    private Integer state;
    @ExcelIgnore
    private String dic;
    @ExcelIgnore
    private String tree;
    @ExcelIgnore
    private Integer structureItemParameterId;
    @ApiModelProperty(value = "检验项分类")
    @ExcelIgnore
    private String inspectionItemClass;
    @ApiModelProperty(value = "检验项分类EN")
    @ExcelIgnore
    private String inspectionItemClassEn;
}
inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java
@@ -6,6 +6,8 @@
import com.yuanchu.mom.pojo.StandardTree;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -39,4 +41,6 @@
    void resetTreeOfAsk(String tree, Integer standardId);
    void importWorkstationExcel(MultipartFile file);
    void exportStandTree(HttpServletResponse response) throws IOException;
}
inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java
@@ -117,7 +117,7 @@
        }
        IPage<SampleOrderDto> sampleOrderDtoIPage = insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory);
        sampleOrderDtoIPage.getRecords().forEach(i -> {
            if (i.getSampleCode().contains(",")) {
            if (ObjectUtils.isNotEmpty(i.getSampleCode()) && i.getSampleCode().contains(",")) {
                String[] split = i.getSampleCode().split(",");
                i.setSampleCode(split[0]);
            }
inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardProductListServiceImpl.java
@@ -271,7 +271,7 @@
            int retryCount = 0;
            while (!success && retryCount < 100) {
                try {
                    standardProductListService2.saveBatch(list.stream().map(a -> {
                    standardProductListService2.saveOrUpdateBatch(list.stream().map(a -> {
                        a.setFactory(trees[0]);
                        a.setLaboratory(trees[1]);
                        a.setSampleType(trees[2]);
@@ -280,7 +280,6 @@
                        a.setStandardMethodListId(id);
                        return a;
                    }).collect(Collectors.toList()));
                    ;
                    success = true;
                } catch (Exception e) {
                    retryCount++;
inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java
@@ -1,19 +1,20 @@
package com.yuanchu.mom.service.impl;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.dto.FactoryDto;
import com.yuanchu.mom.dto.LaboratoryDto;
import com.yuanchu.mom.dto.SampleTypeDto;
import com.yuanchu.mom.dto.*;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.StandardProductListMapper;
import com.yuanchu.mom.mapper.StandardTreeMapper;
import com.yuanchu.mom.pojo.StandardProductList;
import com.yuanchu.mom.pojo.StandardTemplate;
import com.yuanchu.mom.pojo.StandardTree;
import com.yuanchu.mom.pojo.*;
import com.yuanchu.mom.service.*;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
@@ -21,12 +22,16 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
/**
 * @author Administrator
@@ -420,6 +425,33 @@
        });
    }
    //导出
    @Override
    public void exportStandTree(HttpServletResponse response) throws IOException  {
        //查询标准库数据,按照产品大类分类
        List<standardTreeDto> standardTreeDtos = standardTreeMapper.exportStandTree();
        Map<String, List<standardTreeDto>> collect = standardTreeDtos.stream().collect(Collectors.groupingBy(standardTreeDto -> standardTreeDto.getSampleType()));
        List<Map.Entry<String, List<standardTreeDto>>> entryList = new ArrayList<>(collect.entrySet());
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        // è¿™é‡ŒURLEncoder.encode可以防止中文乱码 å½“ç„¶å’Œeasyexcel没有关系
        String fileName = URLEncoder.encode("标准库导出", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        try {
            // æ–°å»ºExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            for (int i = 0; i < collect.size(); i++) {
                Map.Entry<String, List<standardTreeDto>> entry = entryList.get(i);
                WriteSheet mainSheet = EasyExcel.writerSheet(i, entry.getKey()+"标准库导出").head(standardTreeDto.class).build();
                excelWriter.write(entry.getValue(), mainSheet);
            }
            // å…³é—­æµ
            excelWriter.finish();
        } catch (IOException e) {
            throw new RuntimeException("导出失败");
        }
    }
    @Override
    public void resetTreeOfPrice(String tree, Integer standardId) {
        standardProductListMapper.update(null, Wrappers.<StandardProductList>lambdaUpdate().like(StandardProductList::getTree, tree).eq(StandardProductList::getStandardMethodListId, standardId).set(StandardProductList::getPrice, null));
inspect-server/src/main/resources/mapper/StandardTreeMapper.xml
@@ -327,4 +327,39 @@
        from product
        where name = #{name}
    </select>
    <select id="exportStandTree" resultType="com.yuanchu.mom.dto.standardTreeDto">
        select
               inspection_item,
               inspection_item_en,
               inspection_item_subclass,
               inspection_item_subclass_en,
               laboratory,
               sample_type,
               sample,
               model,
               son_laboratory,
               unit,
               price,
               man_hour,
               man_hour_group,
               case when inspection_item_type='1' then '采集类型'
                        else  '非采集类型' end  as inspection_item_type ,
               case when inspection_value_type='1' then '数值'
                    when inspection_value_type='2' then '文本'
                    when inspection_value_type='5' then '下拉'
                    else  '/' end  as inspection_value_type,
               method_s,
               man_day,
               bsm,
               ask,
               tell,
               st.name  templateName,
               sml.code standardMethodNo
        from standard_product_list spl
                 left join standard_template st on spl.template_id = st.id
                 left join standard_method sml on spl.standard_method_list_id = sml.id
        where spl.state = 1
        order by spl.sample_type
    </select>
</mapper>
system-run/pom.xml
@@ -7,6 +7,14 @@
        <groupId>com.yuanchu.mom</groupId>
        <version>1.0.0</version>
    </parent>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <java.version>1.8</java.version>
    </properties>
    <artifactId>system-run</artifactId>
    <version>0.0.1-SNAPSHOT</version>
system-run/src/main/resources/application-dev.yml
@@ -30,6 +30,10 @@
  mapper-locations: classpath*:/mapper/*.xml
  configuration:
    log-impl: #org.apache.ibatis.logging.stdout.StdOutImpl # å¼€å¯mybatis-plus日志
  global-config:
    worker-id: ${random.int(1,31)}
    datacenter-id: ${random.int(1,31)}
# æ•°æ®æºé…ç½®
@@ -40,8 +44,9 @@
    url: jdbc:mysql://localhost:3306/11?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#    url: jdbc:mysql://10.1.200.86:3306/center-lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#    url: jdbc:mysql://10.16.173.59:3306/center-lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#    url: jdbc:mysql://10.1.13.77:3306/center-lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#    url: jdbc:mysql://10.1.13.77:3306/center-lims?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#    url: jdbc:mysql://114.132.189.42:9004/center-lims?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#    username: remote_user
    username: root
    password: 123456
    druid:
system-run/src/main/resources/application-prod.yml
@@ -62,7 +62,7 @@
    # redis端口(默认为6379)
    port: 6379
    # redis访问密码(默认为空)
    password: root2022
    password: 123456
    # redis连接超时时间(单位毫秒)
    timeout: 20
    # redis连接池配置