doc/20260313_À¤Ì©»¯¹¤.sql
@@ -25,3 +25,5 @@ update_time datetime null comment 'æ´æ°æ¶é´', unique idx_raw_material_id_quality_inspect_item_id (raw_material_id, quality_inspect_item_id) ); alter table raw_material add quantity decimal(18, 2) null; src/main/java/com/ruoyi/common/enums/FileNameType.java
@@ -14,7 +14,8 @@ SHIP(9),//åè´§å°è´¦ INSPECTION_PRODUCTION_BEFORE(10), INSPECTION_PRODUCTION_AFTER(11), INSPECTION(12);//å·¡æ£ ç产å INSPECTION(12),//å·¡æ£ ç产å DeviceRepair(13);// 设å¤ç»´ä¿® private final int value; src/main/java/com/ruoyi/common/enums/RawMaterialCheckResult.java
@@ -26,10 +26,10 @@ */ public static RawMaterialCheckResult fromValue(Integer value) { for (RawMaterialCheckResult type : values()) { if (type.getValue().equals(value)) { if (type.getCode().equals(value)) { return type; } } throw new IllegalArgumentException("æªç¥ç RawMaterialCheckResult å¼: " + value); return null; } } src/main/java/com/ruoyi/common/enums/RawMaterialCheckType.java
@@ -27,10 +27,10 @@ */ public static RawMaterialCheckType fromValue(Integer value) { for (RawMaterialCheckType type : values()) { if (type.getValue().equals(value)) { if (type.getCode().equals(value)) { return type; } } throw new IllegalArgumentException("æªç¥ç RawMaterialCheckType å¼: " + value); return null; } } src/main/java/com/ruoyi/common/enums/RawMaterialInspectState.java
@@ -26,10 +26,10 @@ */ public static RawMaterialInspectState fromValue(Integer value) { for (RawMaterialInspectState type : values()) { if (type.getValue().equals(value)) { if (type.getCode().equals(value)) { return type; } } throw new IllegalArgumentException("æªç¥ç RawMaterialInspectState å¼: " + value); return null; } } src/main/java/com/ruoyi/device/dto/DeviceRepairDto.java
@@ -3,11 +3,13 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.ruoyi.sales.pojo.CommonFile; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; import java.util.Date; import java.util.List; @Data public class DeviceRepairDto { @@ -74,5 +76,7 @@ private String sparePartsNames; private List<CommonFile> fileList; } src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
@@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.other.pojo.TempFile; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import java.util.Date; import java.util.List; @Data @TableName("device_repair") @@ -76,5 +78,6 @@ @ApiModelProperty("é¢ç¨å¤ä»¶ids") private String sparePartsIds; @ApiModelProperty("æä»¶å表") private List<TempFile> fileList; } src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
@@ -1,11 +1,12 @@ package com.ruoyi.device.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import com.github.xiaoymin.knife4j.core.util.StrUtil; import com.google.common.collect.Lists; import com.ruoyi.common.enums.FileNameType; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.device.dto.DeviceDefectRecordDto; @@ -20,14 +21,15 @@ import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper; import com.ruoyi.measuringinstrumentledger.pojo.SpareParts; import com.ruoyi.measuringinstrumentledger.service.SparePartsService; import com.ruoyi.other.pojo.TempFile; import com.ruoyi.other.service.TempFileService; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.pojo.CommonFile; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.tuple.Pair; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.util.*; @@ -46,12 +48,20 @@ private IDeviceLedgerService deviceLedgerService; @Autowired private SparePartsMapper sparePartsMapper; @Autowired private TempFileService tempFileService; @Autowired private CommonFileMapper commonFileMapper; @Override public IPage<DeviceRepairDto> queryPage(Page page, DeviceRepairDto deviceRepairDto) { IPage<DeviceRepairDto> deviceRepairDtoIPage = deviceRepairMapper.queryPage(page, deviceRepairDto); List<DeviceRepairDto> records = deviceRepairDtoIPage.getRecords(); List<Long> recordIds = records.stream() .map(DeviceRepairDto::getId) .collect(Collectors.toList()); if (!CollectionUtils.isEmpty(records)) { // 1. è·åææå¯ä¸çå¤ä»¶ID Set<String> allIds = records.stream() @@ -86,6 +96,12 @@ record.setSparePartsNames(names); }); } // å¤çæä»¶ List<CommonFile> commonFiles = commonFileMapper.selectList(new LambdaQueryWrapper<CommonFile>().in(CommonFile::getCommonId, recordIds) .eq(CommonFile::getType, FileNameType.DeviceRepair.getValue())); Map<Long, List<CommonFile>> collect = commonFiles.stream() .collect(Collectors.groupingBy(CommonFile::getCommonId)); records.forEach(record -> record.setFileList(collect.get(record.getId()))); } return deviceRepairDtoIPage; @@ -94,6 +110,17 @@ @Override public AjaxResult saveDeviceRepair(DeviceRepair deviceRepair) { DeviceLedger byId = deviceLedgerService.getById(deviceRepair.getDeviceLedgerId()); if (CollectionUtils.isNotEmpty(deviceRepair.getFileList())) { List<String> fileIds = deviceRepair.getFileList().stream() .map(TempFile::getTempId) .collect(Collectors.toList()); try { tempFileService.migrateTempFilesToFormal(deviceRepair.getId(), fileIds, FileNameType.DeviceRepair.getValue()); } catch (Exception e) { log.error("设å¤ç»´ä¿®æä»¶è¿ç§»é误", e); } } deviceRepair.setDeviceName(byId.getDeviceName()); deviceRepair.setDeviceModel(byId.getDeviceModel()); boolean save = this.save(deviceRepair); @@ -106,6 +133,16 @@ @Override public AjaxResult updateDeviceRepair(DeviceRepair deviceRepair) { if (this.updateById(deviceRepair)) { if (CollectionUtils.isNotEmpty(deviceRepair.getFileList())) { List<String> fileIds = deviceRepair.getFileList().stream() .map(TempFile::getTempId) .collect(Collectors.toList()); try { tempFileService.migrateTempFilesToFormal(deviceRepair.getId(), fileIds, FileNameType.DeviceRepair.getValue()); } catch (Exception e) { log.error("设å¤ç»´ä¿®æä»¶è¿ç§»é误", e); } } Long id = deviceRepair.getId(); // DeviceDefectRecordDto deviceDefectRecordDto = new DeviceDefectRecordDto(); src/main/java/com/ruoyi/inspectiontask/pojo/QualityInspectItem.java
@@ -1,10 +1,12 @@ package com.ruoyi.inspectiontask.pojo; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.time.LocalDateTime; import lombok.Data; /** * è´¨éæ£æµé¡¹ @@ -59,12 +61,16 @@ * */ @TableField(value = "create_time",fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createTime; /** * */ @TableField(value = "update_time",fill = FieldFill.INSERT_UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; /** src/main/java/com/ruoyi/other/service/TempFileService.java
@@ -4,9 +4,12 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; public interface TempFileService { TempFile uploadFile(MultipartFile file,Integer type) throws IOException; String uploadByCommon(MultipartFile file, Integer type, Long id) throws IOException; void migrateTempFilesToFormal(Long businessId, List<String> tempFileIds, Integer fileType) throws IOException; } src/main/java/com/ruoyi/other/service/impl/TempFileServiceImpl.java
@@ -9,16 +9,13 @@ import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.pojo.CommonFile; import lombok.extern.slf4j.Slf4j; import org.apache.catalina.util.URLEncoder; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -98,6 +95,7 @@ * @param fileType æä»¶ç±»å(æ¥èªFileNameType) * @throws IOException æä»¶æä½å¼å¸¸ */ @Override public void migrateTempFilesToFormal(Long businessId, List<String> tempFileIds, Integer fileType) throws IOException { if (com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(tempFileIds)) { return; src/main/java/com/ruoyi/quality/controller/RawMaterialController.java
@@ -1,12 +1,17 @@ package com.ruoyi.quality.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.enums.RawMaterialInspectState; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.quality.dto.RawMaterialDto; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.RawMaterial; import com.ruoyi.quality.service.RawMaterialService; import com.ruoyi.staff.pojo.StaffOnJob; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -31,6 +36,13 @@ return AjaxResult.success(rawMaterialService.listPage(page, rawMaterialDto)); } /** * åæè¯¦æ */ @GetMapping("/detail/{id}") public AjaxResult detail(@PathVariable Long id) { return AjaxResult.success(rawMaterialService.detail(id)); } /** * åææ°å¢ @@ -41,11 +53,37 @@ } /** * æ£æµæäº¤ * @param id åæid * @return */ @PatchMapping("/submit/{id}") public AjaxResult submit(@PathVariable Long id) { RawMaterial rawMaterial = new RawMaterial(); rawMaterial.setId(id); rawMaterial.setInspectState(RawMaterialInspectState.RawMaterialInspectStateSubmitted.getCode()); return AjaxResult.success(rawMaterialService.updateById(rawMaterial)); } /** * ä¿®æ¹æ£éªäºº * @param rawMaterialDto åæ * @return */ @PatchMapping("/updateCheckUserName") public AjaxResult updateCheckUserName(@RequestBody RawMaterialDto rawMaterialDto) { RawMaterial rawMaterial = new RawMaterial(); rawMaterial.setId(rawMaterialDto.getId()); rawMaterial.setCheckUserName(rawMaterialDto.getCheckUserName()); return AjaxResult.success(rawMaterialService.updateById(rawMaterial)); } /** * åææ´æ° */ @PutMapping("") public AjaxResult update(@RequestBody RawMaterialDto rawMaterialDto) { return AjaxResult.success(rawMaterialService.updateById(rawMaterialDto)); return AjaxResult.success(rawMaterialService.update(rawMaterialDto)); } /** @@ -55,4 +93,17 @@ public AjaxResult delete(@RequestBody List<Integer> ids) { return AjaxResult.success(rawMaterialService.removeByIds(ids)); } /** * 导åºåææ°æ® */ @PostMapping("/export") public void export(HttpServletResponse response, RawMaterialDto rawMaterialDto) { rawMaterialService.export(response, rawMaterialDto); } @PostMapping("/down") public void down(HttpServletResponse response,@RequestBody RawMaterialDto rawMaterialDto) { rawMaterialService.down(response, rawMaterialDto); } } src/main/java/com/ruoyi/quality/dto/RawMaterialDto.java
@@ -1,16 +1,13 @@ package com.ruoyi.quality.dto; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.framework.aspectj.lang.annotation.Excel; import com.ruoyi.inspectiontask.pojo.QualityInspectItem; import com.ruoyi.quality.pojo.RawMaterial; import com.ruoyi.quality.pojo.RawMaterialQualityInspectItem; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.time.LocalDate; import java.util.List; /** @@ -24,18 +21,14 @@ /** * å¼å§æ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @ApiModelProperty("表åæç´¢æ¶é´èå´ï¼å¼å§æ¶é´") private LocalDate entryDateStart; private String entryDateStart; /** * ç»ææ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") @ApiModelProperty("表åæç´¢æ¶é´èå´ï¼ç»ææ¶é´") private LocalDate entryDateEnd; private String entryDateEnd; @ApiModelProperty("æ£éªç±»å 0å ¥åºæ£ 1è½¦é´æ£ 2åºåæ£") private String checkTypeText; @@ -46,6 +39,20 @@ @ApiModelProperty("ç±»å«(0:æªæäº¤;1:å·²æäº¤)") private String inspectStateText; @ApiModelProperty("åææ£æµé¡¹å表ids") private List<Long> qualityInspectItemIds; @ApiModelProperty("åææ£æµé¡¹å表") private List<QualityInspectItem> qualityInspectItem; @ApiModelProperty("产ååç§°") @Excel(name = "产ååç§°") private String productName; @ApiModelProperty("è§æ ¼åå·") @Excel(name = "è§æ ¼åå·") private String model; @ApiModelProperty("产åid") private Long productId; @ApiModelProperty("åä½") private String unit; } src/main/java/com/ruoyi/quality/dto/RawMaterialQualityInspectItemDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,27 @@ package com.ruoyi.quality.dto; import com.ruoyi.quality.pojo.RawMaterialQualityInspectItem; import lombok.Data; @Data public class RawMaterialQualityInspectItemDto extends RawMaterialQualityInspectItem { /** * 项ç®åç§° */ private String name; /** * åä½ */ private String unit; /** * æ åå¼ */ private String standardValue; /** * å æ§å¼ */ private String internalControl; } src/main/java/com/ruoyi/quality/pojo/RawMaterial.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.*; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; @@ -35,19 +36,28 @@ @ApiModelProperty("产ååå·id") private Long productModelId; @ApiModelProperty("æ¹æ¬¡å·") private String batchNo; @ApiModelProperty("æ£éªç±»å 0å ¥åºæ£ 1è½¦é´æ£ 2åºåæ£") @ApiModelProperty("æ£éªç±»å 0å ¥åæ£ 1è½¦é´æ£ 2åºåæ£") @Excel(name = "æ£éªç±»å", readConverterExp = "0=å ¥åæ£,1=è½¦é´æ£,2=åºåæ£") private Integer checkType; @ApiModelProperty("æ¹æ¬¡å·") @Excel(name = "æ¹æ¬¡å·") private String batchNo; @ApiModelProperty("æ°é") @Excel(name = "æ°é") private BigDecimal quantity; @ApiModelProperty("æ£éªç»æ 0åæ ¼ 1ä¸åæ ¼") @Excel(name = "æ£éªç»æ", readConverterExp = "0=åæ ¼,1=ä¸åæ ¼") private Integer checkResult; @ApiModelProperty("ç±»å«(0:æªæäº¤;1:å·²æäº¤)") @Excel(name = "æäº¤ç¶æ", readConverterExp = "0=æªæäº¤,1=å·²æäº¤") private Integer inspectState; @ApiModelProperty("æ£éªååç§°") @Excel(name = "æ£éªå") private String checkUserName; @ApiModelProperty("æ£éªæ¥æ") src/main/java/com/ruoyi/quality/pojo/RawMaterialQualityInspectItem.java
@@ -1,16 +1,13 @@ package com.ruoyi.quality.pojo; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> @@ -37,6 +34,9 @@ @ApiModelProperty("è´¨éæ£éªé¡¹id") private Long qualityInspectItemId; @ApiModelProperty("åéªå¼") private String testValue; @ApiModelProperty("å½å ¥æ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @@ -44,4 +44,7 @@ @ApiModelProperty("æ´æ°æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @TableField(select = false, exist = false) private Integer index; } src/main/java/com/ruoyi/quality/service/RawMaterialService.java
@@ -2,10 +2,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.quality.dto.RawMaterialDto; import com.ruoyi.quality.pojo.QualityInspectFile; import com.ruoyi.quality.pojo.RawMaterial; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.quality.dto.RawMaterialDto; import com.ruoyi.quality.pojo.RawMaterial; import javax.servlet.http.HttpServletResponse; /** * <p> @@ -18,5 +19,13 @@ public interface RawMaterialService extends IService<RawMaterial> { IPage<RawMaterialDto> listPage(Page page, RawMaterialDto rawMaterialDto); RawMaterialDto detail(Long id); boolean add(RawMaterialDto rawMaterialDto); boolean update(RawMaterialDto rawMaterialDto); void export(HttpServletResponse response, RawMaterialDto rawMaterialDto); void down(HttpServletResponse response, RawMaterialDto rawMaterialDto); } src/main/java/com/ruoyi/quality/service/impl/RawMaterialServiceImpl.java
@@ -1,25 +1,42 @@ package com.ruoyi.quality.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.collaborativeApproval.dto.DutyPlanDTO; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; import com.ruoyi.basic.mapper.ProductMapper; import com.ruoyi.basic.mapper.ProductModelMapper; import com.ruoyi.basic.pojo.Product; import com.ruoyi.basic.pojo.ProductModel; import com.ruoyi.common.enums.RawMaterialCheckResult; import com.ruoyi.common.enums.RawMaterialCheckType; import com.ruoyi.common.enums.RawMaterialInspectState; import com.ruoyi.production.mapper.ProductProcessRouteMapper; import com.ruoyi.common.utils.HackLoopTableRenderPolicy; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.inspectiontask.mapper.QualityInspectItemMapper; import com.ruoyi.inspectiontask.pojo.QualityInspectItem; import com.ruoyi.quality.dto.RawMaterialDto; import com.ruoyi.quality.mapper.RawMaterialQualityInspectItemMapper; import com.ruoyi.quality.pojo.RawMaterial; import com.ruoyi.quality.dto.RawMaterialQualityInspectItemDto; import com.ruoyi.quality.mapper.RawMaterialMapper; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.quality.pojo.QualityInspectParam; import com.ruoyi.quality.pojo.RawMaterial; import com.ruoyi.quality.pojo.RawMaterialQualityInspectItem; import com.ruoyi.quality.service.RawMaterialQualityInspectItemService; import com.ruoyi.quality.service.RawMaterialService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.util.*; import java.util.stream.Collectors; @@ -38,33 +55,236 @@ private RawMaterialQualityInspectItemService rawMaterialQualityInspectItemService; private QualityInspectItemMapper qualityInspectItemMapper; private ProductModelMapper productModelMapper; private ProductMapper productMapper; @Override public IPage<RawMaterialDto> listPage(Page page, RawMaterialDto rawMaterialDto) { IPage<RawMaterialDto> rawMaterials = rawMaterialMapper.listPage(page, rawMaterialDto); for (RawMaterialDto rawMaterial : rawMaterials.getRecords()) { rawMaterial.setCheckTypeText(RawMaterialCheckType.fromValue(rawMaterial.getCheckType()).getValue()); rawMaterial.setCheckResultText(RawMaterialCheckResult.fromValue(rawMaterial.getCheckResult()).getValue()); rawMaterial.setInspectStateText(RawMaterialInspectState.fromValue(rawMaterial.getInspectState()).getValue()); IPage<RawMaterialDto> pageRes = rawMaterialMapper.listPage(page, rawMaterialDto); List<RawMaterialDto> rawMaterials = pageRes.getRecords(); Map<Long, ProductModel> productModelMap = new HashMap<>(); Map<Long, Product> productMap = new HashMap<>(); if (CollectionUtils.isNotEmpty(rawMaterials)) { List<Long> productModelIds = rawMaterials.stream().map(RawMaterialDto::getProductModelId).collect(Collectors.toList()); List<ProductModel> productModels = productModelMapper.selectList(new LambdaQueryWrapper<ProductModel>() .in(ProductModel::getId, productModelIds)); productModelMap = productModels.stream().collect(Collectors.toMap(ProductModel::getId, productModel -> productModel)); List<Long> productIds = productModels.stream().map(ProductModel::getProductId).collect(Collectors.toList()); List<Product> products = productMapper.selectList(new LambdaQueryWrapper<Product>() .in(Product::getId, productIds)); productMap = products.stream().collect(Collectors.toMap(Product::getId, product -> product)); } return rawMaterials; for (RawMaterialDto rawMaterial : pageRes.getRecords()) { rawMaterial.setCheckTypeText(RawMaterialCheckType.fromValue(rawMaterial.getCheckType()) == null ? "" : RawMaterialCheckType.fromValue(rawMaterial.getCheckType()).getValue()); rawMaterial.setCheckResultText(RawMaterialCheckResult.fromValue(rawMaterial.getCheckResult()) == null ? "" : RawMaterialCheckResult.fromValue(rawMaterial.getCheckResult()).getValue()); rawMaterial.setInspectStateText(RawMaterialInspectState.fromValue(rawMaterial.getInspectState()) == null ? "" : RawMaterialInspectState.fromValue(rawMaterial.getInspectState()).getValue()); rawMaterial.setProductName(productMap.get(productModelMap.get(rawMaterial.getProductModelId()).getProductId()).getProductName()); rawMaterial.setModel(productModelMap.get(rawMaterial.getProductModelId()).getModel()); rawMaterial.setProductId(productModelMap.get(rawMaterial.getProductModelId()).getProductId()); } return pageRes; } @Override public RawMaterialDto detail(Long id) { RawMaterial rawMaterial = rawMaterialMapper.selectById(id); RawMaterialDto rawMaterialDto = new RawMaterialDto(); BeanUtils.copyBeanProp(rawMaterialDto, rawMaterial); // è·åæ£æµé¡¹å ³èå ³ç³» List<RawMaterialQualityInspectItem> rawQualityList = rawMaterialQualityInspectItemService.list(new LambdaQueryWrapper<RawMaterialQualityInspectItem>() .eq(RawMaterialQualityInspectItem::getRawMaterialId, id)); Map<Long, RawMaterialQualityInspectItem> map = rawQualityList.stream().collect(Collectors.toMap(RawMaterialQualityInspectItem::getQualityInspectItemId, qualityInspectItem -> qualityInspectItem)); // è·åæ£éªé¡¹ç® List<QualityInspectItem> qualityInspectItems = new ArrayList<>(); if (CollectionUtils.isNotEmpty(rawQualityList)) { List<Long> qualityInspectItemIds = rawQualityList.stream().map(RawMaterialQualityInspectItem::getQualityInspectItemId).collect(Collectors.toList()); qualityInspectItems = qualityInspectItemMapper.selectList(new LambdaQueryWrapper<QualityInspectItem>() .in(QualityInspectItem::getId, qualityInspectItemIds)); } // æ¿æ¢åéªå¼ qualityInspectItems.forEach(qualityInspectItem -> { qualityInspectItem.setTestValue(map.get(qualityInspectItem.getId()).getTestValue()); }); rawMaterialDto.setQualityInspectItem(qualityInspectItems); // æ¥è¯¢äº§åid ProductModel productModel = productModelMapper.selectById(rawMaterialDto.getProductModelId()); rawMaterialDto.setProductId(productModel.getProductId()); rawMaterialDto.setUnit(productModel.getUnit()); return rawMaterialDto; } @Override @Transactional(rollbackFor = Exception.class) public boolean add(RawMaterialDto rawMaterialDto) { rawMaterialDto.setInspectState(RawMaterialInspectState.RawMaterialInspectStateUnsubmitted.getCode()); // æ°å¢åæ int i = rawMaterialMapper.insert(rawMaterialDto); // æ°å¢æ£æµé¡¹å ³èå ³ç³» if (rawMaterialDto.getQualityInspectItemIds() != null && !rawMaterialDto.getQualityInspectItemIds().isEmpty()) { List<RawMaterialQualityInspectItem> rawMaterialQualityInspectItems = rawMaterialDto.getQualityInspectItemIds().stream() .map(id -> { if (CollectionUtils.isNotEmpty(rawMaterialDto.getQualityInspectItem())) { List<RawMaterialQualityInspectItem> rawMaterialQualityInspectItems = rawMaterialDto.getQualityInspectItem().stream() .map(qualityInspectItem -> { RawMaterialQualityInspectItem item = new RawMaterialQualityInspectItem(); item.setRawMaterialId(rawMaterialDto.getId()); item.setQualityInspectItemId(id); item.setQualityInspectItemId(qualityInspectItem.getId()); item.setTestValue(qualityInspectItem.getTestValue()); return item; }) .collect(Collectors.toList()); rawMaterialQualityInspectItemService.saveBatch(rawMaterialQualityInspectItems); } // æ°å¢åæ return rawMaterialMapper.insert(rawMaterialDto) > 0; return i > 0; } } @Override @Transactional(rollbackFor = Exception.class) public boolean update(RawMaterialDto rawMaterialDto) { // æ´æ°åæ if (rawMaterialMapper.updateById(rawMaterialDto) <= 0) { return false; } Long rawMaterialId = rawMaterialDto.getId(); List<QualityInspectItem> newQualityInspectItems = rawMaterialDto.getQualityInspectItem(); // è·åç°ææ£éªé¡¹å ³èè®°å½ List<RawMaterialQualityInspectItem> existingItems = rawMaterialQualityInspectItemService.list( new LambdaQueryWrapper<RawMaterialQualityInspectItem>() .eq(RawMaterialQualityInspectItem::getRawMaterialId, rawMaterialId) ); // å é¤ä¸åå¨çå ³èè®°å½ if (CollectionUtils.isEmpty(newQualityInspectItems)) { // å¦ææ²¡ææ£éªé¡¹ï¼å 餿æç°æå ³èè®°å½ if (CollectionUtils.isNotEmpty(existingItems)) { List<Long> existingIds = existingItems.stream() .map(RawMaterialQualityInspectItem::getId) .collect(Collectors.toList()); rawMaterialQualityInspectItemService.removeByIds(existingIds); } return true; } // è·åæ°æ£éªé¡¹çIDéååæµè¯å¼æ å° Set<Long> newItemIds = newQualityInspectItems.stream() .map(QualityInspectItem::getId) .collect(Collectors.toSet()); Map<Long, String> testValueMap = newQualityInspectItems.stream() .collect(Collectors.toMap(QualityInspectItem::getId, QualityInspectItem::getTestValue)); // å é¤ä¸åå¨çå ³èè®°å½ List<Long> toDelete = existingItems.stream() .filter(item -> !newItemIds.contains(item.getQualityInspectItemId())) .map(RawMaterialQualityInspectItem::getId) .collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(toDelete)) { rawMaterialQualityInspectItemService.removeByIds(toDelete); } // å¤çæ´æ°æ°æ® List<RawMaterialQualityInspectItem> toUpdate = existingItems.stream() .filter(item -> newItemIds.contains(item.getQualityInspectItemId())) .peek(item -> item.setTestValue(testValueMap.get(item.getQualityInspectItemId()))) .collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(toUpdate)) { rawMaterialQualityInspectItemService.updateBatchById(toUpdate); } // å¤çæ°å¢æ°æ® Set<Long> existingItemIds = existingItems.stream() .map(RawMaterialQualityInspectItem::getQualityInspectItemId) .collect(Collectors.toSet()); List<RawMaterialQualityInspectItem> toCreate = newQualityInspectItems.stream() .filter(item -> !existingItemIds.contains(item.getId())) .map(item -> { RawMaterialQualityInspectItem newItem = new RawMaterialQualityInspectItem(); newItem.setRawMaterialId(rawMaterialId); newItem.setQualityInspectItemId(item.getId()); newItem.setTestValue(item.getTestValue()); return newItem; }) .collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(toCreate)) { rawMaterialQualityInspectItemService.saveBatch(toCreate); } return true; } @Override public void export(HttpServletResponse response, RawMaterialDto rawMaterialDto) { List<RawMaterialDto> rawMaterials = rawMaterialMapper.listPage(new Page<>(1, Integer.MAX_VALUE), rawMaterialDto).getRecords(); ExcelUtil<RawMaterialDto> util = new ExcelUtil<RawMaterialDto>(RawMaterialDto.class); util.exportExcel(response, rawMaterials, "åææ£éªå¯¼åº"); } @Override public void down(HttpServletResponse response, RawMaterialDto rawMaterialDto) { RawMaterial rawMaterial = rawMaterialMapper.selectById(rawMaterialDto.getId()); // è·å产ååå·ä¿¡æ¯ ProductModel productModel = productModelMapper.selectById(rawMaterial.getProductModelId()); Product product = productMapper.selectById(productModel.getProductId()); RawMaterialDto inspect = new RawMaterialDto(); BeanUtils.copyProperties(rawMaterial, inspect); inspect.setModel(productModel.getModel()); inspect.setProductName(product.getProductName()); inspect.setCheckTypeText(RawMaterialCheckType.fromValue(rawMaterial.getCheckType()) == null ? "" : RawMaterialCheckType.fromValue(rawMaterial.getCheckType()).getValue()); inspect.setCheckResultText(RawMaterialCheckResult.fromValue(rawMaterial.getCheckResult()) == null ? "" : RawMaterialCheckResult.fromValue(rawMaterial.getCheckResult()).getValue()); List<RawMaterialQualityInspectItem> paramList = rawMaterialQualityInspectItemService.list( new LambdaQueryWrapper<RawMaterialQualityInspectItem>() .eq(RawMaterialQualityInspectItem::getRawMaterialId, rawMaterialDto.getId()) ); List<RawMaterialQualityInspectItemDto> inspectItems = new ArrayList<>(); int index = 1; for (RawMaterialQualityInspectItem item : paramList) { RawMaterialQualityInspectItemDto dto = new RawMaterialQualityInspectItemDto(); BeanUtils.copyProperties(item, dto); QualityInspectItem qualityInspectItem = qualityInspectItemMapper.selectById(item.getQualityInspectItemId()); dto.setName(qualityInspectItem.getName()); dto.setUnit(qualityInspectItem.getUnit()); dto.setStandardValue(qualityInspectItem.getStandardValue()); dto.setInternalControl(qualityInspectItem.getInternalControl()); dto.setIndex(index); inspectItems.add(dto); index++; } InputStream inputStream = this.getClass().getResourceAsStream("/static/report-template.docx"); Configure configure = Configure.builder() .bind("paramList", new HackLoopTableRenderPolicy()) .build(); XWPFTemplate template = XWPFTemplate.compile(inputStream, configure).render( new HashMap<String, Object>() {{ put("inspect", inspect); put("paramList", inspectItems); }}); try { response.setContentType("application/msword"); String fileName = URLEncoder.encode( "æ£éªæ¥å", "UTF-8"); response.setHeader("Access-Control-Expose-Headers", "Content-Disposition"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".docx"); OutputStream os = response.getOutputStream(); template.write(os); os.flush(); os.close(); inputStream.close(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("导åºå¤±è´¥"); } } } src/main/resources/application-kthg.yml
@@ -75,7 +75,7 @@ # ä¸»åºæ°æ®æº master: # url: jdbc:mysql://localhost:3306/product-inventory-management-new?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://1.15.17.182:9999/product-inventory-management-kthg?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-kthg?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: xd@123456.. # ä»åºæ°æ®æº @@ -256,4 +256,4 @@ # temp-dir: D:/ruoyi/temp/uploads # 临æ¶ç®å½ # upload-dir: D:/ruoyi/prod/uploads # æ£å¼ç®å½ temp-dir: /javaWork/product-inventory-management/file/temp/uploads upload-dir: /javaWork/product-inventory-management/file/prod/uploads upload-dir: /javaWork/product-inventory-management/file/prod/uploads src/main/resources/mapper/quality/RawMaterialMapper.xml
@@ -28,10 +28,10 @@ AND rm.check_type = #{params.checkType} </if> <if test="params.entryDateStart != null and params.entryDateStart != '' "> AND rm.check_time >= DATE_FORMAT(#{params.entryDateStart},'%Y-%m-%d') AND rm.check_time >= #{params.entryDateStart} </if> <if test="params.entryDateEnd != null and params.entryDateEnd != '' "> AND rm.check_time <= DATE_FORMAT(#{params.entryDateEnd},'%Y-%m-%d') AND rm.check_time <= #{params.entryDateEnd} </if> ORDER BY rm.check_time DESC </select> src/main/resources/static/report-template.docxBinary files differ