|
|
|
@ -2,7 +2,6 @@ package com.dsic.gj_erp.service.jhgk.impl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
@ -10,37 +9,29 @@ import com.alibaba.fastjson.JSONArray;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
import com.dsic.gj_erp.bean.ResultBean;
|
|
|
|
|
import com.dsic.gj_erp.bean.jcsj.*;
|
|
|
|
|
import com.dsic.gj_erp.bean.jcsj.excel.PlExcel;
|
|
|
|
|
import com.dsic.gj_erp.bean.jhgk.*;
|
|
|
|
|
import com.dsic.gj_erp.bean.jhgk.dto.*;
|
|
|
|
|
import com.dsic.gj_erp.bean.sy.Dm_zhbmp;
|
|
|
|
|
import com.dsic.gj_erp.dao.sy.Dm_zhbmpRepository;
|
|
|
|
|
import com.dsic.gj_erp.handler.ComputePlan;
|
|
|
|
|
import com.dsic.gj_erp.handler.dto.RealCapacity;
|
|
|
|
|
import com.dsic.gj_erp.mapper.jcsj.DmBomMapper;
|
|
|
|
|
import com.dsic.gj_erp.mapper.jcsj.EmGcrlMapper;
|
|
|
|
|
import com.dsic.gj_erp.mapper.jhgk.DmSygdMxMapper;
|
|
|
|
|
import com.dsic.gj_erp.mapper.jhgk.DmZrcjhMapper;
|
|
|
|
|
import com.dsic.gj_erp.service.jcsj.DmCzplpNewService;
|
|
|
|
|
import com.dsic.gj_erp.service.jcsj.EmSbcnpService;
|
|
|
|
|
import com.dsic.gj_erp.service.jhgk.*;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Isolation;
|
|
|
|
|
import org.springframework.transaction.annotation.Propagation;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.sql.Date;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
|
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -907,44 +898,151 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
|
|
|
|
|
return new ResultBean(sygdList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private List<DmYdjhxf> tqSygd2(String begin,String end){
|
|
|
|
|
List<String> slkw=Arrays.asList("7","8","9","5","6","15","11","14");
|
|
|
|
|
List<DmSygdMx> list = this.list(Wrappers.<DmSygdMx>lambdaQuery().between(DmSygdMx::getJssj, begin, end));
|
|
|
|
|
Map<String, List<DmSygdMx>> collect = list.stream().collect(Collectors.groupingBy(item -> item.getDcCh() +"_"+ item.getDcPl()));
|
|
|
|
|
List<DmYdjhxf> list2=new ArrayList<>();
|
|
|
|
|
//按批次合并为一行
|
|
|
|
|
collect.forEach((key,val)->{
|
|
|
|
|
Set<String> plSet=new HashSet<>();
|
|
|
|
|
DmYdjhxf dmYdjhxf = new DmYdjhxf();
|
|
|
|
|
dmYdjhxf.setDcCh(key.split("_")[0]);
|
|
|
|
|
dmYdjhxf.setDcPl(key.split("_")[1]);
|
|
|
|
|
|
|
|
|
|
AtomicReference<Integer> bs= new AtomicReference<>(0);
|
|
|
|
|
AtomicReference<Integer> yklm= new AtomicReference<>(0);
|
|
|
|
|
AtomicReference<Integer> yksk= new AtomicReference<>(0);
|
|
|
|
|
AtomicReference<Integer> eksk= new AtomicReference<>(0);
|
|
|
|
|
AtomicReference<Integer> eksk2= new AtomicReference<>(0);
|
|
|
|
|
AtomicReference<Integer> sksk= new AtomicReference<>(0);
|
|
|
|
|
AtomicReference<Integer> skpt= new AtomicReference<>(0);
|
|
|
|
|
AtomicReference<Integer> skbs= new AtomicReference<>(0);
|
|
|
|
|
AtomicReference<Integer> skbs2= new AtomicReference<>(0);
|
|
|
|
|
val.forEach(item-> {
|
|
|
|
|
plSet.add(item.getDcFd());
|
|
|
|
|
if (slkw.contains(item.getKw())){
|
|
|
|
|
bs.updateAndGet(v -> v + 1);
|
|
|
|
|
}
|
|
|
|
|
if ("7".equals(item.getKw())){
|
|
|
|
|
yklm.updateAndGet(v -> v + 1);
|
|
|
|
|
}
|
|
|
|
|
if ("8".equals(item.getKw())){
|
|
|
|
|
yksk.updateAndGet(v -> v + 1);
|
|
|
|
|
}
|
|
|
|
|
if ("9".equals(item.getKw())){
|
|
|
|
|
eksk.updateAndGet(v -> v + 1);
|
|
|
|
|
}
|
|
|
|
|
if ("5".equals(item.getKw())){
|
|
|
|
|
eksk2.updateAndGet(v -> v + 1);
|
|
|
|
|
}
|
|
|
|
|
if ("14".equals(item.getKw())){
|
|
|
|
|
sksk.updateAndGet(v -> v + 1);
|
|
|
|
|
}
|
|
|
|
|
if ("6".equals(item.getKw())){
|
|
|
|
|
skpt.updateAndGet(v -> v + 1);
|
|
|
|
|
}
|
|
|
|
|
if ("15".equals(item.getKw())){
|
|
|
|
|
skbs.updateAndGet(v -> v + 1);
|
|
|
|
|
}
|
|
|
|
|
if ("11".equals(item.getKw())){
|
|
|
|
|
skbs2.updateAndGet(v -> v + 1);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
dmYdjhxf.setDcFd(String.join("/", plSet));
|
|
|
|
|
dmYdjhxf.setBs(Double.valueOf(bs.get()));
|
|
|
|
|
|
|
|
|
|
//上料日期
|
|
|
|
|
DmSygdMx minSlrq=val.stream().filter(item->StrUtil.isNotEmpty(item.getSlrq()))
|
|
|
|
|
.min(Comparator.comparing(DmSygdMx::getSlrq)).get();
|
|
|
|
|
dmYdjhxf.setSl(minSlrq.getSlrq());
|
|
|
|
|
|
|
|
|
|
//型材抛丸日期
|
|
|
|
|
val.stream().filter(item -> "16".equals(item.getKw()))
|
|
|
|
|
.min(Comparator.comparing(DmSygdMx::getSlrq)).ifPresent(item -> dmYdjhxf.setXcpw(item.getSlrq()));
|
|
|
|
|
|
|
|
|
|
//抛丸日期
|
|
|
|
|
val.stream().filter(item->StrUtil.isNotEmpty(item.getPwrq()))
|
|
|
|
|
.min(Comparator.comparing(DmSygdMx::getPwrq)).ifPresent(item -> dmYdjhxf.setPw(item.getPwrq()));
|
|
|
|
|
|
|
|
|
|
//一跨龙门数量
|
|
|
|
|
dmYdjhxf.setYklm(yklm.get()+"");
|
|
|
|
|
//一跨数控数量
|
|
|
|
|
dmYdjhxf.setYksk(yksk.get()+"");
|
|
|
|
|
//二跨数控数量
|
|
|
|
|
dmYdjhxf.setEksk(eksk.get()+"");
|
|
|
|
|
|
|
|
|
|
//二跨数控开始
|
|
|
|
|
val.stream().filter(item -> "9".equals(item.getKw()))
|
|
|
|
|
.min(Comparator.comparing(DmSygdMx::getQgrq)).ifPresent(item -> dmYdjhxf.setEkskks(item.getQgrq()));
|
|
|
|
|
|
|
|
|
|
//二跨数控2
|
|
|
|
|
dmYdjhxf.setEksk2(eksk2.get()+"");
|
|
|
|
|
//二跨数控2开始
|
|
|
|
|
val.stream().filter(item -> "5".equals(item.getKw()))
|
|
|
|
|
.min(Comparator.comparing(DmSygdMx::getQgrq)).ifPresent(item -> dmYdjhxf.setEkskks(item.getQgrq()));
|
|
|
|
|
|
|
|
|
|
dmYdjhxf.setSksk(sksk.get()+"");
|
|
|
|
|
val.stream().filter(item->"14".equals(item.getKw()))
|
|
|
|
|
.min(Comparator.comparing(DmSygdMx::getQgrq)).ifPresent(item -> dmYdjhxf.setSkskqgks(item.getQgrq()));
|
|
|
|
|
|
|
|
|
|
dmYdjhxf.setSkpt(skpt.get()+"");
|
|
|
|
|
val.stream().filter(item->"6".equals(item.getKw()))
|
|
|
|
|
.min(Comparator.comparing(DmSygdMx::getQgrq)).ifPresent(item -> dmYdjhxf.setPtks(item.getQgrq()));
|
|
|
|
|
|
|
|
|
|
dmYdjhxf.setSkbs(skbs.get()+"");
|
|
|
|
|
val.stream().filter(item->"15".equals(item.getKw()))
|
|
|
|
|
.min(Comparator.comparing(DmSygdMx::getQgrq)).ifPresent(item -> dmYdjhxf.setSkqgks(item.getQgrq()));
|
|
|
|
|
|
|
|
|
|
dmYdjhxf.setSkbs2(skbs2.get()+"");
|
|
|
|
|
val.stream().filter(item->"11".equals(item.getKw()))
|
|
|
|
|
.min(Comparator.comparing(DmSygdMx::getQgrq)).ifPresent(item -> dmYdjhxf.setSkbs2(item.getQgrq()));
|
|
|
|
|
|
|
|
|
|
dmYdjhxf.setFdxq(val.get(0).getJssj());
|
|
|
|
|
list2.add(dmYdjhxf);
|
|
|
|
|
});
|
|
|
|
|
return list2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional
|
|
|
|
|
public List<DmYdjhxf> tqSygd1(String begin,String end){
|
|
|
|
|
|
|
|
|
|
List<DmYdjhxf> list= baseMapper.tqSygd1(begin,end);
|
|
|
|
|
List<DmYdjhxf> list2=new ArrayList<>();
|
|
|
|
|
// List<DmYdjhxf> list= baseMapper.tqSygd1(begin,end);
|
|
|
|
|
// List<DmYdjhxf> list2=new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
//1行分为两行
|
|
|
|
|
for (DmYdjhxf l : list) {
|
|
|
|
|
DmYdjhxf ydjhxf1=new DmYdjhxf();//第二行
|
|
|
|
|
ydjhxf1.setDcCh(l.getDcCh());
|
|
|
|
|
ydjhxf1.setDcPl(l.getDcPl());
|
|
|
|
|
String[] fds= l.getDcFd().split(" ");
|
|
|
|
|
double count= fds.length%2;
|
|
|
|
|
int index;
|
|
|
|
|
if (count>0){
|
|
|
|
|
index= (fds.length/2)+1;
|
|
|
|
|
}else {
|
|
|
|
|
index= fds.length/2;
|
|
|
|
|
}
|
|
|
|
|
String fd1= Arrays.toString(Arrays.copyOfRange(fds, 0, index)).replace(","," ");// 截取索引0(包括)到索引index(不包括)的元素
|
|
|
|
|
String fd2= Arrays.toString(Arrays.copyOfRange(fds, index, fds.length)).replace(","," ");
|
|
|
|
|
|
|
|
|
|
l.setDcFd(fd1.substring(1,fd1.lastIndexOf("]")));
|
|
|
|
|
ydjhxf1.setDcFd(fd2.substring(1,fd2.lastIndexOf("]")));
|
|
|
|
|
ydjhxf1.setEksk(l.getEksk2());
|
|
|
|
|
ydjhxf1.setEkskks(l.getEkskks2());
|
|
|
|
|
if (StrUtil.isNotEmpty(l.getSkbs())){
|
|
|
|
|
l.setZl("X");//4跨普通板
|
|
|
|
|
}
|
|
|
|
|
if (StrUtil.isNotEmpty(l.getSkbs2())){
|
|
|
|
|
ydjhxf1.setZl("Z");//2跨T型材腹板
|
|
|
|
|
}
|
|
|
|
|
ydjhxf1.setSkbs(l.getSkbs2());
|
|
|
|
|
ydjhxf1.setSkqgks(l.getSkqgks2());
|
|
|
|
|
ydjhxf1.setFdxq(l.getFdxq());
|
|
|
|
|
list2.add(l);
|
|
|
|
|
list2.add(ydjhxf1);
|
|
|
|
|
}
|
|
|
|
|
// for (DmYdjhxf l : list) {
|
|
|
|
|
// DmYdjhxf ydjhxf1=new DmYdjhxf();//第二行
|
|
|
|
|
// ydjhxf1.setDcCh(l.getDcCh());
|
|
|
|
|
// ydjhxf1.setDcPl(l.getDcPl());
|
|
|
|
|
// String[] fds= l.getDcFd().split(" ");
|
|
|
|
|
// double count= fds.length%2;
|
|
|
|
|
// int index;
|
|
|
|
|
// if (count>0){
|
|
|
|
|
// index= (fds.length/2)+1;
|
|
|
|
|
// }else {
|
|
|
|
|
// index= fds.length/2;
|
|
|
|
|
// }
|
|
|
|
|
// String fd1= Arrays.toString(Arrays.copyOfRange(fds, 0, index)).replace(","," ");// 截取索引0(包括)到索引index(不包括)的元素
|
|
|
|
|
// String fd2= Arrays.toString(Arrays.copyOfRange(fds, index, fds.length)).replace(","," ");
|
|
|
|
|
//
|
|
|
|
|
// l.setDcFd(fd1.substring(1,fd1.lastIndexOf("]")));
|
|
|
|
|
// ydjhxf1.setDcFd(fd2.substring(1,fd2.lastIndexOf("]")));
|
|
|
|
|
// ydjhxf1.setEksk(l.getEksk2());
|
|
|
|
|
// ydjhxf1.setEkskks(l.getEkskks2());
|
|
|
|
|
// if (StrUtil.isNotEmpty(l.getSkbs())){
|
|
|
|
|
// l.setZl("X");//4跨普通板
|
|
|
|
|
// }
|
|
|
|
|
// if (StrUtil.isNotEmpty(l.getSkbs2())){
|
|
|
|
|
// ydjhxf1.setZl("Z");//2跨T型材腹板
|
|
|
|
|
// }
|
|
|
|
|
// ydjhxf1.setSkbs(l.getSkbs2());
|
|
|
|
|
// ydjhxf1.setSkqgks(l.getSkqgks2());
|
|
|
|
|
// ydjhxf1.setFdxq(l.getFdxq());
|
|
|
|
|
// list2.add(l);
|
|
|
|
|
// list2.add(ydjhxf1);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
return list2;
|
|
|
|
|
return this.tqSygd2(begin,end);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|