1.增加设备产能和工序CD配置接口

master
董哲奇 11 months ago
parent e5130fb7e9
commit 6e8779ca03

@ -71,6 +71,10 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>

@ -0,0 +1,67 @@
package com.dsic.gj_erp.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import java.time.Duration;
@EnableCaching
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
// 设置序列化
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(lettuceConnectionFactory);
RedisSerializer<?> stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
@Bean
public RedisCacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory){
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
//解决查询缓存转换异常的问题
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);//这一句必须要,作用是序列化时将对象全类名一起保存下来
om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
//配置序列化(解决乱码的问题)
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(-1))//设置 key 过期时间
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)) //设置key序列化规则
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))//设置value序列化规则
.disableCachingNullValues();
RedisCacheManager cacheManager = RedisCacheManager.builder(redisConnectionFactory)
.cacheDefaults(config)
.build();
return cacheManager;
}
}

@ -4,11 +4,13 @@ import cn.hutool.core.util.StrUtil;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.pc.Manager;
import com.dsic.gj_erp.pc.service.;
import com.dsic.gj_erp.pc.service.CD;
import com.dsic.gj_erp.pc.service.;
import com.dsic.gj_erp.pc.CD;
import com.dsic.gj_erp.pc.;
import com.dsic.gj_erp.pc.;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.concurrent.Semaphore;
@ -19,6 +21,8 @@ import java.util.concurrent.Semaphore;
public class {
private final _;
private final _;
private final CD _CD;
private static Semaphore semaphore = new Semaphore(1);
@ -78,4 +82,33 @@ public class 三月滚动排产控制器 {
return new ResultBean<>(map);
}
@GetMapping("getCdAll")
public ResultBean<?> CD(){
Object o = _CD.get();
return new ResultBean<>(o);
}
@PostMapping("saveGxcd")
public ResultBean<?> CD(@RequestBody CD _CD){
_CD.save(_CD);
return new ResultBean<>();
}
@GetMapping("getSbcnAll")
public ResultBean<?> (){
Object o = _.get();
return new ResultBean<>(o);
}
@PostMapping("saveSbcn")
public ResultBean<?> (@RequestBody _){
_.save(_);
return new ResultBean<>();
}
@GetMapping("remove")
public ResultBean<?> (String code){
_.remove(code);
return new ResultBean<>();
}
}

@ -31,7 +31,7 @@ public class SyUserLogController {
log.setYhms(name);
String ipAddr = IPUtils.getIpAddr(request);
log.setIp(ipAddr);
log.setMac(IPUtils.getMACAddress(ipAddr));
// log.setMac(IPUtils.getMACAddress(ipAddr));
log.setCreated(DateUtil.now());
log.insert();
return new ResultBean<>();

@ -7,16 +7,16 @@ import lombok.Getter;
public interface Constant {
//相对于钢料需求期
ImmutableMap<, Integer> CD = ImmutableMap.<, Integer>builder()
.put(., -10)
.put(., -8)
.put(., -8)
.put(.线, -5)
.put(., -5)
.put(., -3)
.put(., -2)
.put(., -14)
.put(., -12)
.put(., -11)
.put(.线, -9)
.put(., -7)
.put(., -5)
.put(., -11)
.put(., -5)
.put(., -5)
.put(., 0)
.put(., -3)
.put(., -3)
.put(.,0)
.put(.,0)
@ -48,7 +48,7 @@ public interface Constant {
01(., "坡口01", "", 2.0, 3.0, 100.0, 13.0, 13.0),
01(., "型材01", "", 2.0, 3.0, 100.0, 13.0, 13.0),
01(., "曲加工01", "", 2.0, 3.0, 100.0, 13.0, 13.0),
01(., "打磨01", "", 2.0, 3.0, 100.0, 13.0, 13.0),
01(., "打磨01", "", 2.0, 3.0, 0, 0, 0),
01(., "自由边处理01", "", 2.0, 3.0, 100.0, 13.0, 13.0),
01(., "光电01", "", 2.0, 3.0, 100.0, 13.0, 13.0),

@ -19,6 +19,8 @@ import com.dsic.gj_erp.pc.dto.sb.*;
import com.dsic.gj_erp.pc.dto.tlt.*;
import com.dsic.gj_erp.pc.dto.;
import com.dsic.gj_erp.pc.dto.*;
import com.dsic.gj_erp.pc.service.CD;
import com.dsic.gj_erp.pc.service.;
import com.dsic.gj_erp.service.jcsj.EmGcrlService;
import com.dsic.gj_erp.service.jcsj.EmSbcnpService;
import com.dsic.gj_erp.service.jcsj.EmSbjbbService;
@ -34,7 +36,6 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
import static com.dsic.gj_erp.pc.Constant.CD;
import static com.dsic.gj_erp.pc.Manager.;
import static com.dsic.gj_erp.pc.Manager.*;
@ -46,10 +47,16 @@ public class DataFactory {
Manager.=new ArrayList<>();
List<> list=();
CD _CD = getBean(CD.class);
List<CD> CDS = _CD.get();
Map<Constant.,CD> CDMap=new HashMap<>();
CDS.forEach(item->CDMap.put(item.getGx(),item));
list.forEach( -> {
CountDownLatch latch = new CountDownLatch(.getBomList().size());
.getBomList().forEach(bom -> {
_ = (bom);
_.setCD(CDMap);
AtomicBoolean atomicBoolean = new AtomicBoolean(false);
if (_!=null){
_.set(.getXzglxq());
@ -117,7 +124,7 @@ public class DataFactory {
.filter(it -> gx.getCode().contains(it.split("_")[1])).findFirst();
first.ifPresent(_code -> {
if (ObjUtil.isNotEmpty(.get(_code))) {
Integer cd = CD.get(gx);
Integer cd = Constant.CD.get(gx);
DateTime parse = DateUtil.parse(.getXzglxq(), "yyyy/MM/dd");
DateTime dateTime = DateUtil.offsetDay(parse, cd);
_ = (dateTime);
@ -297,70 +304,54 @@ public class DataFactory {
}
public static (Constant. _) {
Map<String, > _ = null;
_ = getBean(.class);
List<> = _.get();
Map<String, > _;
ImmutableMap.Builder<String, > builder = ImmutableMap.builder();
switch (_) {
case :
_ = ImmutableMap.<String, >builder()
.put(Constant..01., new 01(Constant..01))
.build();
.stream().filter(item->item.get_()==_).forEach(item->builder.put(item.getCode(),new 01(item)));
_ = builder.build();
return new 01(_);
case :
_=ImmutableMap.<String, >builder()
.put(Constant..01.,new 02(Constant..01))
.build();
.stream().filter(item->item.get_()==_).forEach(item->builder.put(item.getCode(),new 02(item)));
_ = builder.build();
return new 02(_);
case :
_=ImmutableMap.<String, >builder()
.put(Constant..01.,new 03(Constant..01))
.build();
.stream().filter(item->item.get_()==_).forEach(item->builder.put(item.getCode(),new 03(item)));
_ = builder.build();
return new 03(_);
case 线:
_=ImmutableMap.<String, >builder()
.put(Constant..线01.,new 04线(Constant..线01))
.build();
.stream().filter(item->item.get_()==_).forEach(item->builder.put(item.getCode(),new 04线(item)));
_ = builder.build();
return new 04线(_);
case :
_=ImmutableMap.<String, >builder()
.put(Constant..01.,new 05(Constant..01))
.put(Constant..01.,new 05(Constant..01))
.put(Constant..01.,new 05(Constant..01))
.put(Constant..03.,new 05(Constant..03))
.put(Constant..03.,new 05(Constant..03))
.put(Constant..03.,new 05(Constant..03))
.put(Constant..02.,new 05(Constant..02))
.put(Constant..02.,new 05(Constant..02))
.put(Constant..02.,new 05(Constant..02))
.build();
.stream().filter(item->item.get_()==_).forEach(item->builder.put(item.getCode(),new 05(item)));
_ = builder.build();
return new 05(_);
case :
_=ImmutableMap.<String, >builder()
.put(Constant..01.,new 07(Constant..01))
.build();
.stream().filter(item->item.get_()==_).forEach(item->builder.put(item.getCode(),new 07(item)));
_ = builder.build();
return new 07(_);
case :
_=ImmutableMap.<String, >builder()
.put(Constant..01.,new 10(Constant..01))
.build();
.stream().filter(item->item.get_()==_).forEach(item->builder.put(item.getCode(),new 10(item)));
_ = builder.build();
return new 10(_);
case :
_=ImmutableMap.<String, >builder()
.put(Constant..01.,new 08(Constant..01))
.build();
.stream().filter(item->item.get_()==_).forEach(item->builder.put(item.getCode(),new 08(item)));
_ = builder.build();
return new 08(_);
case :
_=ImmutableMap.<String, >builder()
.put(Constant..01., new 09(Constant..01))
.build();
.stream().filter(item->item.get_()==_).forEach(item->builder.put(item.getCode(),new 09(item)));
_ = builder.build();
return new 09(_);
case :
_=ImmutableMap.<String, >builder()
.put(Constant..01., new 21(Constant..01))
.build();
.stream().filter(item->item.get_()==_).forEach(item->builder.put(item.getCode(),new 21(item)));
_ = builder.build();
return new 21(_);
case :
_=ImmutableMap.<String, >builder()
.put(Constant..01., new 31(Constant..01))
.build();
.stream().filter(item->item.get_()==_).forEach(item->builder.put(item.getCode(),new 31(item)));
_ = builder.build();
return new 31(_);
// case 预配盘:
// return new 工序01上料(_工序,_设备);

@ -2,9 +2,14 @@ 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.;
public class 01 extends {
public 01( _) {
super(_);
}
public 01(Constant. _) {
super(_);
}

@ -2,9 +2,14 @@ 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.;
public class 02 extends {
public 02( _){
super(_);
}
public 02(Constant. _) {
super(_);
}

@ -2,9 +2,14 @@ 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.;
public class 03 extends {
public 03( _){
super(_);
}
public 03(Constant. _) {
super(_);
}

@ -2,9 +2,14 @@ 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.;
public class 04线 extends {
public 04线( _){
super(_);
}
public 04线(Constant. _) {
super(_);
}

@ -2,6 +2,7 @@ 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.;
import lombok.Getter;
import lombok.Setter;
@ -13,6 +14,10 @@ public class 设备05切割 extends 设备 {
protected double =7.0;
protected double ;
public 05( _){
super(_);
}
public 05(Constant. _) {
super(_);
}

@ -2,9 +2,14 @@ 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.;
public class 07 extends {
public 07( _){
super(_);
}
public 07(Constant. _) {
super(_);
}

@ -2,9 +2,14 @@ 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.;
public class 08 extends {
public 08( _){
super(_);
}
public 08(Constant. _) {
super(_);
}

@ -2,9 +2,14 @@ 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.;
public class 09 extends {
public 09( _){
super(_);
}
public 09(Constant. _) {
super(_);
}

@ -2,9 +2,14 @@ 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.;
public class 10 extends {
public 10( _){
super(_);
}
public 10(Constant. _) {
super(_);
}

@ -2,9 +2,14 @@ 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.;
public class 21 extends {
public 21( _){
super(_);
}
public 21(Constant. _) {
super(_);
}

@ -2,9 +2,14 @@ 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.;
public class 31 extends {
public 31( _){
super(_);
}
public 31(Constant. _) {
super(_);
}

@ -9,15 +9,17 @@ import com.dsic.gj_erp.pc.Manager;
import com.dsic.gj_erp.pc.dto.data.Bom;
import com.dsic.gj_erp.pc.dto.data.;
import com.dsic.gj_erp.pc.service.;
import com.dsic.gj_erp.pc.CD;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicBoolean;
import static com.dsic.gj_erp.pc.Constant.CD;
//import static com.dsic.gj_erp.pc.Constant.工序CD;
import static com.dsic.gj_erp.pc.DataFactory.;
import static com.dsic.gj_erp.pc.DataFactory.;
import static com.dsic.gj_erp.pc.Manager.from;
@ -32,6 +34,7 @@ public abstract class 套料图工序 implements 套料图工序接口 {
protected String ;
protected Date _;
protected List<Constant.> ;
protected Map<Constant.,CD> CD;
public void run(AtomicBoolean atomicBoolean) {
if (ObjUtil.isEmpty(this.bom)||StrUtil.isEmpty(this.bom.getTzbh())){
@ -60,7 +63,7 @@ public abstract class 套料图工序 implements 套料图工序接口 {
}
protected boolean (Constant. _,double ){
Integer cd = CD.get(_);
Integer cd = CD.get(_).getCd();
DateTime dateTime = DateUtil.offsetDay(this._, cd);
_ = (dateTime);
AtomicBoolean =new AtomicBoolean(false);

@ -3,6 +3,7 @@ package com.dsic.gj_erp.pc.dto;
import com.dsic.gj_erp.pc.Constant;
import com.dsic.gj_erp.pc.dto.data.Bom;
import com.dsic.gj_erp.pc.service.;
import com.dsic.gj_erp.pc.;
import lombok.Getter;
import lombok.Setter;
@ -46,6 +47,15 @@ public abstract class 设备 implements 设备接口 {
this..add(bom);
}
public ( _){
this.= _.getCode();
this.= _.get();
this.= _.get();
this.= _.get();
this.=new ConcurrentLinkedDeque<>();
this.=new ConcurrentLinkedDeque<>();
}
public (Constant. _){
this.= _.;

@ -0,0 +1,51 @@
package com.dsic.gj_erp.pc.service;
import com.dsic.gj_erp.pc.CD;
import com.dsic.gj_erp.pc.;
import lombok.AllArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
@Service
@AllArgsConstructor
public class CD {
private static final String KEY="gxcd";
private final RedisTemplate<String,Object> redisTemplate;
@CachePut(cacheNames = {KEY},key = "#cd.getGx()")
public Object save(CD cd){
return cd;
}
@Cacheable(value = {KEY},key = "#gx")
public Object get(String gx){
return new HashMap<>();
}
@CacheEvict(value = {KEY}, key="#gx")
public Object remove(String gx){
return new HashMap<>();
}
public List<CD> get(){
Set<String> keys = redisTemplate.keys(KEY+"::*");
List<CD> list=new ArrayList<>();
if (keys==null){
return new ArrayList<>();
}
for (String key:keys){
CD _CD= (CD) redisTemplate.opsForValue().get(key);
list.add(_CD);
}
return list;
}
}

@ -0,0 +1,48 @@
package com.dsic.gj_erp.pc.service;
import com.dsic.gj_erp.pc.;
import lombok.AllArgsConstructor;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.util.*;
@Service
@AllArgsConstructor
public class {
private static final String KEY="sbcn";
private final RedisTemplate<String,Object> redisTemplate;
@CachePut(cacheNames = {KEY},key = "#sbcn.getCode()")
public Object save( sbcn){
return sbcn;
}
@Cacheable(value = {KEY},key = "#code")
public Object get(String code){
return new HashMap<>();
}
@CacheEvict(value = {KEY}, key="#code")
public Object remove(String code){
return new HashMap<>();
}
public List<> get(){
Set<String> keys = redisTemplate.keys(KEY+"::*");
List<> list=new ArrayList<>();
if (keys==null){
return new ArrayList<>();
}
for (String key:keys){
_= () redisTemplate.opsForValue().get(key);
list.add(_);
}
return list;
}
}

@ -0,0 +1,11 @@
package com.dsic.gj_erp.pc;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class CD {
private Constant. gx;
private Integer cd;
}

@ -0,0 +1,19 @@
package com.dsic.gj_erp.pc;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class {
private Constant. _;
private String code;
private String ;
private double ;
private double ;
private double ;
private double ;
private double ;
private boolean ;
}
Loading…
Cancel
Save