1.排产临时提交

master
董哲奇 1 year ago
parent cb15bc0cb3
commit 65b67912b7

@ -3,6 +3,7 @@ package com.dsic.gj_erp.bean.jcsj;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.dsic.gj_erp.pc.dto.;
import com.dsic.gj_erp.pc.dto.; import com.dsic.gj_erp.pc.dto.;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
@ -222,4 +223,7 @@ public class DmBom implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private ; private ;
@TableField(exist = false)
private ;
} }

@ -1,8 +1,8 @@
package com.dsic.gj_erp.pc; package com.dsic.gj_erp.pc;
import com.dsic.gj_erp.bean.jcsj.EmSbjbb;
import com.dsic.gj_erp.pc.dto.sb.01; import com.dsic.gj_erp.pc.dto.sb.01;
import com.dsic.gj_erp.pc.dto.sb.02; import com.dsic.gj_erp.pc.dto.sb.02;
import com.dsic.gj_erp.pc.dto.sb.05;
import com.dsic.gj_erp.pc.dto.; import com.dsic.gj_erp.pc.dto.;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -12,27 +12,27 @@ import java.util.Map;
public interface Constant { public interface Constant {
//手动配置,后期可根据设备进行计算(计算方式根据所有设备的产能合并后的结果,设备维护时不计入产能,休息日产能默认为0) //手动配置,后期可根据设备进行计算(计算方式根据所有设备的产能合并后的结果,设备维护时不计入产能,休息日产能默认为0)
ImmutableMap<, Double> = ImmutableMap.<, Double>builder() // ImmutableMap<工序, Double> 工序产能 = ImmutableMap.<工序, Double>builder()
.put(., 200.0) // .put(工序.上料, 200.0)
.put(., 200.0) // .put(工序.抛丸, 200.0)
.put(., 200.0) // .put(工序.理料, 200.0)
.put(.线, 200.0) // .put(工序.划线, 200.0)
//
.put(., 200.0) // .put(工序.一跨龙门切割, 200.0)
.put(., 200.0) // .put(工序.一跨数控切割, 200.0)
.put(., 200.0) // .put(工序.二跨数控切割, 200.0)
.put(., 200.0) // .put(工序.三跨数控切割, 200.0)
.put(., 200.0) // .put(工序.三跨平铁切割, 200.0)
.put(., 200.0) // .put(工序.手工切割, 200.0)
//
.put(., 200.0) // .put(工序.坡口, 200.0)
.put(., 200.0) // .put(工序.型材面板, 200.0)
.put(., 200.0) // .put(工序.曲加工, 200.0)
.put(., 200.0) // .put(工序.平铁打磨, 200.0)
.put(., 200.0) // .put(工序.手工打磨, 200.0)
.put(., 200.0) // .put(工序.预配盘, 200.0)
.put(., 200.0) // .put(工序.光电结束, 200.0)
.build(); // .build();
//相对于钢料需求期 //相对于钢料需求期
ImmutableMap<, Integer> CD = ImmutableMap.<, Integer>builder() ImmutableMap<, Integer> CD = ImmutableMap.<, Integer>builder()
@ -40,19 +40,11 @@ public interface Constant {
.put(., -8) .put(., -8)
.put(., -8) .put(., -8)
.put(.线, -5) .put(.线, -5)
.put(., -5)
.put(., -5)
.put(., -5)
.put(., -5)
.put(., -5)
.put(., -5)
.put(., -5)
.put(., -3) .put(., -3)
.put(., -2) .put(., -2)
.put(., -5) .put(., -5)
.put(., -5) .put(., -5)
.put(., -5)
.put(., 0) .put(., 0)
.put(., -3) .put(., -3)
.put(., 0) .put(., 0)
@ -81,38 +73,64 @@ public interface Constant {
ImmutableMap<, Map<String, >> = ImmutableMap.<, Map<String, >>builder() ImmutableMap<, Map<String, >> = ImmutableMap.<, Map<String, >>builder()
//二跨超长超宽曲板小组 //二跨超长超宽曲板小组
.put(., ImmutableMap.<String, >builder() .put(., ImmutableMap.<String, >builder()
.put("",new 01()) .put(.01.,new 01(.01))
.build()) .build())
.put(., ImmutableMap.<String, >builder() .put(., ImmutableMap.<String, >builder()
.put("",new 02()) .put(.01.,new 02(.01))
.build())
.put(., ImmutableMap.<String, >builder()
.put(.01.,new 02(.01))
.build())
.put(.线, ImmutableMap.<String, >builder()
.put(.线01.,new 02(.线01))
.build())
.put(., ImmutableMap.<String, >builder()
.put(.01.,new 05(.01))
.put(.01.,new 05(.01))
.put(.01.,new 05(.01))
.put(.03.,new 05(.03))
.put(.03.,new 05(.03))
.put(.03.,new 05(.03))
.put(.02.,new 05(.02))
.put(.02.,new 05(.02))
.put(.02.,new 05(.02))
.build())
.put(., ImmutableMap.<String, >builder()
.put("",new 02(.01))
.build())
.put(., ImmutableMap.<String, >builder()
.put("",new 02(.01))
.build())
.put(., ImmutableMap.<String, >builder()
.put("",new 02(.01))
.build())
.put(., ImmutableMap.<String, >builder()
.put("",new 02(.01))
.build()) .build())
// .put(工序.抛丸, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.理料, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.划线, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
//
// .put(工序.一跨龙门切割, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.一跨数控切割, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.二跨数控切割, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.三跨数控切割, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.三跨平铁切割, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
//
// .put(工序.坡口, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.型材面板, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.曲加工, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.平铁打磨, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.手工打磨, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.预配盘, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.光电结束, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
// .put(工序.配送, new EmSbjbb[]{new EmSbjbb(), new EmSbjbb()})
.build(); .build();
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
enum { enum {
SLSB01(.,"","",0,0,200.0,200.0,400), 01(.,"","",0,0,200.0,200.0,400),
PWSB01(.,"","",0,0,240.0,286.0,526.0), 01(.,"","",0,0,240.0,286.0,526.0),
LM01(.,"","",2.4,3.6,9.6,15.6,25.2), 01(.,"","",0,0,240.0,286.0,526.0),
01(.,"","",0.3,11.5,2.0,0,2.0), 线01(.线,"","",0,0,240.0,286.0,526.0),
01(.,"","",1.5,3.0,0,8.5,25.5),
01(.,"","",2.4,3.6,9.6,15.6,25.2),
01(.,"","",0.3,11.5,2.0,0,2.0),
01(.,"","",1.5,3.0,0,8.5,8.5),
03(.,"","",0.3,11.5,2.0,0,2.0),
03(.,"","",2.0,4.2,0,14.0,14.0),
03(.,"","",1.6,3.2,7.2,11.2,18.4),
02(.,"","",0.3,11.5,3.9,0,3.9),
02(.,"","",1.4,3.0,0,18.2,18.2),
02(.,"","",2.0,3.0,1.0,13.0,13.0),
01(.,"","",2.0,3.0,1.0,13.0,13.0),
01(.,"","",2.0,3.0,1.0,13.0,13.0),
01(.,"","",2.0,3.0,1.0,13.0,13.0),
01(.,"","",2.0,3.0,1.0,13.0,13.0),
; ;
public _; public _;
public String ; public String ;
@ -131,11 +149,13 @@ public interface Constant {
("20"), ("20"),
("21"), ("21"),
线("01"), 线("01"),
("03"),("04"),("04"),("04"),("05"),("06"), ("03,04,05,06"),
// 一跨龙门切割("03"),一跨数控切割("04"),二跨数控切割("04"),三跨数控切割("04"),三跨平铁切割("05"),手工切割("06"),
("08"), ("08"),
("17"), ("17"),
("18"), ("18"),
("13"),("16"), ("13,16"),
// 平铁打磨("13"),手工打磨("16"),
(""), (""),
(""), (""),
(""), (""),

@ -24,7 +24,6 @@ import com.dsic.gj_erp.service.jhgk.DmSygdxqService;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.dsic.gj_erp.pc.Constant.CD; import static com.dsic.gj_erp.pc.Constant.CD;
@ -46,22 +45,59 @@ public class DataFactory {
DateTime parse = DateUtil.parse(xq.getXzglxq(), "yyyy/MM/dd"); DateTime parse = DateUtil.parse(xq.getXzglxq(), "yyyy/MM/dd");
DateTime dateTime = DateUtil.offsetDay(parse, cd); DateTime dateTime = DateUtil.offsetDay(parse, cd);
_ = (dateTime); _ = (dateTime);
//除切割工序外默认需求数量都是1
//todo 如果是切割工序需要获取切割长度
double =bom.getTlsl().doubleValue();
Optional.of(_).ifPresent(it->{ Optional.of(_).ifPresent(it->{
=null; =null;
= .get(bom.getTzbh()); = .get(bom.getTzbh());
if (!=null){ if (!=null){
= .get(bom.getTzbh()).getMAP().get(gx); = .getMAP().get(gx);
} }
if (!=null&&.get().contains(bom.getTzbh())){ if (!=null&&.get().contains(bom.getTzbh())){
bom.set(_); bom.set(it);
Optional<> _ = .(bom.getTzbh());
_.ifPresent(bom::set);
}else{ }else{
= it.getMAP().get(gx); = it.getMAP().get(gx);
//直接占用资源 Optional<> _ = .();
.(bom.getTzbh(), bom.getTlsl().doubleValue()); final = ;
bom.set(_); _.ifPresent(tmp->{
.put(bom.getTzbh(),_); bom.set(tmp);
tmp.(bom.getTzbh(),);
final.(bom.getTzbh(), );
bom.set(it);
.put(bom.getTzbh(),it);
});
} }
}); });
//没有可用资源是全局搜索可用资源,进行排产
if (bom.get()==null){
Optional<> = (gx, );
.ifPresent(tmp->{
_ = tmp.getMAP().get(gx);
Optional<> _ = _.(0);
_.ifPresent(tmp->{
bom.set(tmp);
tmp.(bom.getTzbh(),);
_.(bom.getTzbh(), );
bom.set(tmp);
.put(bom.getTzbh(),tmp);
});
});
}
//没有可用资源放入月末,待手工调整
if (bom.get()==null){
tmp = (DateUtil.endOfMonth(DateUtil.parse(xq.getXzglxq(), "yyyy/MM/dd")));
_ = tmp.getMAP().get(gx);
Optional<> _ = _.(0);
bom.set(_.get());
bom.set(tmp);
_.(bom.getTzbh(),0);
.put(bom.getTzbh(),tmp);
}
} }
}); });
}); });
@ -69,6 +105,13 @@ public class DataFactory {
System.out.println(111); System.out.println(111);
} }
public static Optional<> (Constant. , double ){
return .values().stream().filter(->{
= .getMAP().get();
return .();
}).findFirst();
}
public static (Date date){ public static (Date date){
= .get(DateUtil.format(date, "yyyy/MM/dd")); = .get(DateUtil.format(date, "yyyy/MM/dd"));
if (==null){ if (==null){
@ -94,29 +137,23 @@ public class DataFactory {
Map<String, > _ = Constant..get(_); Map<String, > _ = Constant..get(_);
switch (_){ switch (_){
case : case :
return new 01(_,_); return new 01(_);
case : case :
return new 02(_,_); return new 02(_);
case : case :
return new 03(_,_); return new 03(_);
case 线: case 线:
return new 04线(_,_); return new 04线(_);
case : case :
case : return new 05(_);
case :
case :
case :
case :
return new 05(_,_);
case : case :
return new 07(_,_); return new 07(_);
case : case :
return new 10(_,_); return new 10(_);
case : case :
return new 08(_,_); return new 08(_);
case : case :
case : return new 09(_);
return new 09(_,_);
// case 预配盘: // case 预配盘:
// return new 工序01上料(_工序,_设备); // return new 工序01上料(_工序,_设备);
// case 光电结束: // case 光电结束:
@ -124,7 +161,7 @@ public class DataFactory {
// case 配送: // case 配送:
// return new 工序01上料(_工序,_设备); // return new 工序01上料(_工序,_设备);
default: default:
return new 99(_,_); return new 99(Constant..NULL,_);
} }
} }

@ -11,8 +11,9 @@ import java.util.Map;
@Getter @Getter
@Setter @Setter
public class 01 extends { public class 01 extends {
public 01(Constant. , Map<String, > _) {
super(,_); public 01(Map<String, > _) {
super(Constant..,_);
} }
@Override @Override

@ -11,8 +11,8 @@ import java.util.Map;
@Getter @Getter
@Setter @Setter
public class 02 extends { public class 02 extends {
public 02(Constant. , Map<String, > _) { public 02(Map<String, > _) {
super(,_); super(Constant..,_);
} }
@Override @Override

@ -11,8 +11,8 @@ import java.util.Map;
@Getter @Getter
@Setter @Setter
public class 03 extends { public class 03 extends {
public 03(Constant. , Map<String, > _) { public 03(Map<String, > _) {
super(,_); super(Constant..,_);
} }
@Override @Override

@ -12,8 +12,9 @@ import java.util.Map;
@Getter @Getter
@Setter @Setter
public class 04线 extends { public class 04线 extends {
public 04线(Constant. , Map<String, > _) {
super(,_); public 04线(Map<String, > _) {
super(Constant..线,_);
} }
@Override @Override

@ -12,8 +12,8 @@ import java.util.Map;
@Getter @Getter
@Setter @Setter
public class 05 extends { public class 05 extends {
public 05(Constant. , Map<String, > _) { public 05(Map<String, > _) {
super(,_); super(Constant..,_);
} }
@Override @Override

@ -12,8 +12,8 @@ import java.util.Map;
@Getter @Getter
@Setter @Setter
public class 07 extends { public class 07 extends {
public 07(Constant. , Map<String, > _) { public 07(Map<String, > _) {
super(,_); super(Constant..,_);
} }
@Override @Override

@ -12,8 +12,8 @@ import java.util.Map;
@Getter @Getter
@Setter @Setter
public class 08 extends { public class 08 extends {
public 08(Constant. , Map<String, > _) { public 08(Map<String, > _) {
super(,_); super(Constant..,_);
} }
@Override @Override

@ -12,8 +12,8 @@ import java.util.Map;
@Getter @Getter
@Setter @Setter
public class 09 extends { public class 09 extends {
public 09(Constant. , Map<String, > _) { public 09(Map<String, > _) {
super(,_); super(Constant..,_);
} }
@Override @Override

@ -12,8 +12,8 @@ import java.util.Map;
@Getter @Getter
@Setter @Setter
public class 10 extends { public class 10 extends {
public 10(Constant. , Map<String, > _) { public 10(Map<String, > _) {
super(,_); super(Constant..,_);
} }
@Override @Override

@ -1,8 +1,11 @@
package com.dsic.gj_erp.pc.dto.sb; package com.dsic.gj_erp.pc.dto.sb;
import com.dsic.gj_erp.bean.jcsj.EmSbjbb; import com.dsic.gj_erp.pc.Constant;
import com.dsic.gj_erp.pc.dto.; import com.dsic.gj_erp.pc.dto.;
public class 01 extends { public class 01 extends {
public 01(Constant. _) {
super(_);
}
} }

@ -1,7 +1,11 @@
package com.dsic.gj_erp.pc.dto.sb; package com.dsic.gj_erp.pc.dto.sb;
import com.dsic.gj_erp.pc.Constant;
import com.dsic.gj_erp.pc.dto.; import com.dsic.gj_erp.pc.dto.;
public class 02 extends { public class 02 extends {
public 02(Constant. _) {
super(_);
}
} }

@ -0,0 +1,11 @@
package com.dsic.gj_erp.pc.dto.sb;
import com.dsic.gj_erp.pc.Constant;
import com.dsic.gj_erp.pc.dto.;
public class 03 extends {
public 03(Constant. _) {
super(_);
}
}

@ -0,0 +1,11 @@
package com.dsic.gj_erp.pc.dto.sb;
import com.dsic.gj_erp.pc.Constant;
import com.dsic.gj_erp.pc.dto.;
public class 04线 extends {
public 04线(Constant. _) {
super(_);
}
}

@ -0,0 +1,30 @@
package com.dsic.gj_erp.pc.dto.sb;
import com.dsic.gj_erp.pc.Constant;
import com.dsic.gj_erp.pc.dto.;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class 05 extends {
private String ;
protected double =7.0;
protected double ;
public 05(Constant. _) {
super(_);
}
@Override
public void (double , double ) {
this.=;
this.=;
this.();
}
public void (){
this.=this.*this.+this.*this.;
}
}

@ -0,0 +1,11 @@
package com.dsic.gj_erp.pc.dto.sb;
import com.dsic.gj_erp.pc.Constant;
import com.dsic.gj_erp.pc.dto.;
public class 07 extends {
public 07(Constant. _) {
super(_);
}
}

@ -0,0 +1,11 @@
package com.dsic.gj_erp.pc.dto.sb;
import com.dsic.gj_erp.pc.Constant;
import com.dsic.gj_erp.pc.dto.;
public class 08 extends {
public 08(Constant. _) {
super(_);
}
}

@ -0,0 +1,11 @@
package com.dsic.gj_erp.pc.dto.sb;
import com.dsic.gj_erp.pc.Constant;
import com.dsic.gj_erp.pc.dto.;
public class 09 extends {
public 09(Constant. _) {
super(_);
}
}

@ -0,0 +1,11 @@
package com.dsic.gj_erp.pc.dto.sb;
import com.dsic.gj_erp.pc.Constant;
import com.dsic.gj_erp.pc.dto.;
public class 10 extends {
public 10(Constant. _) {
super(_);
}
}

@ -0,0 +1,11 @@
package com.dsic.gj_erp.pc.dto.sb;
import com.dsic.gj_erp.pc.Constant;
import com.dsic.gj_erp.pc.dto.;
public class 99 extends {
public 99(Constant. _) {
super(_);
}
}

@ -9,7 +9,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors;
@Getter @Getter
@Setter @Setter
@ -35,7 +34,6 @@ public abstract class 工序产能 implements 工序排产处理接口 {
.values().forEach(item->{ .values().forEach(item->{
this.+=item.*this.+item.*this.; this.+=item.*this.+item.*this.;
}); });
this.=Constant..get();
this.cd=Constant.CD.get(); this.cd=Constant.CD.get();
=new ArrayList<>(); =new ArrayList<>();
} }
@ -53,9 +51,24 @@ public abstract class 工序产能 implements 工序排产处理接口 {
=new ArrayList<>(); =new ArrayList<>();
} }
public (double ){ public void (double ,double ){
this.=;
this.=;
.values().forEach(item->{
item.(,);
this.+=item.;
});
}
public Optional<> (String ){
return this..values().stream() return this..values().stream()
.filter(item -> this.(item., )).findFirst().orElse(null); .filter(item -> item.get().contains())
.findFirst();
}
public Optional<> (double ){
return this..values().stream()
.filter(item -> this.(item., )).findFirst();
} }
public boolean (String ,double ){ public boolean (String ,double ){
@ -75,9 +88,4 @@ public abstract class 工序产能 implements 工序排产处理接口 {
this..add(); this..add();
} }
@Override
public void (String ,String ) {
_ = .get();
_..add();
}
} }

@ -1,6 +1,7 @@
package com.dsic.gj_erp.pc.dto; package com.dsic.gj_erp.pc.dto;
import com.dsic.gj_erp.pc.Constant; import com.dsic.gj_erp.pc.Constant;
import com.dsic.gj_erp.pc.service.;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@ -8,7 +9,7 @@ import java.util.List;
@Getter @Getter
@Setter @Setter
public abstract class { public abstract class implements {
protected String ; protected String ;
protected String ; protected String ;
protected double ; protected double ;
@ -17,7 +18,25 @@ public abstract class 设备 {
protected double =0.0; protected double =0.0;
protected List<String> ; protected List<String> ;
public (Constant. _){ @Override
public void (double ) {
this.+=;
}
@Override
public void (String ) {
this..add();
}
@Override
public void (double , double ) {
}
public (Constant. _){
this.= _.;
this.= _.;
this.= _.;
this.= _.;
} }
} }

@ -1,19 +1,14 @@
package com.dsic.gj_erp.pc.service; package com.dsic.gj_erp.pc.service;
public interface { public interface {
void (double ,double );
default void (String ,String ,double ){
(,);
(,);
}
default void (String ,double ){ default void (String ,double ){
(); ();
(); ();
} }
void (String ,String );
void (double ); void (double );
void (String ); void (String );

@ -0,0 +1,14 @@
package com.dsic.gj_erp.pc.service;
public interface {
void (double ,double );
default void (String ,double ){
();
();
}
void (double );
void (String );
}
Loading…
Cancel
Save