|
@@ -1,10 +1,12 @@
|
|
|
package com.github.jfcloud.gene.sample.service.biz;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.bean.copier.CopyOptions;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import cn.hutool.core.date.DatePattern;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
+import cn.hutool.core.io.file.FileNameUtil;
|
|
|
import cn.hutool.core.io.resource.ResourceUtil;
|
|
|
import cn.hutool.core.lang.Assert;
|
|
|
import cn.hutool.core.util.EscapeUtil;
|
|
@@ -21,6 +23,7 @@ import com.github.jfcloud.gene.common.constant.StrConstant;
|
|
|
import com.github.jfcloud.gene.common.constant.WhetherEnum;
|
|
|
import com.github.jfcloud.gene.common.util.CustomIdGenerator;
|
|
|
import com.github.jfcloud.gene.common.util.UserUtil;
|
|
|
+import com.github.jfcloud.gene.constants.ConstantField;
|
|
|
import com.github.jfcloud.gene.constants.GeneStatusEnum;
|
|
|
import com.github.jfcloud.gene.file.service.FileInfoService;
|
|
|
import com.github.jfcloud.gene.file.vo.FileVo;
|
|
@@ -136,15 +139,15 @@ public class SampleFoodServiceImpl extends ServiceImpl<SampleFoodMapper, SampleF
|
|
|
checkbox(mappings, "是否以干基计", "☐是 ☐否", WhetherEnum.getLabel(detail.getDryBasis()));
|
|
|
checkbox(mappings, "其他要求", "☐CNAS ☐CMA ☐保密数据", detail.getOtherRequirements());
|
|
|
checkbox(mappings, "自定义", "☐自定义", detail.getSampleType());
|
|
|
- mappings.put("自定义-其他", detail.getSampleTypeOther());
|
|
|
+ mappings.put("自定义-其他", detail.getSampleType().contains("自定义") ? detail.getSampleTypeOther() : "");
|
|
|
checkbox(mappings, "样品照片", "☐否(不需要) ☐是(需要) ☐外观 ☐内容物 ☐其他", detail.getSamplePhoto());
|
|
|
- mappings.put("样品照片-其他", detail.getSamplePhotoOther());
|
|
|
+ mappings.put("样品照片-其他", detail.getSamplePhoto().contains("其他") ? detail.getSamplePhotoOther(): "");
|
|
|
checkbox(mappings, "样品储存要求", "☐室温 ☐冷藏(0℃~8℃) ☐冷冻(≤18℃) ☐避光 ☐干燥 ☐其他", detail.getStorageRequirements());
|
|
|
- mappings.put("样品储存要求-其他", detail.getStorageRequirementsOther());
|
|
|
+ mappings.put("样品储存要求-其他", detail.getStorageRequirements().contains("其他") ? detail.getStorageRequirementsOther(): "");
|
|
|
checkbox(mappings, "样品保留期限", "☐常规样品一个月(默认) ☐新鲜产品一周 ☐冷冻产品三周", detail.getRetentionPeriod());
|
|
|
mappings.put("非危险性样品", (WhetherEnum.NO.getCode().equals(detail.getHazard()) ? "☑" : "☐") + "非危险性样品");
|
|
|
checkbox(mappings, "危险性样品", "☐易燃易爆 ☐腐蚀性 ☐毒性(非剧毒) ☐氧化剂 ☐其他", detail.getHazardDescription());
|
|
|
- mappings.put("危险性样品-其他", detail.getHazardDescriptionOther());
|
|
|
+ mappings.put("危险性样品-其他", detail.getHazardDescription().contains("其他") ? detail.getHazardDescriptionOther(): "");
|
|
|
checkbox(mappings, "服务时限", "☐标准时间(7个工作日) ☐5个工作日\n\n☐3个工作日 ☐1个工作日\n\n☐加急", detail.getServiceDeadline());
|
|
|
|
|
|
List<SampleFoodDetailVo> detailList = detail.getDetailList();
|
|
@@ -276,7 +279,11 @@ public class SampleFoodServiceImpl extends ServiceImpl<SampleFoodMapper, SampleF
|
|
|
//保存为excel
|
|
|
String targetFileName = String.format("食品检测部门送检单(详细)-%s-%s.xlsx", applyDate, RandomUtil.randomString(RandomUtil.BASE_CHAR_NUMBER_LOWER, 4));
|
|
|
if (StrUtil.isNotBlank(detail.getSenderName())) {
|
|
|
- targetFileName = String.format("食品检测部门送检单(详细)-%s-%s-%s.xlsx", detail.getSenderName(), applyDate, RandomUtil.randomString(RandomUtil.BASE_CHAR_NUMBER_LOWER, 4));
|
|
|
+ String senderName = detail.getSenderName()
|
|
|
+ .replaceAll(" ", "")
|
|
|
+ .replaceAll(ConstantField.INVISIBLE_UNICODE, "");
|
|
|
+ senderName = FileNameUtil.cleanInvalid(senderName);
|
|
|
+ targetFileName = String.format("食品检测部门送检单(详细)-%s-%s-%s.xlsx", senderName, applyDate, RandomUtil.randomString(RandomUtil.BASE_CHAR_NUMBER_LOWER, 4));
|
|
|
}
|
|
|
File tmpFile = new File(System.getProperty("user.dir"), targetFileName);
|
|
|
opcPackagePkg.save(tmpFile);
|
|
@@ -305,6 +312,7 @@ public class SampleFoodServiceImpl extends ServiceImpl<SampleFoodMapper, SampleF
|
|
|
} catch (Exception e) {
|
|
|
log.error("宠物食品附件生成失败 id={} error={}", sampleId, e.getMessage());
|
|
|
log.error(e.getMessage(), e);
|
|
|
+ throw new RuntimeException("附件生成失败");
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -376,8 +384,16 @@ public class SampleFoodServiceImpl extends ServiceImpl<SampleFoodMapper, SampleF
|
|
|
List<SampleFoodDetail> detailList = sampleFoodDetailService.list(new LambdaQueryWrapper<>(SampleFoodDetail.class)
|
|
|
.eq(SampleFoodDetail::getSampleFoodId, sampleFood.getId()));
|
|
|
|
|
|
- SampleFoodVo sampleFoodVo = BeanUtil.copyProperties(sampleFood, SampleFoodVo.class);
|
|
|
- sampleFoodVo.setDetailList(BeanUtil.copyToList(detailList, SampleFoodDetailVo.class));
|
|
|
+ CopyOptions copyOptions = CopyOptions.create().setFieldValueEditor((fieldName, fieldValue) -> {
|
|
|
+ //字段值为null时,设置为""
|
|
|
+ if (!fieldName.contains("Id") && !fieldName.contains("Date") && fieldValue == null) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ return fieldValue;
|
|
|
+ });
|
|
|
+ SampleFoodVo sampleFoodVo = new SampleFoodVo();
|
|
|
+ BeanUtil.copyProperties(sampleFood, sampleFoodVo, copyOptions);
|
|
|
+ sampleFoodVo.setDetailList(BeanUtil.copyToList(detailList, SampleFoodDetailVo.class, copyOptions));
|
|
|
return sampleFoodVo;
|
|
|
}
|
|
|
}
|