Commit 8e6a9177 by lijingjing

添加复制委托功能;

修改统计原铝品味展示问题;
parent 9d81f9ad
......@@ -320,6 +320,12 @@ public class EntrustController extends ServiceController {
return success(entrustService.registerSubmitToMake(ids, getAccount()));
}
@ApiOperation("复制委托信息")
@PostMapping("/clone_entrust")
public RestResult<Boolean> clone(@RequestParam("ids") Long[] ids) {
return success(entrustService.cloneEntrust(ids, getAccount()));
}
@ApiOperation("样品接收委托分页列表")
@ApiImplicitParams({
......
......@@ -76,4 +76,6 @@ public interface IEntrustService extends IBaseService<Entrust> {
boolean rejectToPrevNode(Long id,String reason, Account account);
boolean rejectToPrevNode(Entrust entrust,String reason, Account account);
boolean cloneEntrust(Long[] ids, Account account);
}
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.google.common.collect.Lists;
......@@ -222,41 +223,54 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
long days = DateUtils.getDaysBetweenTwoDate(queryDTO.getTimeS(), queryDTO.getTimeE());
queryDTO.setDays(days);
List<AlTasteStatsVO> list = baseMapper.selectAlTasteStats(queryDTO);
List<AlTasteStatsVO> resultList = new ArrayList<>();
if (CollectionUtils.isEmpty(list)) {
return resultList;
return list;
}
List<AlTasteStatsVO> resultList = new ArrayList<>();
Map<String, List<AlTasteStatsVO>> dataMap = new HashMap<>();
for (int i = 0; i < list.size(); i++) {
AlTasteStatsVO vo = list.get(i);
String key = vo.getBranch() + vo.getPlant();
if (dataMap.isEmpty()) {
List<AlTasteStatsVO> newList = new ArrayList<>();
newList.add(vo);
dataMap.put(key, newList);
AlTasteStatsVO curr = list.get(i);
// 以【分厂+厂房】作为获取上一条记录的KEY
String key = curr.getBranch() + curr.getPlant();
// 是否存在同KEY数据
if (dataMap.containsKey(key)) {
List<AlTasteStatsVO> voList = dataMap.get(key);
voList.add(curr);
// 若当前的条数为最后一条,那么处理统计数据
if (i == list.size() - 1) {
resultList.add(vo);
resultList.add(getTotalData(list));
// 将列表数据加入集合中
resultList.addAll(voList);
// 将统计数据加入集合中
resultList.add(getTotalData(voList));
}
continue;
}
if (!dataMap.containsKey(key)) {
AlTasteStatsVO prevVO = list.get(i - 1);
List<AlTasteStatsVO> prevList = dataMap.get(prevVO.getBranch() + prevVO.getPlant());
resultList.addAll(prevList);
resultList.add(getTotalData(prevList));
} else {
List<AlTasteStatsVO> lists = dataMap.get(key);
lists.add(vo);
// 若不包含当前数据,取出前条数据进行统计后加入集合中,后将当前数据加入map
else {
// 是否需要取出数据处理
if (i > 0) {
AlTasteStatsVO prev = list.get(i - 1);
List<AlTasteStatsVO> voList = dataMap.get(prev.getBranch() + prev.getPlant());
// 将列表数据加入集合中
resultList.addAll(voList);
// 将统计数据加入集合中
resultList.add(getTotalData(voList));
}
// 将当前数据加入mapData中
List<AlTasteStatsVO> voList = new ArrayList<>();
if (i == list.size() - 1) {
resultList.addAll(lists);
resultList.add(getTotalData(lists));
resultList.add(curr);
voList.add(curr);
resultList.add(getTotalData(voList));
} else {
voList.add(curr);
dataMap.put(key, voList);
}
}
}
// 汇总所有
// 汇总所有查询出的列表数据
AlTasteStatsVO alTasteStatsVO = getTotalData(list);
alTasteStatsVO.setBranch(null);
resultList.add(alTasteStatsVO);
......@@ -316,15 +330,15 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
} else if (nextFlowStatus == EntrustFlowEnum.RECEIVE) {
sampleStatus = EntrustSampleStatusEnum.RECEIVE;
itemStatus = EntrustSampleItemStatusEnum.DRAFT;
entrustSamplePrepareService.addOrUpdateToSetStatus(sampleIds,EntrustSamplePrepareStatusEnum.RECEIVE);
entrustSamplePrepareService.addOrUpdateToSetStatus(sampleIds, EntrustSamplePrepareStatusEnum.RECEIVE);
} else if (nextFlowStatus == EntrustFlowEnum.ALLOT) {
sampleStatus = EntrustSampleStatusEnum.TEST;
itemStatus = EntrustSampleItemStatusEnum.ALLOT;
entrustSamplePrepareService.addOrUpdateToSetStatus(sampleIds,EntrustSamplePrepareStatusEnum.RECEIVE_OK);
entrustSamplePrepareService.addOrUpdateToSetStatus(sampleIds, EntrustSamplePrepareStatusEnum.RECEIVE_OK);
} else if (nextFlowStatus == EntrustFlowEnum.TEST) {
sampleStatus = EntrustSampleStatusEnum.TEST;
itemStatus = EntrustSampleItemStatusEnum.TEST;
entrustSamplePrepareService.addOrUpdateToSetStatus(sampleIds,EntrustSamplePrepareStatusEnum.TEST);
entrustSamplePrepareService.addOrUpdateToSetStatus(sampleIds, EntrustSamplePrepareStatusEnum.TEST);
} else if (nextFlowStatus == EntrustFlowEnum.REPORT_MAKE) {
sampleStatus = EntrustSampleStatusEnum.REPORT_MAKE;
itemStatus = EntrustSampleItemStatusEnum.END;
......@@ -432,15 +446,15 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
@Override
public boolean addStandardSampleDTO(EntrustSampleDTO dto, Account account) {
if (null == dto){
if (null == dto) {
return false;
}
// 添加后排序,不论是否成功添加标样
List<EntrustSample> sampleList = list(Condition.create().eq("entrust_id",dto.getEntrustId())
.orderBy("order_by",true).orderBy("ctime",false));
List<EntrustSample> sampleList = list(Condition.create().eq("entrust_id", dto.getEntrustId())
.orderBy("order_by", true).orderBy("ctime", false));
// 若为一个样品,则不进行排序处理
if(CollectionUtils.isNotEmpty(sampleList) && sampleList.size() > 1){
for(int i=0;i< sampleList.size();i++){
if (CollectionUtils.isNotEmpty(sampleList) && sampleList.size() > 1) {
for (int i = 0; i < sampleList.size(); i++) {
sampleList.get(i).setOrderBy(i);
}
updateBatchById(sampleList);
......@@ -449,19 +463,19 @@ public class EntrustSampleServiceImpl extends BaseServiceImpl<EntrustSampleMappe
EntrustSample sample = dto.convert(EntrustSample.class);
//标样
sample.setType(1);
if (save(sample)){
List<EntrustSampleItem> itemList = dto.getItemList();
if (CollectionUtils.isNotEmpty(itemList)){
for (EntrustSampleItem item : itemList) {
item.setEntrustSampleId(sample.getId());
item.setStatus(EntrustSampleItemStatusEnum.TEST);
item.setProgress(EntrustSampleItemStatusEnum.TEST);
item.setTester(account.getUserName());
item.setTesterId(account.getUserId());
}
entrustSampleItemService.saveBatch(itemList);
}
}
if (save(sample)) {
List<EntrustSampleItem> itemList = dto.getItemList();
if (CollectionUtils.isNotEmpty(itemList)) {
for (EntrustSampleItem item : itemList) {
item.setEntrustSampleId(sample.getId());
item.setStatus(EntrustSampleItemStatusEnum.TEST);
item.setProgress(EntrustSampleItemStatusEnum.TEST);
item.setTester(account.getUserName());
item.setTesterId(account.getUserId());
}
entrustSampleItemService.saveBatch(itemList);
}
}
return true;
}
......
......@@ -149,7 +149,6 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
String replaceStr = "XX", inspectNo = "", secondCode = "", thirdCode = "";
if ("已有编码物资".equals(parentCategory)) {
sampleCode = sample.getCode();
RestAssert.fail(StringUtils.isBlank(sampleCode), "样品编码不能为空");
} else {
sampleCode = codeRuleService.getKey((Integer) codeType.getValue(), codeType.getName(), sample);
// 若为外委检测和三级编码,则查询质检编号
......@@ -432,7 +431,7 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
if (null != entrust) {
EntrustDTO vo = entrust.convert(EntrustDTO.class);
// 只查询正常样品,不查询标样
List<EntrustSampleDTO> sampleList = listSampleDTOByType(id,0);
List<EntrustSampleDTO> sampleList = listSampleDTOByType(id, 0);
if (CollectionUtils.isNotEmpty(sampleList)) {
List<Long> sampleIdList = sampleList.stream().map(s -> {
return s.getId();
......@@ -978,6 +977,69 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
return true;
}
@Override
public boolean cloneEntrust(Long[] ids, Account account) {
RestAssert.fail(null == ids || ids.length == 0, "请选择要复制的委托记录");
List<Entrust> entrustList = getBatchIds(Arrays.asList(ids));
RestAssert.fail(CollectionUtils.isEmpty(entrustList), "请选择要复制的委托记录");
// 循环遍历设置委托及其样品信息
List<EntrustSample> entrustSampleList = new ArrayList<>();
List<EntrustSampleItem> entrustSampleItemList = new ArrayList<>();
for (Entrust entrust : entrustList) {
// ==
List<EntrustSample> sampleList = entrustSampleService.list(Condition.create().eq("entrust_id", entrust.getId()).eq("deleted", 0));
if (CollectionUtils.isEmpty(sampleList)) {
continue;
}
entrust.setId(null);
entrust.setCode(null).setStatus(EntrustStatusEnum.DRAFT).setProgress(EntrustStatusEnum.DRAFT);
entrust.setUid(account.getUserId()).setCtime(new Date()).setLid(null).setLtime(null);
// 配置初始状态
String flowStatus = EntrustFlowEnum.DRAFT.getName();
if (StringUtils.isNotBlank(entrust.getStatusPath())) {
flowStatus = entrust.getStatusPath().split("->")[0];
}
entrust.setFlowStatus(flowStatus);
// 保存委托信息
saveEntrust(entrust);
int sampleIndex = 0;
for (EntrustSample sample : sampleList) {
List<EntrustSampleItem> itemList = entrustSampleItemService.list(Condition.create().eq("entrust_sample_id", sample.getId()).eq("deleted", 0));
if (CollectionUtils.isEmpty(itemList)) {
continue;
}
//生成样品编号,可能存在为空的情况
initSampleCode(sample);
sample.setId(IdWorker.getId());
sample.setEntrustId(entrust.getId()).setOrderBy(sampleIndex);
sample.setStatus(EntrustSampleStatusEnum.DRAFT).setProgress(EntrustSampleStatusEnum.DRAFT);
sample.setUid(account.getUserId()).setCtime(new Date()).setLid(null).setLtime(null);
for (EntrustSampleItem item : itemList) {
item.setId(null);
item.setEntrustSampleId(sample.getId());
item.setStatus(EntrustSampleItemStatusEnum.DRAFT);
item.setProgress(EntrustSampleItemStatusEnum.DRAFT);
item.setUid(account.getUserId()).setCtime(new Date()).setLid(null).setLtime(null);
}
entrustSampleItemList.addAll(itemList);
sampleIndex += 1;
}
entrustSampleList.addAll(sampleList);
}
if (entrustSampleList.size() > 0) {
entrustSampleService.saveBatch(entrustSampleList);
}
if (entrustSampleItemList.size() > 0) {
entrustSampleItemService.saveBatch(entrustSampleItemList);
}
// 操作记录
entrustRecordService.record(ids, EntrustStatusEnum.DRAFT.getDisplay(), EntrustStatusEnum.DRAFT.getDisplay(), 0, account, "复制初始化委托");
return true;
}
private List<EntrustSampleDTO> listSampleDTOByType(Long entrustId, int type) {
List<EntrustSampleDTO> sampleDTOList = baseMapper.listByContractId(entrustId);
return sampleDTOList.stream().filter(t -> (null == t.getType() ? 0 : t.getType().intValue()) == type).collect(Collectors.toList());
......
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