package com.yuanchu.mom.service.impl;
|
|
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.StrUtil;
|
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.fastjson.JSON;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.yuanchu.mom.common.GetLook;
|
import com.yuanchu.mom.common.PrintChina;
|
import com.yuanchu.mom.dto.*;
|
import com.yuanchu.mom.exception.ErrorException;
|
import com.yuanchu.mom.mapper.*;
|
import com.yuanchu.mom.pojo.*;
|
import com.yuanchu.mom.service.InsOrderService;
|
import com.yuanchu.mom.service.InsProductService;
|
import com.yuanchu.mom.utils.GiveCode;
|
import com.yuanchu.mom.utils.QueryWrappers;
|
import com.yuanchu.mom.vo.SampleDefectsFatherVo;
|
import lombok.AllArgsConstructor;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.servlet.ServletException;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.net.URLEncoder;
|
import java.time.LocalDate;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.*;
|
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.function.Function;
|
import java.util.function.Predicate;
|
import java.util.stream.Collectors;
|
|
/**
|
* @author gaoaoy
|
* @description 针对表【ins_order(检验下单)】的数据库操作Service实现
|
* @createDate 2024-03-12 16:17:55
|
*/
|
@Service
|
@AllArgsConstructor
|
public class InsOrderServiceImpl extends ServiceImpl<InsOrderMapper, InsOrder>
|
implements InsOrderService {
|
|
private GetLook getLook;
|
|
private InsOrderMapper insOrderMapper;
|
|
private InsSampleMapper insSampleMapper;
|
|
private InsProductMapper insProductMapper;
|
private InsProductService insProductService;
|
|
private GiveCode giveCode;
|
|
private InsSampleUserMapper insSampleUserMapper;
|
|
private InsOrderStateMapper insOrderStateMapper;
|
|
UserMapper userMapper;
|
|
PowerMapper powerMapper;
|
|
private InsBushingMapper insBushingMapper;
|
|
private InsFibersMapper insFibersMapper;
|
|
private InsFiberMapper insFiberMapper;
|
|
CustomMapper customMapper;
|
|
|
//获取检验下单数据
|
@Override
|
public Map<String, Object> selectInsOrderParameter(IPage<InsOrder> page, SampleOrderDto sampleOrderDto) {
|
Map<String, Object> map = new HashMap<>();
|
map.put("head", PrintChina.printChina(SampleOrderDto.class));
|
//判断全部,个人,组织的权限
|
Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectInsOrderParameter");
|
User user = userMapper.selectById(map1.get("userId"));//当前登录的人
|
Integer roleId = user.getRoleId();
|
//获取当前人所属实验室id
|
String departLimsId = user.getDepartLimsId();
|
String laboratory = null;
|
if (ObjectUtils.isNotEmpty(departLimsId) && !departLimsId.equals("")) {
|
String[] split = departLimsId.split(",");
|
//查询对应架构名称(通信实验室,电力实验室,检测办)
|
String departLims = baseMapper.seldepLimsId(Integer.parseInt(split[split.length - 1]));
|
if (departLims.contains("实验室")) {
|
laboratory = departLims;
|
}
|
}
|
//判断是否是全部权限
|
Power power = powerMapper.selectOne(Wrappers.<Power>lambdaQuery().eq(Power::getRoleId, roleId).eq(Power::getMenuMethod, "selectAllInsOrder"));
|
if (ObjectUtils.isEmpty(power)) {
|
if (map1.get("look") == 1) {
|
//个人
|
sampleOrderDto.setCreateUser(map1.get("userId"));
|
} else {
|
//组织
|
try {
|
sampleOrderDto.setCompany(customMapper.selectById(user.getCompany()).getCompany());
|
} catch (NullPointerException e) {
|
throw new ErrorException("找不到所属单位");
|
}
|
}
|
}
|
map.put("body", insOrderMapper.selectInsOrderPage(page, QueryWrappers.queryWrappers(sampleOrderDto), laboratory));
|
return map;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public int upInsOrder(Integer orderId, Integer sampleId, String appointed, Integer userId,String sonLaboratory) {
|
InsOrder insOrder = new InsOrder();
|
insOrder.setId(orderId);
|
insOrder.setAppointed(LocalDate.parse(appointed));
|
insOrder.setSendTime(LocalDateTime.now());
|
insOrderMapper.updateById(insOrder);
|
List<InsSample> insSamples = insSampleMapper.selectList(Wrappers.<InsSample>lambdaQuery().eq(InsSample::getInsOrderId, orderId).select(InsSample::getId));
|
List<Integer> ids = insSamples.stream().map(a -> a.getId()).collect(Collectors.toList());
|
List<InsProduct> insProducts = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery().in(InsProduct::getInsSampleId, ids).eq(InsProduct::getState, 1).isNull(InsProduct::getInsFibersId).isNull(InsProduct::getInsFiberId).select(InsProduct::getSonLaboratory).groupBy(InsProduct::getSonLaboratory));
|
for (InsProduct insProduct : insProducts) {
|
InsOrderState insOrderState = new InsOrderState();
|
insOrderState.setInsOrderId(orderId);
|
try {
|
insOrderState.setLaboratory(insProduct.getSonLaboratory());
|
} catch (NullPointerException e) {
|
throw new ErrorException("该检验单有未维护实验室的检验项目");
|
}
|
insOrderState.setInsState(0);
|
insOrderStateMapper.insert(insOrderState);
|
}
|
if (userId != null) {
|
InsSampleUser insSampleUser = new InsSampleUser();
|
insSampleUser.setState(0);
|
insSampleUser.setUserId(userId);
|
insSampleUser.setInsSampleId(orderId);
|
insSampleUser.setSonLaboratory(sonLaboratory);
|
insSampleUserMapper.insert(insSampleUser);
|
}
|
return 1;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public int addInsOrder(List<SampleProductDto> list, InsOrder insOrder, List<List<Integer>> pairing) {
|
insOrder.setState(0);
|
String code = customMapper.selectById(insOrder.getCompanyId()).getCode2();
|
//insOrder.setEntrustCode(giveCode.giveCode("JCZX-" + code + "-", "ins_order", "", "yyMMdd"));
|
String giveCode = this.giveCode.giveCode("JCZX-" + code + "-", "ins_order", "", "yyMMdd");
|
insOrderMapper.insert(insOrder);
|
AtomicInteger count = new AtomicInteger();
|
list.forEach(a -> {
|
count.getAndIncrement();
|
a.setId(null);
|
a.setInsOrderId(insOrder.getId());
|
if (StrUtil.isEmpty(a.getSampleCode())) {
|
a.setSampleCode(giveCode.split("-")[2] + "-" + count.get());
|
}
|
insSampleMapper.insert(a);
|
if (ObjectUtil.isNotEmpty(a.getInsProduct())) {
|
addInsProductMethod(a.getId(), a.getInsProduct(), null, 0, false);
|
if (ObjectUtil.isNotEmpty(a.getBushing())) {
|
for (BushingDto bushingDto : a.getBushing()) {
|
bushingDto.setInsSampleId(a.getId());
|
insBushingMapper.insert(bushingDto);
|
if (bushingDto.getFiber().size() != 0) {
|
for (FiberDto fiberDto : bushingDto.getFiber()) {
|
fiberDto.setInsBushingId(bushingDto.getId());
|
insFiberMapper.insert(fiberDto);
|
addInsProductMethod(a.getId(), a.getInsProduct(), fiberDto.getId(), 2, true);
|
addInsProductMethod(a.getId(), fiberDto.getProductList(), fiberDto.getId(), 2, false);
|
}
|
} else {
|
for (FibersDto fibersDto : bushingDto.getFibers()) {
|
fibersDto.setInsBushingId(bushingDto.getId());
|
fibersDto.setCode(this.giveCode.giveCode("", "ins_fibers", "", "yyMMdd"));
|
insFibersMapper.insert(fibersDto);
|
for (FiberDto fiberDto : fibersDto.getFiber()) {
|
fiberDto.setInsFibersId(fibersDto.getId());
|
insFiberMapper.insert(fiberDto);
|
addInsProductMethod(a.getId(), a.getInsProduct(), fiberDto.getId(), 2, true);
|
addInsProductMethod(a.getId(), fiberDto.getProductList(), fiberDto.getId(), 2, false);
|
}
|
//addInsProductMethod(a.getId(), a.getInsProduct(), fibersDto.getId(), 1);
|
addInsProductMethod(a.getId(), fibersDto.getProductList(), fibersDto.getId(), 1, false);
|
}
|
}
|
}
|
}
|
}
|
if (ObjectUtil.isNotEmpty(a.getInsulating())) {
|
List<InsProduct> ip2 = new ArrayList<>();
|
for (Integer i = 0; i < a.getInsulating().getNum(); i++) {
|
ip2.addAll(a.getInsulating().getInsProduct());
|
}
|
for (InsProduct product : ip2) {
|
product.setStandardMethodListId(a.getInsulating().getStandardMethodListId());
|
}
|
addInsProductMethod(a.getId(), ip2, null, 0, false);
|
}
|
if (ObjectUtil.isNotEmpty(a.getSheath())) {
|
for (InsProduct product : a.getSheath().getInsProduct()) {
|
product.setStandardMethodListId(a.getSheath().getStandardMethodListId());
|
}
|
addInsProductMethod(a.getId(), a.getSheath().getInsProduct(), null, 0, false);
|
}
|
if (ObjectUtil.isNotEmpty(a.getChildSampleList())) {
|
for (SampleProductDto b : a.getChildSampleList()) {
|
for (int i = 0; i < b.getNum(); i++) {
|
b.setId(null);
|
b.setInsOrderId(insOrder.getId());
|
b.setParentId(a.getId());
|
if (StrUtil.isEmpty(b.getSampleCode())) {
|
b.setSampleCode(this.giveCode.giveCode("", "ins_sample", "", "yyMMdd"));
|
}
|
insSampleMapper.insert(b);
|
if (ObjectUtil.isNotEmpty(b.getInsProduct())) {
|
addInsProductMethod(b.getId(), b.getInsProduct(), null, 0, false);
|
}
|
}
|
}
|
}
|
if (ObjectUtil.isEmpty(a.getInsProduct()) && ObjectUtil.isNotEmpty(a.getBushing())) {
|
for (BushingDto bushingDto : a.getBushing()) {
|
bushingDto.setInsSampleId(a.getId());
|
insBushingMapper.insert(bushingDto);
|
if (bushingDto.getFiber().size() != 0) {
|
for (FiberDto fiberDto : bushingDto.getFiber()) {
|
fiberDto.setInsBushingId(bushingDto.getId());
|
insFiberMapper.insert(fiberDto);
|
addInsProductMethod(a.getId(), fiberDto.getProductList(), fiberDto.getId(), 2, false);
|
}
|
} else {
|
for (FibersDto fibersDto : bushingDto.getFibers()) {
|
fibersDto.setInsBushingId(bushingDto.getId());
|
fibersDto.setCode(this.giveCode.giveCode("", "ins_fibers", "", "yyMMdd"));
|
insFibersMapper.insert(fibersDto);
|
for (FiberDto fiberDto : fibersDto.getFiber()) {
|
fiberDto.setInsFibersId(fibersDto.getId());
|
insFiberMapper.insert(fiberDto);
|
addInsProductMethod(a.getId(), fiberDto.getProductList(), fiberDto.getId(), 2, false);
|
}
|
addInsProductMethod(a.getId(), fibersDto.getProductList(), fibersDto.getId(), 1, false);
|
}
|
}
|
}
|
}
|
});
|
for (List<Integer> i : pairing) {
|
SampleProductDto sample = JSON.parseObject(JSON.toJSONString(list.get(i.get(0) - 1)), SampleProductDto.class);
|
sample.setSampleCode(list.get(i.get(0) - 1).getSampleCode() + "/" + list.get(i.get(1) - 1).getSampleCode());
|
sample.setId(null);
|
insSampleMapper.insert(sample);
|
try {
|
List<InsProduct> insProducts = sample.getInsProduct().stream().filter(a -> Objects.equals(a.getInspectionItem(), "光纤接头损耗")).collect(Collectors.toList());
|
for (InsProduct insProduct : insProducts) {
|
insProduct.setId(null);
|
insProduct.setInsSampleId(sample.getId());
|
insProductMapper.insert(insProduct);
|
}
|
} catch (Exception e) {
|
}
|
}
|
return insOrder.getId();
|
}
|
|
private void addInsProductMethod(Integer sampleId, List<InsProduct> productList, Integer id, Integer type, Boolean is) {
|
InsOrder insOrder = insOrderMapper.selectById(insSampleMapper.selectById(sampleId).getInsOrderId());
|
for (InsProduct product : productList) {
|
if (product.getState() == 1 && !product.getInspectionItem().equals("光纤接头损耗")) {
|
//判断光缆的温度循环项目添加
|
if (insOrder.getSampleType().equals("光缆") && product.getInspectionItem().equals("温度循环") && type != 0) {
|
List<InsProduct> insProductes = new ArrayList<>();
|
List<InsProduct> insProducts = new ArrayList<>();
|
String[] strings = product.getAsk().split(";");
|
|
for (int i = 0; i < strings.length; i++) {
|
int count = Integer.parseInt(strings[strings.length - 1]);
|
if (i != strings.length - 1) {
|
InsProduct insProduct = new InsProduct();
|
switch (type) {
|
case 1:
|
insProduct.setInsFibersId(id);
|
break;
|
case 2:
|
insProduct.setInsFiberId(id);
|
break;
|
}
|
String[] split = strings[i].split(",");
|
if (split[0].equals("20℃")) {
|
insProduct.setInspectionItem(count + "");//检验项--循环次数
|
} else {
|
insProduct.setInspectionItem("1");//检验项--循环次数
|
}
|
insProduct.setInspectionItemSubclass(split[0]);//检验项--温度
|
insProduct.setInspectionItemClass(split[1]);//检验项--光纤项目
|
insProduct.setAsk(split[2]);//检验要求
|
insProduct.setTell(strings[i]);//检验描述
|
insProduct.setInsSampleId(sampleId);
|
insProduct.setState(1);
|
insProduct.setFactory(product.getFactory());
|
insProduct.setLaboratory(product.getLaboratory());
|
insProduct.setSampleType(product.getSampleType());
|
insProduct.setSample(product.getSample());
|
insProduct.setModel(product.getModel());
|
insProduct.setSonLaboratory(product.getSonLaboratory());
|
insProduct.setUnit(product.getUnit());
|
insProduct.setManHourGroup(product.getManHourGroup());
|
insProduct.setInspectionItemType("0");
|
insProduct.setInspectionValueType("1");
|
insProducts.add(insProduct);
|
insProductes.add(insProduct);
|
} else {
|
//最后一个数据是说明会循环多少次
|
if (count > 1) {
|
//循环超过1次
|
for (int j = 2; j <= count; j++) {
|
for (InsProduct insProduct : insProducts) {
|
if (!insProduct.getInspectionItemSubclass().equals("20℃") && !insProduct.getInspectionItemSubclass().equals("20℃(常温)")) {
|
InsProduct insProduct1 = new InsProduct();
|
BeanUtils.copyProperties(insProduct, insProduct1);
|
insProduct1.setInspectionItem(j + "");
|
insProductes.add(insProduct1);
|
}
|
}
|
}
|
}
|
}
|
}
|
insProductService.saveBatch(insProductes);
|
}
|
//判断热循环项目的添加和温升试验项目的添加
|
else if (product.getInspectionItem().equals("热循环") || product.getInspectionItem().equals("温升试验")) {
|
List<InsProduct> insProductess = new ArrayList<>();
|
product.setId(null);
|
product.setInsSampleId(sampleId);
|
insProductess.add(product);
|
List<InsProduct> insProductes = new ArrayList<>();
|
List<InsProduct> insProducts = new ArrayList<>();
|
String[] strings = product.getAsk().split(";");
|
//循环次数
|
int count = Integer.parseInt(strings[strings.length - 1]);
|
for (int i = 0; i < strings.length - 1; i++) {
|
String[] split = strings[i].split(",");
|
InsProduct insProduct = new InsProduct();
|
insProduct.setInspectionItem("1");//检验父项--循环次数
|
insProduct.setInspectionItemSubclass(split[0]);//检验子项--环境温度/导线温度/耐张温度/接续温度
|
insProduct.setInspectionItemSubclassEn(split[1]);//检验子项英文--环境温度/导线温度/耐张温度/接续温度
|
insProduct.setAsk(null);//检验要求
|
insProduct.setTell(null);//检验描述
|
insProduct.setInsSampleId(sampleId);
|
insProduct.setState(1);
|
insProduct.setFactory(product.getFactory());
|
insProduct.setLaboratory(product.getLaboratory());
|
insProduct.setSampleType(product.getSampleType());
|
insProduct.setSample(product.getSample());
|
insProduct.setModel(product.getModel());
|
insProduct.setSonLaboratory(product.getSonLaboratory());
|
insProduct.setUnit("℃");//单位
|
insProduct.setManHourGroup(product.getManHourGroup());
|
insProduct.setInspectionItemType("0");
|
insProduct.setInspectionValueType("1");
|
insProducts.add(insProduct);
|
}
|
//热循环才有多次循环次数
|
if (product.getInspectionItem().equals("热循环")) {
|
//热循环还要加上直流电阻
|
for (InsProduct insProduct : insProducts) {
|
InsProduct insProduct1 = new InsProduct();
|
BeanUtils.copyProperties(insProduct, insProduct1);
|
insProduct1.setInspectionItemClass("直流电阻");//检验子子项--直流电阻
|
insProduct1.setInspectionItemClassEn("DC resistance");//检验子子项英文--直流电阻
|
insProduct1.setUnit("Ω/km");//单位
|
insProductes.add(insProduct1);
|
insProductess.add(insProduct1);
|
}
|
}
|
if (count > 1) {
|
//循环超过1次
|
for (int j = 2; j <= count; j++) {
|
for (InsProduct insProduct : insProductes) {
|
InsProduct insProduct1 = new InsProduct();
|
BeanUtils.copyProperties(insProduct, insProduct1);
|
insProduct1.setInspectionItem(j + "");//循环次数
|
insProductess.add(insProduct1);
|
}
|
}
|
}
|
insProductService.saveBatch(insProductess);
|
} else {
|
if (!is) {
|
switch (type) {
|
case 1:
|
product.setInsFibersId(id);
|
break;
|
case 2:
|
product.setInsFiberId(id);
|
break;
|
}
|
product.setId(null);
|
product.setCreateTime(null);
|
product.setUpdateTime(null);
|
product.setUpdateTime(null);
|
product.setUpdateUser(null);
|
product.setInsSampleId(sampleId);
|
if (product.getInspectionItemSubclass() == null) {
|
product.setInspectionItemSubclass("");
|
}
|
insProductMapper.insert(product);
|
}
|
}
|
}
|
}
|
}
|
|
@Override
|
public Map<String, Object> getInsOrder(Integer id) {
|
Map<String, Object> map = new HashMap<>();
|
InsOrder insOrder = insOrderMapper.selectById(id);
|
List<SampleProductDto> list = insSampleMapper.selectSampleProductListByOrderId2(id);
|
map.put("insOrder", insOrder);
|
map.put("sampleProduct", list);
|
return map;
|
}
|
|
@Override
|
public int upInsOrderOfState(InsOrder insOrder) {
|
insOrder.setExamineTime(LocalDateTime.now());
|
if (insOrder.getState() == 1) {
|
//审核通过才会生成委托编号
|
String code = baseMapper.selLaboratoryCode(insOrder.getLaboratory());
|
if (StringUtils.isEmpty(code)) {
|
code = "";
|
}
|
String code2 = customMapper.selectById(insOrder.getCompanyId()).getCode2();
|
insOrder.setEntrustCode(giveCode.giveCode2("JCZX/" + code + "-" + code2 + "-", insOrder.getCompanyId(), insOrder.getLaboratory(), "ins_order", "", "yyMM"));
|
}
|
return insOrderMapper.updateById(insOrder);
|
}
|
|
@Override
|
public Map<String, Object> getInsOrderAndSample(Integer id, String laboratory) {
|
Map<String, Object> map = new HashMap<>();
|
InsOrder insOrder = insOrderMapper.selectById(id);
|
List<SampleProductDto> list = insSampleMapper.getInsOrderAndSample(id, laboratory);
|
map.put("insOrder", insOrder);
|
map.put("sampleProduct", list);
|
//查询所有记录模版去重
|
List<Map<Integer, Object>> list2 = insOrderMapper.selectReportModelByOrderId(id, laboratory);
|
map.put("reportModel", list2);
|
return map;
|
}
|
|
@Override
|
public Map<String, Object> selectSampleAndProductByOrderId(IPage<SampleProductDto2> page, SampleProductDto2 sampleProductDto) {
|
Map<String, Object> map = new HashMap<>();
|
map.put("head", PrintChina.printChina(SampleProductDto2.class));
|
map.put("body", insOrderMapper.selectSampleAndProductByOrderId(page, QueryWrappers.queryWrappers(sampleProductDto)));
|
return map;
|
}
|
|
@Override
|
public Map<String, Object> costStatistics(IPage<CostStatisticsDto> page, CostStatisticsDto costStatisticsDto) {
|
String dates = costStatisticsDto.getDates();
|
String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
|
costStatisticsDto.setDates(null);
|
Map<String, Object> map = new HashMap<>();
|
map.put("head", PrintChina.printChina(CostStatisticsDto.class));
|
Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("costStatistics");
|
if (map1.get("look") == 1) costStatisticsDto.setCreateUser(map1.get("userId"));
|
IPage<CostStatisticsDto> dtoIPage = insOrderMapper.selectCostStatistics(page, QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
|
List<CostStatisticsDto> collect = dtoIPage.getRecords().stream().map(dto -> {
|
Set<String> uniqueTags = new HashSet<>();
|
if (dto.getInspectionItem().contains(",")) {
|
for (String s : dto.getInspectionItem().split(",")) {
|
uniqueTags.add(s.split("@")[0]);
|
}
|
} else {
|
uniqueTags.add(dto.getInspectionItem().split("@")[0]);
|
}
|
dto.setInspectionItem(uniqueTags.toString());
|
return dto;
|
}).collect(Collectors.toList());
|
dtoIPage.setRecords(collect);
|
map.put("body", dtoIPage);
|
return map;
|
}
|
|
@Override
|
public Map<String, Object> costStatistics2(CostStatisticsDto costStatisticsDto) {
|
Map<String, Object> map = new HashMap<>();
|
String dates = costStatisticsDto.getDates();
|
String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
|
costStatisticsDto.setDates(null);
|
List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
|
double totalPrice = costStatisticsDtos.stream()
|
.filter(dto -> dto.getPrice() != null) // 过滤掉价格为 null 的对象
|
.mapToDouble(value -> value.getPrice().doubleValue() * value.getNum())
|
.sum();
|
map.put("total", totalPrice);
|
return map;
|
}
|
|
@Override
|
public Map<String, Object> selectSampleDefects(Page page, String inspectionItems, String orderNumber) {
|
List<SampleDefectsFatherVo> sampleDefectsFatherVos = insOrderMapper.selectSampleDefects(page, inspectionItems, orderNumber);
|
Map<String, Object> map = new HashMap<>();
|
map.put("records", sampleDefectsFatherVos);
|
Long aLong = insOrderMapper.getCount(inspectionItems, orderNumber);
|
map.put("total", aLong);
|
return map;
|
}
|
|
@Override
|
public int updateStatus(Integer id) {
|
return insOrderMapper.updateStatus(id);
|
}
|
|
//标签打印
|
@Override
|
public List<SampleProductDto3> labelPrinting(String ids) {
|
List<Integer> list = Arrays.stream(ids.split(",")).map(Integer::parseInt).collect(Collectors.toList());
|
List<SampleProductDto3> sampleProductDtos = insSampleMapper.selectSampleProductListByOrderId3(list);
|
Set<String> processedCodes = new HashSet<>();
|
//如果是光纤或者是光纤带默认只打印第一个
|
List<SampleProductDto3> sampleProductDto3s = sampleProductDtos.stream().filter(sampleProductDto3 -> {
|
if (!"光纤".equals(sampleProductDto3.getIoSampleType()) && !"光纤带".equals(sampleProductDto3.getIoSampleType())) {
|
return true;
|
}
|
if (processedCodes.contains(sampleProductDto3.getCode())) {
|
return false;
|
} else {
|
processedCodes.add(sampleProductDto3.getCode());
|
return true;
|
}
|
}).collect(Collectors.toList());
|
return sampleProductDto3s;
|
}
|
|
@Override
|
public void export(CostStatisticsDto costStatisticsDto,HttpServletResponse response) throws IOException {
|
//查询导出的费用统计数据
|
String dates = costStatisticsDto.getDates();
|
String[] split = dates.replaceAll("\\[", "").replaceAll("]", "").replaceAll("\"", "").split(",");
|
costStatisticsDto.setDates(null);
|
List<CostStatisticsDto> costStatisticsDtos = insOrderMapper.selectCostStatistics2(QueryWrappers.queryWrappers(costStatisticsDto).ge("create_time", split[0]).le("create_time", split[1] + " 23:59:59"));
|
costStatisticsDtos = costStatisticsDtos.stream().map(dto -> {
|
Set<String> uniqueTags = new HashSet<>();
|
if (dto.getInspectionItem().contains(",")) {
|
for (String s : dto.getInspectionItem().split(",")) {
|
uniqueTags.add(s.split("@")[0]);
|
}
|
} else {
|
uniqueTags.add(dto.getInspectionItem().split("@")[0]);
|
}
|
dto.setInspectionItem(uniqueTags.toString());
|
return dto;
|
}).collect(Collectors.toList());
|
|
response.setContentType("application/vnd.ms-excel");
|
response.setCharacterEncoding("UTF-8");
|
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
|
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();
|
|
WriteSheet mainSheet = EasyExcel.writerSheet( "样品费用统计导出").head(CostStatisticsDto.class).build();
|
excelWriter.write(costStatisticsDtos, mainSheet);
|
|
// 关闭流
|
excelWriter.finish();
|
} catch (IOException e) {
|
throw new RuntimeException("导出失败");
|
}
|
}
|
}
|