master
xiaoning 2 years ago
parent f1f76d0ecf
commit b1e5314c6a

@ -194,9 +194,9 @@ public class DmSygdMx implements Serializable {
@ApiModelProperty(value = "矫正日期")
private String jzrq;
@ApiModelProperty(value = "划线空程长度")
private String hxcdCk;
private String hxcdKc;
@ApiModelProperty(value = "切割空程长度")
private String qgcdCk;
private String qgcdKc;
@ApiModelProperty(value = "状态0编辑 1提交 2下发 3完成 4拖期")
private String zt="0";
@ -205,4 +205,8 @@ public class DmSygdMx implements Serializable {
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
@TableField(exist = false)
private String beginTime;
@TableField(exist = false)
private String endTime;
}

@ -0,0 +1,15 @@
package com.dsic.gj_erp.bean.jhgk.dto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class Kwdto {
private String rq;
private String kw;
private int tlt_sl;
private BigDecimal hx_cd;
private BigDecimal qg_cd;
}

@ -50,7 +50,10 @@ public class DmQfxqController {
@RequestMapping("/getCzxx")
@AuthFunction
public ResultBean getCzxx(){
List<DmCbxxp> list= cbxxpService.list(new QueryWrapper<DmCbxxp>().select("cbbm","cbmc").orderBy(true, true, "cbbm"));
List<DmCbxxp> list= cbxxpService.list(new QueryWrapper<DmCbxxp>()
.select("cbbm","cbmc")
.eq("wgbs","N")
.orderBy(true, true, "cbbm"));
return new ResultBean(list);
}
//导入

@ -7,6 +7,7 @@ import com.dsic.gj_erp.annotation.AuthFunction;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jhgk.DmQfxq;
import com.dsic.gj_erp.bean.jhgk.DmSygd;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.service.jhgk.DmSygdService;
import com.dsic.gj_erp.service.sy.SYService;
import org.springframework.beans.factory.annotation.Autowired;
@ -31,7 +32,18 @@ public class DmSygdController {
@Resource
DmSygdService service;
@RequestMapping("/getList")
@AuthFunction
public ResultBean getList(@RequestBody DmSygd sygd){
List<DmSygd> list= service.list(new QueryWrapper<DmSygd>()
.eq(StrUtil.isNotEmpty(sygd.getDcCh()),"dc_ch",sygd.getDcCh())
.eq(StrUtil.isNotEmpty(sygd.getDcPl()),"dc_pl",sygd.getDcPl())
// .ge(StrUtil.isNotEmpty(sygd.getBeginTime()),"jssj",sygd.getBeginTime())
// .le(StrUtil.isNotEmpty(sygd.getEndTime()),"jssj",sygd.getEndTime())
.orderByAsc("dc_ch,dc_pl")
);
return new ResultBean(list);
}

@ -1,6 +1,8 @@
package com.dsic.gj_erp.controller.jhgk;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsic.gj_erp.annotation.AuthFunction;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jhgk.DmSygd;
@ -32,22 +34,17 @@ public class DmSygdMxController {
@Autowired
private DmSygdMxService service;
@Resource
SYService syService;
@RequestMapping("/getList")
@AuthFunction
public ResultBean getList(@RequestBody DmSygd sygd){
String[] str=new String[50];
String[] str1=new String[50];
for (int i = 0; i < 50; i++) {
str[i]=syService.f_getpjh("DM", "SYSTEM", "BCHX");
str1[i]=syService.f_getpjh("DM", "SYSTEM", "CLDE");
}
for (String s:str){
System.out.println(s);
}
return new ResultBean();
public ResultBean getList(@RequestBody DmSygdMx sygd){
List<DmSygdMx> list= service.list(new QueryWrapper<DmSygdMx>()
.eq(StrUtil.isNotEmpty(sygd.getDcCh()),"dc_ch",sygd.getDcCh())
.eq(StrUtil.isNotEmpty(sygd.getDcPl()),"dc_pl",sygd.getDcPl())
.ge(StrUtil.isNotEmpty(sygd.getBeginTime()),"jssj",sygd.getBeginTime())
.le(StrUtil.isNotEmpty(sygd.getEndTime()),"jssj",sygd.getEndTime())
.orderByAsc("dc_ch,dc_pl,jssj")
);
return new ResultBean(list);
}
@RequestMapping("/sygdPC")
@AuthFunction
@ -60,5 +57,30 @@ public class DmSygdMxController {
public ResultBean saveByDcch(@RequestBody HashMap<String, List<Object>> map ){
return new ResultBean(service.saveByDcch(map));
}
@RequestMapping("/getKwList")
@AuthFunction
public ResultBean getKwList(@RequestBody List<DmSygdMx> list ){
return new ResultBean(service.getKwList(list));
}
@RequestMapping("/tqSygd")
@AuthFunction
public ResultBean tqSygd( ){
return service.tqSygd();
}
public static void main(String[] agrs){
// String[] a={"序号","产品","批量","分段","板数","上料","型材抛丸","抛丸","一垮龙门板数","一垮数控板数","坡口切割结束","二垮数控板数","数控切割开始","坡口切割结束","三垮数控板数","数控切割开始","坡口切割结束","三垮平铁板数","平铁切割开始","平铁切割结束","曲平铁转结束","曲平铁结束","曲外板结束","组立","数控 板数","数控切割开始","坡口切割结束","面板挤边","七垮型 材米数","型材 面板","小组配送结束","光电 结束","备注"};
// String[] a={"船名","批量","图名","科室","套料图下发","套料图生产需求期","套料图接收","板材领取表下发","板材领取表生产需求期","板材领取表接收","零件配套表下发","零件配套表生产需求期","零件配套表接收"};
// String[] a={"船号","订货清单号","期次","需求日期","实际到货日期","物料号","材质MATERIAL","厚度THICK.mm","宽度WIDTHmm","长度LENGTHmm","重量吨/张WEIGHTTON/PIECE","设计数量张DESIGNPIECE","裕量张MARGINPIECE","总数量张TOTALPIECE","总重量吨TOTALTON ","利库数量张STOREPIECE","利库重量吨STORETON","实订数量张ORDERPIECE","实订重量吨ORDERTON","备注NOTE"};
// for (int i = 0; i < a.length; i++) {
// System.out.println("{ field: '', title: '"+a[i]+"', width: 120, editRender: { name: 'input' },\n" +
// " filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],\n" +
// " filterRender: { name: 'FilterCombination', },\n" +
// " },");
// }
}
}

@ -1,7 +1,10 @@
package com.dsic.gj_erp.service.jhgk;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jhgk.DmSygd;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.dto.Kwdto;
import java.util.HashMap;
import java.util.List;
@ -16,6 +19,8 @@ import java.util.Map;
* @since 2023-10-09
*/
public interface DmSygdMxService extends IService<DmSygdMx> {
public Map sygdPC();
public List<DmSygdMx> saveByDcch(HashMap<String, List<Object>> map);
Map sygdPC();
List<DmSygdMx> saveByDcch(HashMap<String, List<Object>> map);
List<Kwdto> getKwList(List<DmSygdMx> list);
ResultBean tqSygd();
}

@ -6,18 +6,27 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jcsj.DmBom;
import com.dsic.gj_erp.bean.jcsj.EmGcrl;
import com.dsic.gj_erp.bean.jhgk.DmSygd;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.DmZrcjh;
import com.dsic.gj_erp.bean.jhgk.dto.Kwdto;
import com.dsic.gj_erp.mapper.jcsj.DmBomMapper;
import com.dsic.gj_erp.mapper.jcsj.EmGcrlMapper;
import com.dsic.gj_erp.mapper.jhgk.DmSygdMapper;
import com.dsic.gj_erp.mapper.jhgk.DmSygdMxMapper;
import com.dsic.gj_erp.mapper.jhgk.DmZrcjhMapper;
import com.dsic.gj_erp.service.jhgk.DmSygdMxService;
import com.dsic.gj_erp.service.jhgk.DmSygdService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -35,10 +44,21 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
private DmZrcjhMapper zrcjhMapper;
@Resource
private DmBomMapper bomMapper;
@Resource
private EmGcrlMapper gcrlMapper;
@Resource
private DmSygdService sygdService;
/**
*
* BOM
* 3
* @return
*/
@Override
@Transactional
public Map sygdPC(){
Map map2= new HashMap();
//1.接下来3个月的 中日程 数据
// List<DmZrcjh> zrcjhs= zrcjhMapper.selectList(new QueryWrapper<DmZrcjh>()
// .select("DC_CH,DC_PL,gjks,gjjs_dz,gjjs_xz,jsq_tlt,jsq_lqb,dhqd")
@ -60,12 +80,24 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
"2023/08/31")
.groupBy("DC_CH,DC_PL,gjks,gjjs_dz,gjjs_xz,jsq_tlt,jsq_lqb,dhqd")
);
//2.用中日程中的 船号 批量 在BOM中找明细
List<DmSygdMx> mxList=new ArrayList<>();
List<DmZrcjh> no_tlt=new ArrayList<>();
//2.如果未来3个月信息内的船号、批号已经排产过那么根据船号、批号删除重新排
int i= this.count(new QueryWrapper<DmSygdMx>()
.eq("dc_ch",zrcjhs.get(0).getDcCh())
.eq("dc_pl",zrcjhs.get(0).getDcPl())
);
if (i>0){
for (DmZrcjh z:zrcjhs){
this.remove(new QueryWrapper<DmSygdMx>()
.eq("dc_ch",z.getDcCh())
.eq("dc_pl",z.getDcPl()));
}
}
//3.用中日程中的 船号 批量 在BOM中找明细
List<DmSygdMx> mxList=new ArrayList<>();
List<DmZrcjh> no_tlt=new ArrayList<>();//在BOM中没有对应数据的中日程信息
for (DmZrcjh zrcjh : zrcjhs) {
//②BOM中对应数据是否齐全
//②BOM中对应数据
List<DmBom> bomList= bomMapper.selectList(new QueryWrapper<DmBom>()
.select("dcch,sjch,pl,tzbh,lqlb,zl,wpgg,wpcz,kw,hxcd,qgcd,\n" +
"pklx,pkcd,qbs,dmcd,ljsl")
@ -81,85 +113,42 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
bomToMx(zrcjh,bomList,mxList,"",zrcjh.getDcCh());
}
}
Map map2= new HashMap();
//根据有无套料图 分组 ,没有套料图的 获取船号list
Map<String,List<DmZrcjh>> map=no_tlt.stream().collect(Collectors.groupingBy(DmZrcjh::getDcCh));
if (map.size()>0){
//4.1 将没有BOM信息的中日程的船号去重返回前端手动选择目标船只
if (no_tlt.size()>0){
Map<String,List<DmZrcjh>> map=no_tlt.stream().collect(Collectors.groupingBy(DmZrcjh::getDcCh));
List<DmSygdMx> no_tlt_ch=new ArrayList<>();
for (String s:map.keySet()){
DmSygdMx m=new DmSygdMx();
m.setDcCh(s);
no_tlt_ch.add(m);
}
//BOM中有套料图的船
//可作为目标船只的船
List<DmBom> haveTltBoms= bomMapper.selectList(new QueryWrapper<DmBom>()
.select("dcch")
.eq("cs",3)
.groupBy("dcch"));
map2.put("no_tlt",no_tlt);
map2.put("no_tlt_ch",no_tlt_ch);
map2.put("haveTltBoms",haveTltBoms);
}else {
//4.2 如果BOM中数据齐全直接排产
ypc(mxList);
}
//3.给明细排产
//4.明细数据 统计到主表中 数据返回到前端页面
map2.put("mxList",mxList);
return map2;
}
@Override
public List<DmSygdMx> saveByDcch(HashMap<String, List<Object>> map) {
List<DmZrcjh> zrcjhs = BeanUtil.copyToList(map.get("no_tlt"), DmZrcjh.class);
List<DmSygdMx> mxList= BeanUtil.copyToList(map.get("mxList"),DmSygdMx.class);
List<DmSygdMx> no_tlt_ch= BeanUtil.copyToList(map.get("no_tlt_ch"),DmSygdMx.class);
//1.
for (DmZrcjh z:zrcjhs){
for (DmSygdMx mx:no_tlt_ch){
if (z.getDcCh().equals(mx.getDcCh())){
List<DmBom> bomList= bomMapper.selectList(new QueryWrapper<DmBom>()
.select("dcch,sjch,pl,tzbh,lqlb,zl,wpgg,wpcz,kw,hxcd,qgcd,\n" +
"pklx,pkcd,qbs,dmcd,ljsl")
.eq("dcch",mx.getDcCh1())
.eq("pl",z.getDcPl().length()<3?"0"+z.getDcPl():z.getDcPl())
.eq("cs",3)
.groupBy("dcch,sjch,pl,tzbh,lqlb,zl,wpgg,wpcz,kw,hxcd,qgcd,\n" +
"pklx,pkcd,qbs,dmcd,ljsl")
);
if(bomList.size()<1){
DmSygdMx mx1=new DmSygdMx();
zrcToMx(z,mx1);
mxList.add(mx1);
}else {
bomToMx(z,bomList,mxList,mx.getDcCh1(),"");
}
}
}
}
ypc(mxList);
return mxList;
}
public void zrcToMx(DmZrcjh zrcjh, DmSygdMx m){
m.setDcCh(zrcjh.getDcCh());
m.setDcPl(zrcjh.getDcPl());
m.setDcFd(zrcjh.getDcFd());
m.setGjks(zrcjh.getGjks());
m.setGjjsDz(zrcjh.getGjjsDz());
m.setGjjsXz(zrcjh.getGjjsXz());
m.setJsqTlt(zrcjh.getJsqTlt());
m.setJsqLqb(zrcjh.getJsqLqb());
m.setDhqd(zrcjh.getDhqd());
}
public List<DmSygdMx> bomToMx(DmZrcjh zrcjh,List<DmBom> list,List<DmSygdMx> mxList,String mbch,String dcch){
/**
*使BOM
* @param zrcjh
* @param list BOM
* @param mxList
* @param mbch
* @param dcch
* @return
*/
public void bomToMx(DmZrcjh zrcjh,List<DmBom> list,List<DmSygdMx> mxList,String mbch,String dcch){
for (DmBom b:list){
DmSygdMx mx=new DmSygdMx();
zrcToMx(zrcjh,mx);
@ -209,66 +198,379 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
mx.setDcCh2(dcch);
mx.setDcCh1(mbch);
mx.setGxsj(DateUtil.now());
//todo
if(b.getZl().equals("1110")){
mx.setJssj(mx.getGjjsDz());
}
if(b.getZl().equals("1010")){
mx.setJssj(mx.getGjjsXz());
}
if (b.getZl().equals("4230")){//焊接机器人肘板
mx.setJssj(mx.getGjjsXz());
}
if (b.getZl().equals("1120")){//TODO 光电 暂时按最小时间排
if (mx.getGjjsXz().compareTo(mx.getGjjsDz())>0)
mx.setJssj(mx.getGjjsXz());
else
mx.setJssj(mx.getGjjsDz());
}
mxList.add(mx);
}
}
return mxList;
/**
* 使
* @param zrcjh
* @param m
*/
public void zrcToMx(DmZrcjh zrcjh, DmSygdMx m){
m.setDcCh(zrcjh.getDcCh());
m.setDcPl(zrcjh.getDcPl());
m.setDcFd(zrcjh.getDcFd());
m.setGjks(zrcjh.getGjks());
m.setGjjsDz(zrcjh.getGjjsDz());
m.setGjjsXz(zrcjh.getGjjsXz());
m.setJsqTlt(zrcjh.getJsqTlt());
m.setJsqLqb(zrcjh.getJsqLqb());
m.setDhqd(zrcjh.getDhqd());
}
/**
*
* @param map
* @return
*/
@Override
public List<DmSygdMx> saveByDcch(HashMap<String, List<Object>> map) {
List<DmZrcjh> zrcjhs = BeanUtil.copyToList(map.get("no_tlt"), DmZrcjh.class);
List<DmSygdMx> mxList= BeanUtil.copyToList(map.get("mxList"),DmSygdMx.class);
List<DmSygdMx> no_tlt_ch= BeanUtil.copyToList(map.get("no_tlt_ch"),DmSygdMx.class);
//1.根据选择的目标船只,查询数据,为本船只赋值
for (DmZrcjh z:zrcjhs){
for (DmSygdMx mx:no_tlt_ch){
if (z.getDcCh().equals(mx.getDcCh())){
List<DmBom> bomList= bomMapper.selectList(new QueryWrapper<DmBom>()
.select("dcch,sjch,pl,tzbh,lqlb,zl,wpgg,wpcz,kw,hxcd,qgcd,\n" +
"pklx,pkcd,qbs,dmcd,ljsl")
.eq("dcch",mx.getDcCh1())
.eq("pl",z.getDcPl().length()<3?"0"+z.getDcPl():z.getDcPl())
.eq("cs",3)
.groupBy("dcch,sjch,pl,tzbh,lqlb,zl,wpgg,wpcz,kw,hxcd,qgcd,\n" +
"pklx,pkcd,qbs,dmcd,ljsl")
);
if(bomList.size()<1){
DmSygdMx mx1=new DmSygdMx();
zrcToMx(z,mx1);
mxList.add(mx1);
}else {
bomToMx(z,bomList,mxList,mx.getDcCh1(),"");
}
}
}
}
//2.排产
ypc(mxList);
mxList =mxList.stream().sorted(Comparator.comparing(DmSygdMx::getJssj,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
return mxList;
}
/**
*
* @param list
*/
public void ypc(List<DmSygdMx> list){
//排序
list =list.stream().sorted(Comparator.comparing(DmSygdMx::getJssj,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
//上料
list.forEach(l->{
//1.根据钢加结束时间排序,决定生产顺序
list =list.stream().sorted(Comparator.comparing(DmSygdMx::getJssj,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
//2.未来3个月的工厂日历信息
List<EmGcrl> gcrlList= gcrlMapper.selectList(new QueryWrapper<EmGcrl>()
.eq("xxr","1")
.between("gl",
"2023/08/01",
"2023/08/31")
.orderByAsc("gl"));
//3.预排产
//TODO 假设上料产能22张/小时每天8小时工作时间又套料图需当天完成
for (int i = 0; i < gcrlList.size(); i++) {
for (int j = 0; j < (8*22); j++) {
int index=(8*22)*i+j;
if (list.size()>index){
// if (list.get(index).getLx().equals("B")){
//1抛
list.get(index).setPwrq(gcrlList.get(i).getGl());
list.get(index).setSlrq(gcrlList.get(i).getGl());
list.get(index).setHxrq(gcrlList.get(i).getGl());
list.get(index).setQgrq(gcrlList.get(i).getGl());
// }else {
// //2抛
// }
}else {
j=(8*22);
i=gcrlList.size();
}
}
//
});
}
this.saveBatch(list);
// 校平
//抛丸
//根据跨位分组
Map<String,List<DmSygdMx>> groupByKw=list.stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("0") ));
// Map<String,List<DmSygdMx>> groupByKw=list.stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("0") ));
// 7 1跨平直大板
List<DmSygdMx> k1pz=groupByKw.get("7");
//排产
k1pz.forEach(k->{
//上料 校平 抛丸 理料 划线 切割 坡口 打磨
// List<DmSygdMx> k1pz=groupByKw.get("7");
// k1pz =k1pz.stream().sorted(Comparator.comparing(DmSygdMx::getPwrq,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
// //排产
// 划线 切割 坡口 打磨
// k1pz.forEach(k->{
// k.setHxrq(k.getPwrq());
// k.setQgry(k.getPwrq());
// });
});
// 8 1跨进线板
List<DmSygdMx> k1jx=groupByKw.get("8");
// 11 2跨T型材腹板
List<DmSygdMx> k2tf=groupByKw.get("11");
// 5 2跨T型材面板
List<DmSygdMx> k2tm=groupByKw.get("5");
// 9 2跨超长超宽板
List<DmSygdMx> k2c=groupByKw.get("9");
// 10 2跨超长超宽曲板
List<DmSygdMx> k2cq=groupByKw.get("10");
// 12 2跨激光切割板
List<DmSygdMx> k2j=groupByKw.get("12");
// 14 3跨厚板
List<DmSygdMx> k3h=groupByKw.get("14");
// 6 3跨平铁
List<DmSygdMx> k3p=groupByKw.get("6");
// 13 3跨曲板
List<DmSygdMx> k3q=groupByKw.get("13");
// 15 4跨普通板
List<DmSygdMx> k4p=groupByKw.get("15");
// 16 7跨型板
List<DmSygdMx> k7x=groupByKw.get("16");
// 17 光电
List<DmSygdMx> gd=groupByKw.get("17");
//// 8 1跨进线板
// List<DmSygdMx> k1jx=groupByKw.get("8");
//// 11 2跨T型材腹板
// List<DmSygdMx> k2tf=groupByKw.get("11");
//// 5 2跨T型材面板
// List<DmSygdMx> k2tm=groupByKw.get("5");
//// 9 2跨超长超宽板
// List<DmSygdMx> k2c=groupByKw.get("9");
//// 10 2跨超长超宽曲板
// List<DmSygdMx> k2cq=groupByKw.get("10");
//// 12 2跨激光切割板
// List<DmSygdMx> k2j=groupByKw.get("12");
//// 14 3跨厚板
// List<DmSygdMx> k3h=groupByKw.get("14");
//// 6 3跨平铁
// List<DmSygdMx> k3p=groupByKw.get("6");
//// 13 3跨曲板
// List<DmSygdMx> k3q=groupByKw.get("13");
//// 15 4跨普通板
// List<DmSygdMx> k4p=groupByKw.get("15");
//// 16 7跨型板
// List<DmSygdMx> k7x=groupByKw.get("16");
//// 17 光电
// List<DmSygdMx> gd=groupByKw.get("17");
System.out.println(groupByKw);
}
/**
*
* @param list
* @return
*/
public List<Kwdto> getKwList(List<DmSygdMx> list){
//1.将明细信息,按照跨位分组
Map<String,List<DmSygdMx>> map=list.stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("0") ));
List<Kwdto> kwdtoList=new ArrayList<>();
//2.按照日期,统计每个跨位信息
for (String kw:map.keySet()){
//根据上料日期分组
Map<String,List<DmSygdMx>> map1=map.get(kw).stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getSlrq()).orElse("0") ));
for (String rq:map1.keySet()){
Kwdto kwdto=new Kwdto();
kwdto.setRq(rq);
kwdto.setKw(kw);
List<DmSygdMx> list1=map1.get(rq);
kwdto.setTlt_sl(list1.size());
BigDecimal hx_cd=new BigDecimal(0);
BigDecimal qg_cd=new BigDecimal(0);
for (DmSygdMx mx:list1){
hx_cd=hx_cd.add(ObjectUtil.isEmpty(mx.getHxcd())?new BigDecimal(0):mx.getHxcd());
qg_cd=qg_cd.add(ObjectUtil.isEmpty(mx.getQgcd())?new BigDecimal(0):mx.getQgcd());
}
kwdto.setHx_cd(hx_cd);
kwdto.setQg_cd(qg_cd);
kwdtoList.add(kwdto);
}
}
kwdtoList=kwdtoList.stream().sorted(Comparator.comparing(Kwdto::getRq,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
return kwdtoList;
}
/**
* 3
* @return
*/
public ResultBean tqSygd(){
//1.查询未来3个月明细信息
//测试
// List<DmSygdMx> list=null;
List<DmSygdMx> list= this.list(new QueryWrapper<DmSygdMx>()
.between("gjks",
"2023/08/01",
"2023/08/31")
);
if (ObjectUtil.isEmpty(list)||list.size()<1){
return new ResultBean(null);
}
//根据船号+批量分组
Map<String,List<DmSygdMx>> map=list.stream().collect(Collectors.groupingBy(x->x.getDcCh()+x.getDcPl()));
List<DmSygd> sygdList=new ArrayList<>();
for (String key:map.keySet()){
DmSygd sygd=new DmSygd();
List<DmSygdMx> mxList=map.get(key);
sygd.setDcCh(mxList.get(0).getDcCh());
sygd.setDcPl(mxList.get(0).getDcPl());
sygd.setDcFd(mxList.get(0).getDcFd());
sygd.setGjjsDz(mxList.get(0).getGjjsDz());
sygd.setGjjsXz(mxList.get(0).getGjjsXz());
sygd.setJsqTlt(mxList.get(0).getJsqTlt());
sygd.setJsqLqb(mxList.get(0).getJsqLqb());
sygd.setTltSl(mxList.size());
sygd.setSlSl(mxList.size());
sygd.setPwSl(mxList.size());
//跨位信息
Map<String,List<DmSygdMx>> kwMap=map.get(key).stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("0") ));
for (String kw:kwMap.keySet()){
//组立信息
Map<String,List<DmSygdMx>> zlMap=kwMap.get(kw).stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getZl()).orElse("0") ));
for (String zl:zlMap.keySet()){
//跨位、组立下,多张套料图的最开始加工时间,最后加工时间;(上料日期)
List<DmSygdMx> kssj= zlMap.get(zl).stream().sorted(Comparator.comparing(DmSygdMx::getSlrq,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
List<DmSygdMx> jssj= zlMap.get(zl).stream().sorted(Comparator.comparing(DmSygdMx::getSlrq,Comparator.nullsLast(Comparator.naturalOrder())).reversed()).collect(Collectors.toList());
String sj=kssj.get(0).getSlrq()+" - "+jssj.get(0).getSlrq();
if (kw.equals("7")){//1跨平直大板
if(zl.equals("1110")){//大组
sygd.setN1ad(kssj.size());
sygd.setN1adSj(sj);
}
if(zl.equals("1010")) {//小组
sygd.setN1ax(kssj.size());
sygd.setN1axSj(sj);
}
}
if (kw.equals("8")){//1跨进线板
sygd.setN1ld(kssj.size());
sygd.setN1ldSj(sj);
}
if (kw.equals("5")){//2跨T型材面板
if(zl.equals("1110")){//大组
sygd.setS2td(kssj.size());
sygd.setS2tdSj(sj);
}
if(zl.equals("1010")) {//小组
sygd.setS2tx(kssj.size());
sygd.setS2txSj(sj);
}
}
if (kw.equals("9")){//2跨超长超宽板
if(zl.equals("1110")){//大组
sygd.setN2bd(kssj.size());
sygd.setN2bdSj(sj);
}
if(zl.equals("1010")) {//小组
sygd.setN2bx(kssj.size());
sygd.setN2bxSj(sj);
}
}
if (kw.equals("10")){//2跨超长超宽曲板
if(zl.equals("1110")){//大组
sygd.setN2cd(kssj.size());
sygd.setN2cdSj(sj);
}
if(zl.equals("1010")) {//小组
sygd.setN2cx(kssj.size());
sygd.setN2cxSj(sj);
}
}
if (kw.equals("11")){//2跨T型材腹板
if(zl.equals("1110")){//大组
sygd.setN2td(kssj.size());
sygd.setN2tdSj(sj);
}
if(zl.equals("1010")) {//小组
sygd.setN2tx(kssj.size());
sygd.setN2txSj(sj);
}
}
if (kw.equals("12")){//2跨激光切割板
if(zl.equals("1110")){//大组
sygd.setN2jd(kssj.size());
sygd.setN2jdSj(sj);
}
if(zl.equals("1010")) {//小组
sygd.setN2jx(kssj.size());
sygd.setN2jxSj(sj);
}
}
if (kw.equals("14")){//3跨厚板
if(zl.equals("1110")){//大组
sygd.setN3hd(kssj.size());
sygd.setN3hdSj(sj);
}
if(zl.equals("1010")) {//小组
sygd.setN3hx(kssj.size());
sygd.setN3hxSj(sj);
}
}
if (kw.equals("6")){//3跨平铁
if(zl.equals("1110")){//大组
sygd.setS3pd(kssj.size());
sygd.setS3pdSj(sj);
}
if(zl.equals("1010")) {//小组
sygd.setS3px(kssj.size());
sygd.setS3pxSj(sj);
}
if(zl.equals("4230")) {//焊接机器人肘板
sygd.setS3xx(kssj.size());
sygd.setS3xxSj(sj);
}
}
if (kw.equals("13")){//3跨曲板
if(zl.equals("1110")){//大组
sygd.setN3cd(kssj.size());
sygd.setN3cdSj(sj);
}
if(zl.equals("1010")) {//小组
sygd.setN3cx(kssj.size());
sygd.setN3cxSj(sj);
}
}
if (kw.equals("15")){//4跨普通板
if(zl.equals("1110")){//大组
sygd.setN4pd(kssj.size());
sygd.setN4pdSj(sj);
}
if(zl.equals("1010")) {//小组
sygd.setN4px(kssj.size());
sygd.setN4pxSj(sj);
}
if(zl.equals("4230")) {//焊接机器人肘板
sygd.setN4xx(kssj.size());
sygd.setN4xxSj(sj);
}
}
if (kw.equals("16")){//7跨型板
if(zl.equals("1110")){//大组
//todo 型材米数
// sygd.setX7xd(kssj.size());
sygd.setX7xdSj(sj);
}
if(zl.equals("1010")) {//小组
// sygd.setX7xx(kssj.size());
sygd.setX7xxSj(sj);
}
}
if(kw.equals("17")) {//光电
sygd.setN8gx(kssj.size());
sygd.setN8gxSj(sj);
}
}
//1跨 板数 加工 时间
//1跨 板数 加工 时间
}
sygdList.add(sygd);
}
sygdList = sygdList.stream().sorted(Comparator.comparing(DmSygd::getDcCh).thenComparing(DmSygd::getDcPl)).collect(Collectors.toList());
sygdService.saveBatch(sygdList);
return new ResultBean(sygdList);
}
}

@ -13,7 +13,7 @@ spring.mvc.throw-exception-if-no-handler-found=true
mybatis-plus.type-aliases-package=com.dsic.gj_erp.bean.*
mybatis-plus.mapper-locations = classpath:mappers/*/*.xml
logging.level.com.dsic.xzerp.mapper=debug
logging.level.com.dsic.gj_erp.mapper=debug
spring.servlet.multipart.max-file-size=500MB
spring.servlet.multipart.max-request-size=500MB

Loading…
Cancel
Save