From c88f52ed0cf4eceb12c1ad74aa019f8469cd38ab Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期二, 20 八月 2024 18:10:01 +0800 Subject: [PATCH] 标准库新增导出功能+标准库中点击光纤大类(后端生成的id重复报错) --- inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java | 44 +++++++++- inspect-server/src/main/java/com/yuanchu/mom/pojo/StandardProductList.java | 41 ++++++++++ inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java | 4 + inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java | 2 system-run/src/main/resources/application-prod.yml | 2 inspect-server/src/main/resources/mapper/StandardTreeMapper.xml | 35 ++++++++ inspect-server/src/main/java/com/yuanchu/mom/mapper/StandardTreeMapper.java | 8 +- system-run/src/main/resources/application-dev.yml | 7 + inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardProductListServiceImpl.java | 3 inspect-server/src/main/java/com/yuanchu/mom/dto/standardTreeDto.java | 19 ++++ cnas-server/src/main/java/com/yuanchu/mom/pojo/Laboratory.java | 1 inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java | 9 ++ system-run/pom.xml | 8 ++ 13 files changed, 167 insertions(+), 16 deletions(-) diff --git a/cnas-server/src/main/java/com/yuanchu/mom/pojo/Laboratory.java b/cnas-server/src/main/java/com/yuanchu/mom/pojo/Laboratory.java index 444ec92..5b6516f 100644 --- a/cnas-server/src/main/java/com/yuanchu/mom/pojo/Laboratory.java +++ b/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 = "淇敼浜篿d") diff --git a/inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java b/inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java index aa41a21..7284046 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/controller/StandardTreeController.java +++ b/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") diff --git a/inspect-server/src/main/java/com/yuanchu/mom/dto/standardTreeDto.java b/inspect-server/src/main/java/com/yuanchu/mom/dto/standardTreeDto.java new file mode 100644 index 0000000..06d8531 --- /dev/null +++ b/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; + +} diff --git a/inspect-server/src/main/java/com/yuanchu/mom/mapper/StandardTreeMapper.java b/inspect-server/src/main/java/com/yuanchu/mom/mapper/StandardTreeMapper.java index be5575d..4e104ad 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/mapper/StandardTreeMapper.java +++ b/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(); + } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/pojo/StandardProductList.java b/inspect-server/src/main/java/com/yuanchu/mom/pojo/StandardProductList.java index f1d2e8e..95d6e99 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/pojo/StandardProductList.java +++ b/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; /** * 澶栭敭锛氭爣鍑嗘柟娉昳d */ @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; } \ No newline at end of file diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java b/inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java index 8496f6a..d39ed07 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/StandardTreeService.java +++ b/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; } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java index a091ef4..ddfeaa4 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/InsOrderServiceImpl.java +++ b/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]); } diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardProductListServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardProductListServiceImpl.java index 3547e77..0f2c8b5 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardProductListServiceImpl.java +++ b/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++; diff --git a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java b/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java index 41a8ecc..c2ec01a 100644 --- a/inspect-server/src/main/java/com/yuanchu/mom/service/impl/StandardTreeServiceImpl.java +++ b/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鍙互闃叉涓枃涔辩爜 褰撶劧鍜宔asyexcel娌℃湁鍏崇郴 + 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)); diff --git a/inspect-server/src/main/resources/mapper/StandardTreeMapper.xml b/inspect-server/src/main/resources/mapper/StandardTreeMapper.xml index 90f8e50..ddcab1d 100644 --- a/inspect-server/src/main/resources/mapper/StandardTreeMapper.xml +++ b/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> diff --git a/system-run/pom.xml b/system-run/pom.xml index 7952a24..1135874 100644 --- a/system-run/pom.xml +++ b/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> diff --git a/system-run/src/main/resources/application-dev.yml b/system-run/src/main/resources/application-dev.yml index 6ccc686..644eada 100644 --- a/system-run/src/main/resources/application-dev.yml +++ b/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 # 寮�鍚痬ybatis-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: diff --git a/system-run/src/main/resources/application-prod.yml b/system-run/src/main/resources/application-prod.yml index 6f50888..e473ca3 100644 --- a/system-run/src/main/resources/application-prod.yml +++ b/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杩炴帴姹犻厤缃� -- Gitblit v1.9.3