Commit da556a98 by lijingjing

霍煤多委托项目原始记录生成;

parent 131e4003
......@@ -13,6 +13,7 @@ import com.patzn.cloud.service.hmhj.entity.ItemDeviate;
import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.hmhj.vo.ItemVO;
import com.patzn.cloud.service.hmhj.vo.TesterWorkloadStatsVO;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
......@@ -604,6 +605,12 @@ public class EntrustSampleItemController extends ServiceController {
return success(entrustSampleItemService.saveExcelOriginalRecord(ids, templateId, getAccount(), entrustCode));
}
@ApiOperation(value = "填写原始记录 - 多委托检测项目", notes = "填写原始记录 - 多委托检测项目")
@PostMapping("/save_excel_original_records")
public RestResult<OriginalRecord> saveExcelOriginalRecords(@RequestParam("ids") Long[] ids, @RequestParam("templateId") Long templateId) {
return success(entrustSampleItemService.saveExcelOriginalRecords(ids, templateId, getAccount()));
}
@ApiOperation("样品质量判定")
@PostMapping("/sample_quality_judge")
......@@ -673,4 +680,38 @@ public class EntrustSampleItemController extends ServiceController {
RestAssert.fail(null == itemVO.getEntrustId(), "委托ID为空");
return success(entrustSampleItemService.getItemFillProgressQuery(getPage(), itemVO));
}
@ApiOperation(value = "按项目录入左侧列表", notes = "按项目录入左侧列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataType = "String"),
})
@PostMapping("/page_input_item_left")
public RestResult<Page<ItemVO>> pageInputItemLeft(ItemVO vo) {
vo.setCompanyId(currentCompanyId());
vo.setUid(currentUserId());
return success(entrustSampleItemService.pageInputItemLeft(getPage(), vo));
}
@ApiOperation(value = "按项目录入右侧列表", notes = "按项目录入右侧列表")
@ApiImplicitParams({
@ApiImplicitParam(name = RestConstants.PAGE_PAGE, value = "请求数据的页码", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = RestConstants.PAGE_ROWS, value = "每页条数", required = true, paramType = "query", dataType = "int"),
@ApiImplicitParam(name = RestConstants.PAGE_SIDX, value = "排序字段", paramType = "query", dataType = "String"),
@ApiImplicitParam(name = RestConstants.PAGE_SORD, value = "排序方式", paramType = "query", dataType = "String"),
})
@PostMapping("/page_input_item_right")
public RestResult<Page<ItemVO>> pageInputItemRight(ItemVO dto) {
dto.setUid(currentUserId());
dto.setCompanyId(currentCompanyId());
return success(entrustSampleItemService.pageInputItemRight(getPage(), dto));
}
@ApiOperation(value = "数据录入查询是否项目可以填写原始记录", notes = "数据录入查询是否项目可以填写原始记录")
@PostMapping("/check_can_write_original")
public RestResult<Boolean> checkCanWriteOriginal(@RequestParam("ids") Long[] ids) {
return success(entrustSampleItemService.checkCanWriteOriginal(ids));
}
}
......@@ -2,22 +2,20 @@ package com.patzn.cloud.service.lims.hmhj.controller;
import com.baomidou.kisso.annotation.Action;
import com.baomidou.kisso.annotation.Login;
import com.patzn.cloud.feign.lims.hmhj.client.OriginalTemplateClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.hmhj.entity.OriginalTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.api.RestConstants;
import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.feign.lims.hmhj.client.OriginalTemplateClient;
import com.patzn.cloud.oss.starter.OssFileResult;
import com.patzn.cloud.service.hmhj.entity.OriginalTemplate;
import com.patzn.cloud.service.lims.hmhj.service.IOriginalTemplateService;
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 java.util.List;
......@@ -100,7 +98,8 @@ public class OriginalTemplateController extends ServiceController implements Ori
@Login(action = Action.Skip)
@ApiOperation(value = "编辑原始记录", notes = "编辑证书模板")
@PostMapping({"/edit_original_{someParam}"})
public RestResult<Boolean> editOriginal(@PathVariable("someParam") String someParam, @RequestBody OssFileResult obsFileResult) {
public RestResult<Boolean>
editOriginal(@PathVariable("someParam") String someParam, @RequestBody OssFileResult obsFileResult) {
return success(originalTemplateService.editOriginal(someParam, obsFileResult));
}
......
......@@ -79,4 +79,10 @@ public interface EntrustSampleItemMapper extends BatchMapper<EntrustSampleItem>
boolean updateSampleRetakeInfoByEntrustId(@Param("entrustId") Long entrustId);
List<EntrustSampleItemIndexVO> selectItemTestByEntrustId(@Param("entrustId") Long entrustId);
@SqlParser(filter = true)
List<ItemVO> pageInputItemLeft(RowBounds rowBounds, @Param("vo") ItemVO vo);
@SqlParser(filter = true)
List<ItemVO> pageInputItemRight(RowBounds rowBounds, @Param("vo") ItemVO vo);
}
package com.patzn.cloud.service.lims.hmhj.original;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.hmhj.entity.OriginalTemplate;
import com.patzn.cloud.service.hmhj.entity.OriginalTemplateConfig;
......@@ -8,10 +9,14 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.util.List;
/**
* @author Meazty
*/
public class OriginalFactory {
private OriginalTemplate template;
private List<EntrustSampleItemVO> voList;
private Entrust entrust ;
private Entrust entrust;
private List<Entrust> entrustList;
private List<OriginalTemplateConfig> configList;
private XSSFWorkbook xssfWorkbook;
......@@ -23,24 +28,30 @@ public class OriginalFactory {
this.xssfWorkbook = xssfWorkbook;
}
public Operation getOperation(){
if (null==template.getMoreSheet() || 0 == template.getMoreSheet()){
public OriginalFactory(OriginalTemplate template, List<EntrustSampleItemVO> voList, List<OriginalTemplateConfig> configList, List<Entrust> entrustList, XSSFWorkbook xssfWorkbook) {
this.entrustList = entrustList;
this.template = template;
this.voList = voList;
this.configList = configList;
this.xssfWorkbook = xssfWorkbook;
}
if (null == template.getSampleBeginRow()|| null==template.getSampleMergerNum()||null==template.getTemplateSampleNum()){
public Operation getOperation() {
if (null == template.getMoreSheet() || 0 == template.getMoreSheet()) {
if (null == template.getSampleBeginRow() || null == template.getSampleMergerNum() || null == template.getTemplateSampleNum()) {
return null;
}
// if (voList.size()<template.getTemplateSampleNum()){
// return new SingleSheetLittleOperation(template,voList,entrust,configList,xssfWorkbook);
// }else{
return new SingleSheetMoreOperation(template,voList,entrust,configList,xssfWorkbook);
// }
if (CollectionUtils.isNotEmpty(entrustList)) {
return new SingleSheetMoreOperation(template, entrustList, voList, configList, xssfWorkbook);
}
}else{
return new SingleSheetMoreOperation(template, voList, entrust, configList, xssfWorkbook);
} else {
Integer templateSampleNum = template.getTemplateSampleNum();
if (null == templateSampleNum || 1==templateSampleNum){
return new MoreSheetOneOperation(template,voList,entrust,configList,xssfWorkbook);
}else{
return new MoreSheetMoreOperation(template,voList,entrust,configList,xssfWorkbook);
if (null == templateSampleNum || 1 == templateSampleNum) {
return new MoreSheetOneOperation(template, voList, entrust, configList, xssfWorkbook);
} else {
return new MoreSheetMoreOperation(template, voList, entrust, configList, xssfWorkbook);
}
}
}
......
package com.patzn.cloud.service.lims.hmhj.original;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public final class OriginalUtil {
public final static String initFormula(String formula,Integer i){
formula = formula.replace("#{sn}",(i+1)+"");
public final static String initFormula(String formula, Integer i) {
formula = formula.replace("#{sn}", (i + 1) + "");
if (formula.contains("#{sneven1}")){
if (StringHandleUtils.isEven(i)){
formula= formula.replace("#{sneven1}",(i+1)+"");
}else{
formula= formula.replace("#{sneven1}",i+"");
if (formula.contains("#{sneven1}")) {
if (StringHandleUtils.isEven(i)) {
formula = formula.replace("#{sneven1}", (i + 1) + "");
} else {
formula = formula.replace("#{sneven1}", i + "");
}
}
if (formula.contains("#{snodd1}")){
if (!StringHandleUtils.isEven(i)){
formula= formula.replace("#{snodd1}",(i+1)+"");
}else{
formula= formula.replace("#{snodd1}",i+"");
if (formula.contains("#{snodd1}")) {
if (!StringHandleUtils.isEven(i)) {
formula = formula.replace("#{snodd1}", (i + 1) + "");
} else {
formula = formula.replace("#{snodd1}", i + "");
}
}
if (formula.contains("#{sn+1}")){
formula= formula.replace("#{sn+1}",(i+2)+"");
if (formula.contains("#{sn+1}")) {
formula = formula.replace("#{sn+1}", (i + 2) + "");
}
if (formula.contains("#{sn+2}")){
formula= formula.replace("#{sn+2}",(i+3)+"");
if (formula.contains("#{sn+2}")) {
formula = formula.replace("#{sn+2}", (i + 3) + "");
}
if (formula.contains("#{sn+3}")){
formula= formula.replace("#{sn+3}",(i+4)+"");
if (formula.contains("#{sn+3}")) {
formula = formula.replace("#{sn+3}", (i + 4) + "");
}
if (formula.contains("#{sn+4}")){
formula= formula.replace("#{sn+4}",(i+5)+"");
if (formula.contains("#{sn+4}")) {
formula = formula.replace("#{sn+4}", (i + 5) + "");
}
if (formula.contains("#{sn+5}")){
formula= formula.replace("#{sn+5}",(i+6)+"");
if (formula.contains("#{sn+5}")) {
formula = formula.replace("#{sn+5}", (i + 6) + "");
}
if (formula.contains("#{sn+6}")){
formula= formula.replace("#{sn+6}",(i+7)+"");
if (formula.contains("#{sn+6}")) {
formula = formula.replace("#{sn+6}", (i + 7) + "");
}
if (formula.contains("#{sn+7}")){
formula= formula.replace("#{sn+7}",(i+8)+"");
if (formula.contains("#{sn+7}")) {
formula = formula.replace("#{sn+7}", (i + 8) + "");
}
return formula;
}
public final static void doReplace(XSSFWorkbook xssfWorkbook, Entrust entrust){
public final static void doReplace(XSSFWorkbook xssfWorkbook, Entrust entrust) {
Map<String, String> mapReplace = new HashMap<>();
mapReplace.put("#{client}",entrust.getClient());
HSSFWorkbookUtil.replaceModel(mapReplace,xssfWorkbook,0);
mapReplace.put("#{client}", entrust.getClient());
HSSFWorkbookUtil.replaceModel(mapReplace, xssfWorkbook, 0);
}
public final static void doReplaceMulti(XSSFWorkbook xssfWorkbook, List<Entrust> entrusts) {
String client = "";
if (CollectionUtils.isNotEmpty(entrusts)) {
client = entrusts.stream().map(Entrust::getClient).collect(Collectors.joining(","));
}
Map<String, String> mapReplace = new HashMap<>();
mapReplace.put("#{client}", client);
HSSFWorkbookUtil.replaceModel(mapReplace, xssfWorkbook, 0);
}
}
package com.patzn.cloud.service.lims.hmhj.original;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.service.hmhj.entity.Entrust;
import com.patzn.cloud.service.hmhj.entity.OriginalTemplate;
import com.patzn.cloud.service.hmhj.entity.OriginalTemplateConfig;
......@@ -21,6 +22,7 @@ public class SingleSheetMoreItemOperation implements Operation {
private OriginalTemplate template;
private List<EntrustSampleVO> voList;
private Entrust entrust;
private List<Entrust> entrustList;
private List<OriginalTemplateConfig> configList;
private XSSFWorkbook xssfWorkbook;
private String collectionDatePrefix = "clc.";
......@@ -29,9 +31,18 @@ public class SingleSheetMoreItemOperation implements Operation {
private Map<Integer, String> valueMap;
public SingleSheetMoreItemOperation(OriginalTemplate template, List<EntrustSampleVO> voList, Entrust entrust, List<OriginalTemplateConfig> configList, XSSFWorkbook xssfWorkbook) {
initData(template, voList, entrust, null, configList, xssfWorkbook);
}
public SingleSheetMoreItemOperation(OriginalTemplate template, List<Entrust> entrustList, List<EntrustSampleVO> voList, List<OriginalTemplateConfig> configList, XSSFWorkbook xssfWorkbook) {
initData(template, voList, null, entrustList, configList, xssfWorkbook);
}
private void initData(OriginalTemplate template, List<EntrustSampleVO> voList, Entrust entrust, List<Entrust> entrustList, List<OriginalTemplateConfig> configList, XSSFWorkbook xssfWorkbook) {
this.template = template;
this.voList = voList;
this.entrust = entrust;
this.entrustList = entrustList;
this.configList = configList;
this.xssfWorkbook = xssfWorkbook;
dealCollectionData(voList, configList);
......@@ -73,7 +84,13 @@ public class SingleSheetMoreItemOperation implements Operation {
@Override
public void doMakeOriginal() {
if (CollectionUtils.isNotEmpty(entrustList)) {
OriginalUtil.doReplaceMulti(xssfWorkbook, entrustList);
} else {
OriginalUtil.doReplace(xssfWorkbook, entrust);
}
XSSFSheet sheetOne = xssfWorkbook.getSheetAt(0);
sheetOne.setForceFormulaRecalculation(true);
Integer beginRow = template.getSampleBeginRow();
......
......@@ -18,6 +18,7 @@ public class SingleSheetMoreOperation implements Operation {
private OriginalTemplate template;
private List<EntrustSampleItemVO> voList;
private Entrust entrust;
private List<Entrust> entrustList;
private List<OriginalTemplateConfig> configList;
private XSSFWorkbook xssfWorkbook;
private String collectionDataPrefix = "clc.";
......@@ -30,13 +31,24 @@ public class SingleSheetMoreOperation implements Operation {
this.configList = configList;
this.xssfWorkbook = xssfWorkbook;
this.formulaEvaluator = new XSSFFormulaEvaluator(xssfWorkbook);
}
public SingleSheetMoreOperation(OriginalTemplate template, List<Entrust> entrustList, List<EntrustSampleItemVO> voList, List<OriginalTemplateConfig> configList, XSSFWorkbook xssfWorkbook) {
this.entrustList = entrustList;
this.template = template;
this.voList = voList;
this.configList = configList;
this.xssfWorkbook = xssfWorkbook;
this.formulaEvaluator = new XSSFFormulaEvaluator(xssfWorkbook);
}
@Override
public void doMakeOriginal() {
if (CollectionUtils.isNotEmpty(entrustList)) {
OriginalUtil.doReplaceMulti(xssfWorkbook, entrustList);
} else {
OriginalUtil.doReplace(xssfWorkbook, entrust);
}
XSSFSheet sheetOne = xssfWorkbook.getSheetAt(0);
sheetOne.setForceFormulaRecalculation(true);
Integer beginRow = template.getSampleBeginRow();
......
......@@ -9,10 +9,7 @@ import com.patzn.cloud.service.hmhj.entity.EntrustSampleItem;
import com.patzn.cloud.service.hmhj.entity.ItemDeviate;
import com.patzn.cloud.service.hmhj.entity.OriginalRecord;
import com.patzn.cloud.service.hmhj.enums.EntrustFlowEnum;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleCalcResultVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.hmhj.vo.TesterWorkloadStatsVO;
import com.patzn.cloud.service.hmhj.vo.*;
import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
......@@ -61,6 +58,8 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
OriginalRecord saveExcelOriginalRecord(Long[] ids, Long templateId, Account account, String entrustCode);
OriginalRecord saveExcelOriginalRecords(Long[] ids, Long templateId, Account account);
boolean deviateApply(Long[] ids, ItemDeviate deviate, Account account);
Page<EntrustSampleItemVO> pageItemDeviateCheck(Page<EntrustSampleItemVO> page, EntrustSampleItemVO entrustSampleItem);
......@@ -124,4 +123,10 @@ public interface IEntrustSampleItemService extends IBaseService<EntrustSampleIte
List<EntrustSampleItemIndexVO> getItemTestByEntrustId(Long entrustIds);
EntrustSampleItem getItemModelBySampleId(Long sampleId);
Page<ItemVO> pageInputItemLeft(Page<ItemVO> page, ItemVO vo);
Page<ItemVO> pageInputItemRight(Page<ItemVO> page, ItemVO vo);
Boolean checkCanWriteOriginal(Long[] ids);
}
......@@ -135,4 +135,5 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> {
void exportSampleIndex(Long entrustId, Account account, HttpServletResponse response);
boolean isRepeatSampleCode(EntrustSample sample);
}
......@@ -11,6 +11,7 @@ import com.patzn.cloud.service.hmhj.vo.OriginalRecordVO;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.List;
import java.util.Map;
/**
* 土工原始记录表 服务类
......@@ -26,6 +27,8 @@ public interface IOriginalRecordService extends IBaseService<OriginalRecord> {
OriginalRecord uploadExpGenerate(Long[] ids, OriginalTemplate template, Entrust entrust, Account account, String remark, File file);
OriginalRecord uploadExpGenerate(Map<Long,List<Long>> entrustItemIdMap, OriginalTemplate template, Account account, String remark, File file);
Page<OriginalRecordVO> pageVO(Page<OriginalRecordVO> page, OriginalRecordVO originalRecord);
void download(Long entrustId,Long id, HttpServletResponse response);
......
......@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.toolkit.IOUtils;
import com.google.common.collect.Lists;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
......@@ -32,6 +33,7 @@ import com.patzn.cloud.service.lims.base.entity.LmsUserRelGroup;
import com.patzn.cloud.service.lims.base.vo.LmsUserRelGroupVO;
import com.patzn.cloud.service.lims.collection.entity.LmsOriginalRecordInfo;
import com.patzn.cloud.service.lims.common.CompareUtils;
import com.patzn.cloud.service.lims.common.StringHandleUtils;
import com.patzn.cloud.service.lims.common.service.IExportService;
import com.patzn.cloud.service.lims.hmhj.common.HSSFWorkbookUtil;
import com.patzn.cloud.service.lims.hmhj.common.LabreOfficeUtil;
......@@ -62,6 +64,8 @@ import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import static java.util.stream.Collectors.toSet;
/**
* 服务实现类
*
......@@ -554,6 +558,149 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return baseMapper.selectVOListBySampleIdsAndIds(sampleIds, ids);
}
@Override
public OriginalRecord saveExcelOriginalRecords(Long[] ids, Long templateId, Account account) {
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择试验项目!");
RestAssert.fail(null == templateId, "请选择原始记录模板");
OriginalTemplate template = originalTemplateService.getById(templateId);
if (null == template) {
RestAssert.fail("模板不存在");
}
List<EntrustSampleItemVO> voList = listVOByIds(ids);
if (CollectionUtils.isEmpty(voList)) {
return null;
}
// 过滤空白样
List<EntrustSampleItemVO> blank = voList.stream().filter(vo -> vo.getSampleCode().contains("空白") || vo.getSampleName().contains("空白")).collect(Collectors.toList());
// 手动插入空白样和配置了空白开始行冲突
if (null != template.getBlankBeginNum() && blank.size() > 0) {
RestAssert.fail("所选原始记录模板中已配置空白开始行,请删除空白标样!");
}
voList = voList.stream().sorted(Comparator.comparing(item -> item.getOrderBy())).collect(Collectors.toList());
// 委托编号:检测项目集合
Map<Long, List<Long>> entrustItemIdMap = new HashMap<>();
Set<String> sampleCodeSet = new HashSet<>();
Set<Long> sampleIdsList = new HashSet<>();
Set<Long> entrustIdList = new HashSet<>();
for (EntrustSampleItemVO vo : voList) {
MapMergeUtils.getorCreateMapArrayList(vo.getEntrustId(), entrustItemIdMap, vo.getId());
sampleCodeSet.add(vo.getSampleCode());
sampleIdsList.add(vo.getEntrustSampleId());
entrustIdList.add(vo.getEntrustId());
}
List<Entrust> entrustList = entrustService.getBatchIds(new ArrayList<>(entrustIdList));
String[] entrustCodes = entrustList.stream().map(Entrust::getCode).toArray(String[]::new);
InputStream io = ossClient.download(template.getObjectKey());
if (null == io) {
RestAssert.fail("模板不存在");
}
List<OriginalTemplateConfig> configList = originalTemplateConfigService.list(Condition.create().eq("template_id", templateId));
OriginalRecord objectKey = null;
XSSFWorkbook xssfWorkbook = null;
try {
xssfWorkbook = new XSSFWorkbook(io);
} catch (Exception e) {
logger.error("获取证书模板错误" + e.getMessage());
e.printStackTrace();
}
Map<String, String> mapReplace = new HashMap<>();
mapReplace.put("#{nowDate}", DateUtils.toYearMonthDay(new Date()));
mapReplace.put("#{sampleNum}", sampleCodeSet.size() + "");
// itemVoList中的所有项目名 --> 通过检测项目名拿到对应的采集仪器项目名
Set<String> itemNames = voList.stream().map(EntrustSampleItem::getName).distinct().collect(Collectors.toSet());
List<Qualification> qualifications = qualificationService.list(Condition.create().in("name", itemNames));
Map<String, String> itemNameMap = qualifications.stream()
.filter(q -> StringUtils.isNotEmpty(q.getInstrumentItemName()))
.collect(Collectors.toMap(Qualification::getName, Qualification::getInstrumentItemName));
if (null != template.getMoreItem() && 1 == template.getMoreItem()) {
List<EntrustSample> sampleList = entrustSampleService.list(Condition.create().in("id", sampleIdsList).orderBy("order_by", true));
EntrustSample firstSample = null;
if (CollectionUtils.isNotEmpty(sampleList)) {
for (EntrustSample sample : sampleList) {
if (sample.getType() == 0) {
firstSample = sample;
break;
}
}
mapReplace.put("#{sampleFrom}", firstSample == null ? "" : firstSample.getSampleFrom());
mapReplace.put("#{sampleName}", firstSample == null ? "" : firstSample.getName());
}
List<EntrustSampleVO> sampleVOList = new ArrayList<>(sampleList.size());
for (EntrustSample sample : sampleList) {
EntrustSampleVO vo = sample.convert(EntrustSampleVO.class);
vo.setIndexList(entrustSampleItemIndexService.listBySampleId(sample.getId()));
sampleVOList.add(vo);
}
/* 获取采集数据,并保存到SampleVO中 */
getCollectionData(null, sampleVOList, itemNameMap, template, entrustCodes);
if (null == template.getSampleBeginRow() || null == template.getSampleMergerNum() || null == template.getTemplateSampleNum()) {
return null;
}
/* 多个检测项目放在一个sheet中,一个样品一条记录 */
SingleSheetMoreItemOperation operation = new SingleSheetMoreItemOperation(template, entrustList, sampleVOList, configList, xssfWorkbook);
operation.doMakeOriginal();
} else {
/* 获取采集到的数据 */
getCollectionData(voList, null, itemNameMap, template, entrustCodes);
EntrustSampleItemVO firstVO = null;
for (EntrustSampleItemVO vo : voList) {
if (vo.getType() == 0) {
firstVO = vo;
}
}
if (CollectionUtils.isNotEmpty(voList)) {
mapReplace.put("#{sampleFrom}", firstVO == null ? "" : firstVO.getSampleFrom());
mapReplace.put("#{sampleName}", firstVO == null ? "" : firstVO.getSampleName());
}
OriginalFactory factory = new OriginalFactory(template, voList, configList, entrustList, xssfWorkbook);
Operation operation = factory.getOperation();
if (null != operation) {
operation.doMakeOriginal();
}
}
HSSFWorkbookUtil.replaceModel(mapReplace, xssfWorkbook, 0);
FileOutputStream os = null;
File file = null;
String generated = "原始记录";
try {
file = File.createTempFile(generated, ".xlsx");
os = new FileOutputStream(file);
xssfWorkbook.write(os);
os.flush();
objectKey = originalRecordService.uploadExpGenerate(entrustItemIdMap, template, account, "原始记录生成", file);
logger.error("----------------------17");
} catch (Exception e) {
logger.error("Exception 报错" + e.getMessage());
e.printStackTrace();
} finally {
IOUtils.closeQuietly(os, xssfWorkbook, io);
FileUtils.deleteFiles(file);
}
logger.error("----------------------20");
return objectKey;
}
@Override
public OriginalRecord saveExcelOriginalRecord(Long[] ids, Long templateId, Account account, String entrustCode) {
......@@ -627,7 +774,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
}
/* 获取采集数据,并保存到SampleVO中 */
getCollectionData(null, sampleVOList, entrustCode, itemNameMap, template);
getCollectionData(null, sampleVOList, itemNameMap, template, entrustCode);
if (null == template.getSampleBeginRow() || null == template.getSampleMergerNum() || null == template.getTemplateSampleNum()) {
......@@ -648,7 +795,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
} else {
/* 获取采集到的数据 */
getCollectionData(voList, null, entrustCode, itemNameMap, template);
getCollectionData(voList, null, itemNameMap, template, entrustCode);
EntrustSampleItemVO firstVO = null;
for (EntrustSampleItemVO vo : voList) {
......@@ -714,7 +861,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return objectKey;
}
private void getCollectionData(List<EntrustSampleItemVO> itemVOList, List<EntrustSampleVO> sampleVOList, String entrustCode, Map<String, String> itemNameMap, OriginalTemplate template) {
private void getCollectionData(List<EntrustSampleItemVO> itemVOList, List<EntrustSampleVO> sampleVOList, Map<String, String> itemNameMap, OriginalTemplate template, String... entrustCodes) {
/* 拿到所有样品的编号 */
Set<String> numSet = new HashSet<>();
if (itemVOList != null) {
......@@ -730,7 +877,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
List<LmsOriginalRecordInfo> records = new ArrayList<>();
// 采集类型 0-无需采集; 1-文件采集-会带委托编号;2-盒子采集-不带委托编号
if (template.getCollectionType() == 1) {
records = originalRecordInfoService.list(Condition.create().in("sample_num", numSet).eq("contract_code", entrustCode));
records = originalRecordInfoService.list(Condition.create().in("sample_num", numSet).in("contract_code", entrustCodes));
} else if (template.getCollectionType() == 2) {
records = originalRecordInfoService.list(Condition.create().in("sample_num", numSet));
}
......@@ -1201,7 +1348,7 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
if (updateSampleList.size() > 0) {
entrustSampleService.updateBatchById(updateSampleList);
logger.error("====更新样品判级:]\r\n");
for(EntrustSample s : updateSampleList){
for (EntrustSample s : updateSampleList) {
logger.error("====判定合格品级:sampleId:{},sampleName:{},sampleCode:{},grading:{}", s.getId(), s.getName(), s.getCode(), s.getSampleGrading());
}
}
......@@ -1236,6 +1383,40 @@ public class EntrustSampleItemServiceImpl extends BaseServiceImpl<EntrustSampleI
return CollectionUtils.isNotEmpty(itemList) ? itemList.get(0) : null;
}
@Override
public Page<ItemVO> pageInputItemLeft(Page<ItemVO> page, ItemVO vo) {
vo.setStatus(EntrustSampleItemStatusEnum.TEST);
if (StringUtils.isNotBlank(vo.getName())) {
vo.setNameList(Arrays.asList(vo.getName().split(",|,")));
}
return page.setRecords(baseMapper.pageInputItemLeft(page, vo));
}
@Override
public Page<ItemVO> pageInputItemRight(Page<ItemVO> page, ItemVO vo) {
vo.setStatus(EntrustSampleItemStatusEnum.TEST);
if (StringUtils.isNotBlank(vo.getName())) {
vo.setNameList(Arrays.asList(vo.getName().split(",|,")));
}
List<ItemVO> list = baseMapper.pageInputItemRight(page, vo);
return page.setRecords(list);
}
@Override
public Boolean checkCanWriteOriginal(Long[] ids) {
RestAssert.fail(ArrayUtils.isEmpty(ids), "请选择项目");
// 根据id查出项目
List<EntrustSampleItem> list = super.list(Condition.create().in("id", ids));
RestAssert.fail(CollectionUtils.isEmpty(list), "没有查询到项目信息");
Map<Long, String> itemNameMap = list.stream().collect(Collectors.toMap(EntrustSampleItem::getId, t -> t.getName()));
List<ItemRelOriginalRecord> itemRelOriginalRecords = itemRelOriginalRecordService.list(Condition.create().in("item_id", ids));
if (CollectionUtils.isNotEmpty(itemRelOriginalRecords)) {
Set<String> itemNameSet = itemRelOriginalRecords.stream().map(t -> itemNameMap.get(t.getItemId())).collect(toSet());
RestAssert.fail("选择了已经填写了原始记录的项目:" + StringHandleUtils.join(itemNameSet, "、"));
}
return true;
}
private String getCellValue(XSSFRow xssfRow, int cellIndex) {
XSSFCell cell = xssfRow.getCell(cellIndex);
String value = HSSFWorkbookUtil.getJavaValue(cell).toString();
......
......@@ -2212,4 +2212,12 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
}
}
@Override
public boolean isRepeatSampleCode(EntrustSample sample){
if(StringUtils.isBlank(sample.getCode())){
return false;
}
return super.count(Condition.create().eq("code",sample.getCode())) > 0;
}
}
\ No newline at end of file
......@@ -339,6 +339,10 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
sample.setThirdCode(thirdCode);
}
}
if(StringUtils.isNotBlank(sample.getCode())){
RestAssert.fail(entrustSampleService.isRepeatSampleCode(sample),String.format("样品编号【%s】重复!"));
}
}
private String getSampleThirdCode(EntrustSample sample) {
......
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.toolkit.IdWorker;
import com.baomidou.mybatisplus.toolkit.MapUtils;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.controller.Account;
......@@ -30,6 +31,7 @@ import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 土工原始记录表 服务实现类
......@@ -83,30 +85,68 @@ public class OriginalRecordServiceImpl extends BaseServiceImpl<OriginalRecordMap
RestAssert.fail(null == entrust.getId(), "试验委托单ID不能为空");
OriginalRecord soilOriginalRecord = new OriginalRecord();
soilOriginalRecord.setEntrustId(entrust.getId());
soilOriginalRecord.setTemplateId(template.getId());
soilOriginalRecord.setTitle(template.getName());
soilOriginalRecord.setRemark(remark);
soilOriginalRecord.setUname(account.getUserName());
OriginalRecord originalRecord = new OriginalRecord();
originalRecord.setEntrustId(entrust.getId());
originalRecord.setTemplateId(template.getId());
originalRecord.setTitle(template.getName());
originalRecord.setRemark(remark);
originalRecord.setUname(account.getUserName());
OssFileResult obsFileResult = ossClient.upload(file);
if (null == obsFileResult) {
return null;
}
soilOriginalRecord.setObjectKey(obsFileResult.getObjectKey());
if (save(soilOriginalRecord)) {
originalRecord.setObjectKey(obsFileResult.getObjectKey());
if (save(originalRecord)) {
List<ItemRelOriginalRecord> saveList = new ArrayList<>();
for (Long id : ids) {
ItemRelOriginalRecord relOriginalRecord = new ItemRelOriginalRecord();
relOriginalRecord.setItemId(id);
relOriginalRecord.setRecordId(soilOriginalRecord.getId());
relOriginalRecord.setRecordId(originalRecord.getId());
saveList.add(relOriginalRecord);
}
if (CollectionUtils.isNotEmpty(saveList)) {
itemRelOriginalRecordService.saveBatch(saveList);
}
}
return soilOriginalRecord;
return originalRecord;
}
@Transactional(rollbackFor = Exception.class)
@Override
public OriginalRecord uploadExpGenerate(Map<Long, List<Long>> entrustItemIdMap, OriginalTemplate template, Account account, String remark, File file) {
RestAssert.fail(MapUtils.isEmpty(entrustItemIdMap), "请选择试验项目");
// 先上传文件,后保存记录
OssFileResult ossFileResult = ossClient.upload(file);
if (null == ossFileResult) {
return null;
}
String entrustIds = StringUtils.join(entrustItemIdMap.keySet(), ",");
List<ItemRelOriginalRecord> itemOriginalList = new ArrayList<>();
OriginalRecord originalRecord = new OriginalRecord();
originalRecord.setEntrustIds(entrustIds);
originalRecord.setTemplateId(template.getId());
originalRecord.setTitle(template.getName());
originalRecord.setRemark(remark);
originalRecord.setUname(account.getUserName());
originalRecord.setObjectKey(ossFileResult.getObjectKey());
originalRecord.setId(IdWorker.getId());
save(originalRecord);
entrustItemIdMap.values().forEach(m -> {
itemOriginalList.addAll(m.stream().map(t ->
new ItemRelOriginalRecord().setItemId(t).setRecordId(originalRecord.getId())
).collect(Collectors.toList()));
});
if (CollectionUtils.isNotEmpty(itemOriginalList)) {
itemRelOriginalRecordService.saveBatch(itemOriginalList);
}
return originalRecord;
}
}
......@@ -259,13 +259,13 @@
<select id="selectVOListByIds" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO">
SELECT i.id,i.name,i.entrust_sample_id,s.entrust_id,i.agreed_value,i.test_value,i.standard,s.code AS
"sampleCode",s.name AS "sampleName",
s.order_by,s.type,
s.order_by,s.type,e.code "entrust_code",
s.sample_shape ,s.sample_quantity, s.standard, s.sample_from,s.product_code,s.name_code
FROM
entrust_sample_item i
JOIN entrust_sample s ON i.entrust_sample_id = s.ID
WHERE i.deleted = 0 AND s.deleted = 0
JOIN entrust_sample s ON i.entrust_sample_id = s.ID and s.deleted = 0
JOIN entrust e on e.id = i.entrust_id and e.deleted = 0
WHERE i.deleted = 0
AND i.id IN
<foreach collection="ids" index="index" item="id" open="(" separator="," close=")">
......@@ -725,6 +725,73 @@
ii.NAME
</select>
<!--获取数据录入 - 检测项目列表-->
<select id="pageInputItemLeft" resultType="com.patzn.cloud.service.hmhj.vo.ItemVO">
SELECT DISTINCT ON
( NAME, standard ) NAME, standard
FROM
entrust_sample_item i
where i.deleted = 0 and i.status = #{vo.status} and i.company_id = #{vo.companyId}
<if test="null != vo.personal and vo.personal == 1">
AND i.tester_id = #{vo.uid}
</if>
<if test="null != vo.nameList">
<foreach collection="vo.nameList" item="name" open="AND ( i.name " close=")" separator=" OR name">
LIKE CONCAT ('%',#{name},'%')
</foreach>
</if>
<if test="null != vo.standard">
AND i.standard LIKE CONCAT ('%',#{vo.standard},'%')
</if>
<if test="null != vo.uid">
AND i.tester_id = #{vo.uid}
</if>
order by i.name
</select>
<!-- 查询数据录入- 按项目录入 - 右侧检测项目数据列表 -->
<select id="pageInputItemRight" resultType="com.patzn.cloud.service.hmhj.vo.ItemVO">
SELECT
i.id,i.entrust_sample_id,i.name,i.status,i.company_id,i.standard,i.group_name,i.test_value,i.group_id,i.tester,i.tester_id,i.test_time,i.in_report,i.entrust_id,
s.name "sampleName",s.code "sampleCode",s.compliance_test,s.sample_from,sample_shape,s.first_code,s.second_code,s.third_code,
e.test_side "testSide",e.code "entrustCode",l.record_id,r.object_key AS "recordObjectKey"
FROM entrust_sample_item i
JOIN entrust_sample s ON i.entrust_sample_id = s.id and s.deleted = 0
JOIN entrust e on i.entrust_id = e.id and e.deleted = 0
LEFT JOIN item_rel_original_record l on l.item_id = i.id and l.deleted = 0
LEFT JOIN original_record r on r.id = l.record_id and r.deleted = 0
WHERE i.deleted = 0 and i.company_id = #{vo.companyId}
<if test="null != vo.nameList">
<foreach collection="vo.nameList" item="name" open="AND ( i.name " close=")" separator=" OR i.name ">
LIKE CONCAT ('%',#{name},'%')
</foreach>
</if>
<if test="null != vo.standard">
AND i.standard LIKE CONCAT ('%',#{vo.standard},'%')
</if>
<if test="null != vo.status">
AND i.status = #{vo.status}
</if>
<if test="null != vo.uid">
AND i.tester_id = #{vo.uid}
</if>
<if test="null != vo.entrustCode">
AND e.code LIKE CONCAT ('%',#{vo.entrustCode},'%')
</if>
<if test="null != vo.testSide">
AND e.test_side LIKE CONCAT ('%',#{vo.testSide},'%')
</if>
<if test="null != vo.sampleCode">
AND s.code LIKE CONCAT ('%',#{vo.sampleCode},'%')
</if>
<if test="null != vo.sampleName">
AND s.name LIKE CONCAT ('%',#{vo.sampleName},'%')
</if>
order by i.name, s.code
</select>
<update id="updateBatchByData" parameterType="java.util.List">
<foreach collection="itemList" item="item" index="index" open="" close="" separator=";">
update entrust_sample_item
......
/** created by meazty on 2022/1/18 16:43 **/
/** created by meazty on 2022/1/18 16:43 **/
-- 委托 --
ALTER TABLE "public"."original_record"
ADD COLUMN "entrust_ids" varchar(512);
COMMENT ON COLUMN "public"."original_record"."entrust_ids" IS '委托IDS';
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment