From b1e5314c6a61e9f7b294868957fd9b34ab52aaa8 Mon Sep 17 00:00:00 2001 From: xiaoning <1097449274@qq.com> Date: Tue, 17 Oct 2023 21:03:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=92=E4=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dsic/gj_erp/bean/jhgk/DmSygdMx.java | 8 +- .../com/dsic/gj_erp/bean/jhgk/dto/Kwdto.java | 15 + .../controller/jhgk/DmQfxqController.java | 5 +- .../controller/jhgk/DmSygdController.java | 14 +- .../controller/jhgk/DmSygdMxController.java | 50 +- .../gj_erp/service/jhgk/DmSygdMxService.java | 9 +- .../jhgk/impl/DmSygdMxServiceImpl.java | 506 ++++++++++++++---- src/main/resources/application.properties | 2 +- 8 files changed, 486 insertions(+), 123 deletions(-) create mode 100644 src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Kwdto.java diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java index cc84bda..21e4049 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java @@ -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; } diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Kwdto.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Kwdto.java new file mode 100644 index 0000000..285d437 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Kwdto.java @@ -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; +} diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java index 3d9a865..1dce1da 100644 --- a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java @@ -50,7 +50,10 @@ public class DmQfxqController { @RequestMapping("/getCzxx") @AuthFunction public ResultBean getCzxx(){ - List list= cbxxpService.list(new QueryWrapper().select("cbbm","cbmc").orderBy(true, true, "cbbm")); + List list= cbxxpService.list(new QueryWrapper() + .select("cbbm","cbmc") + .eq("wgbs","N") + .orderBy(true, true, "cbbm")); return new ResultBean(list); } //导入 diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdController.java index 5a20957..856eb0a 100644 --- a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdController.java +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdController.java @@ -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 list= service.list(new QueryWrapper() + .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); + } diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java index be8388c..4d87322 100644 --- a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java @@ -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 list= service.list(new QueryWrapper() + .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> map ){ return new ResultBean(service.saveByDcch(map)); } + + @RequestMapping("/getKwList") + @AuthFunction + public ResultBean getKwList(@RequestBody List 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" + +// " },"); +// } + + } } diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java index b6f131f..c0f224a 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java @@ -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 { - public Map sygdPC(); - public List saveByDcch(HashMap> map); + Map sygdPC(); + List saveByDcch(HashMap> map); + List getKwList(List list); + ResultBean tqSygd(); } diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java index e33c99e..565b0c0 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java @@ -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 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 zrcjhs= zrcjhMapper.selectList(new QueryWrapper() // .select("DC_CH,DC_PL,gjks,gjjs_dz,gjjs_xz,jsq_tlt,jsq_lqb,dhqd") @@ -60,12 +80,24 @@ public class DmSygdMxServiceImpl extends ServiceImpl i "2023/08/31") .groupBy("DC_CH,DC_PL,gjks,gjjs_dz,gjjs_xz,jsq_tlt,jsq_lqb,dhqd") ); - //2.用中日程中的 船号 批量 ,在BOM中找明细 - List mxList=new ArrayList<>(); - List no_tlt=new ArrayList<>(); + //2.如果未来3个月信息内的船号、批号,已经排产过,那么根据船号、批号删除,重新排 + int i= this.count(new QueryWrapper() + .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() + .eq("dc_ch",z.getDcCh()) + .eq("dc_pl",z.getDcPl())); + } + } + //3.用中日程中的 船号 批量 ,在BOM中找明细 + List mxList=new ArrayList<>(); + List no_tlt=new ArrayList<>();//在BOM中没有对应数据的中日程信息 for (DmZrcjh zrcjh : zrcjhs) { - //②BOM中对应数据是否齐全 + //②BOM中对应数据 List bomList= bomMapper.selectList(new QueryWrapper() .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 i bomToMx(zrcjh,bomList,mxList,"",zrcjh.getDcCh()); } } - Map map2= new HashMap(); - //根据有无套料图 分组 ,没有套料图的 获取船号list - Map> map=no_tlt.stream().collect(Collectors.groupingBy(DmZrcjh::getDcCh)); - if (map.size()>0){ + //4.1 将没有BOM信息的中日程的船号,去重,返回前端,手动选择目标船只 + if (no_tlt.size()>0){ + Map> map=no_tlt.stream().collect(Collectors.groupingBy(DmZrcjh::getDcCh)); List no_tlt_ch=new ArrayList<>(); for (String s:map.keySet()){ DmSygdMx m=new DmSygdMx(); m.setDcCh(s); no_tlt_ch.add(m); } - //BOM中有套料图的船 + //可作为目标船只的船 List haveTltBoms= bomMapper.selectList(new QueryWrapper() .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 saveByDcch(HashMap> map) { - List zrcjhs = BeanUtil.copyToList(map.get("no_tlt"), DmZrcjh.class); - List mxList= BeanUtil.copyToList(map.get("mxList"),DmSygdMx.class); - List 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 bomList= bomMapper.selectList(new QueryWrapper() - .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 bomToMx(DmZrcjh zrcjh,List list,List mxList,String mbch,String dcch){ - + /** + *使用中日程、BOM信息,给明细赋值 + * @param zrcjh 中日程对象 + * @param list BOM信息 + * @param mxList 明细信息 + * @param mbch 目标船只 + * @param dcch 本船号 + * @return + */ + public void bomToMx(DmZrcjh zrcjh,List list,List 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 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 saveByDcch(HashMap> map) { + List zrcjhs = BeanUtil.copyToList(map.get("no_tlt"), DmZrcjh.class); + List mxList= BeanUtil.copyToList(map.get("mxList"),DmSygdMx.class); + List 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 bomList= bomMapper.selectList(new QueryWrapper() + .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 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 gcrlList= gcrlMapper.selectList(new QueryWrapper() + .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> groupByKw=list.stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("0") )); +// Map> groupByKw=list.stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("0") )); // 7 1跨平直大板 - List k1pz=groupByKw.get("7"); - //排产 - k1pz.forEach(k->{ - //上料 校平 抛丸 理料 划线 切割 坡口 打磨 +// List 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 k1jx=groupByKw.get("8"); -// 11 2跨T型材腹板 - List k2tf=groupByKw.get("11"); -// 5 2跨T型材面板 - List k2tm=groupByKw.get("5"); -// 9 2跨超长超宽板 - List k2c=groupByKw.get("9"); -// 10 2跨超长超宽曲板 - List k2cq=groupByKw.get("10"); -// 12 2跨激光切割板 - List k2j=groupByKw.get("12"); -// 14 3跨厚板 - List k3h=groupByKw.get("14"); -// 6 3跨平铁 - List k3p=groupByKw.get("6"); -// 13 3跨曲板 - List k3q=groupByKw.get("13"); -// 15 4跨普通板 - List k4p=groupByKw.get("15"); -// 16 7跨型板 - List k7x=groupByKw.get("16"); -// 17 光电 - List gd=groupByKw.get("17"); +//// 8 1跨进线板 +// List k1jx=groupByKw.get("8"); +//// 11 2跨T型材腹板 +// List k2tf=groupByKw.get("11"); +//// 5 2跨T型材面板 +// List k2tm=groupByKw.get("5"); +//// 9 2跨超长超宽板 +// List k2c=groupByKw.get("9"); +//// 10 2跨超长超宽曲板 +// List k2cq=groupByKw.get("10"); +//// 12 2跨激光切割板 +// List k2j=groupByKw.get("12"); +//// 14 3跨厚板 +// List k3h=groupByKw.get("14"); +//// 6 3跨平铁 +// List k3p=groupByKw.get("6"); +//// 13 3跨曲板 +// List k3q=groupByKw.get("13"); +//// 15 4跨普通板 +// List k4p=groupByKw.get("15"); +//// 16 7跨型板 +// List k7x=groupByKw.get("16"); +//// 17 光电 +// List gd=groupByKw.get("17"); - System.out.println(groupByKw); + } + + /** + * 提取跨位信息 + * @param list + * @return + */ + public List getKwList(List list){ + //1.将明细信息,按照跨位分组 + Map> map=list.stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("0") )); + List kwdtoList=new ArrayList<>(); + //2.按照日期,统计每个跨位信息 + for (String kw:map.keySet()){ + //根据上料日期分组 + Map> 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 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 list=null; + List list= this.list(new QueryWrapper() + .between("gjks", + "2023/08/01", + "2023/08/31") + ); + if (ObjectUtil.isEmpty(list)||list.size()<1){ + return new ResultBean(null); + } + //根据船号+批量分组 + Map> map=list.stream().collect(Collectors.groupingBy(x->x.getDcCh()+x.getDcPl())); + List sygdList=new ArrayList<>(); + for (String key:map.keySet()){ + DmSygd sygd=new DmSygd(); + List 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> kwMap=map.get(key).stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("0") )); + for (String kw:kwMap.keySet()){ + //组立信息 + Map> zlMap=kwMap.get(kw).stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getZl()).orElse("0") )); + for (String zl:zlMap.keySet()){ + //跨位、组立下,多张套料图的最开始加工时间,最后加工时间;(上料日期) + List kssj= zlMap.get(zl).stream().sorted(Comparator.comparing(DmSygdMx::getSlrq,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList()); + List 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); + } } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index ad676ec..c9c1b9d 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -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