diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/controller/BstIvtCutpointivtController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/controller/BstIvtCutpointivtController.java index e69de29bb..92ca7a55d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/controller/BstIvtCutpointivtController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/controller/BstIvtCutpointivtController.java @@ -0,0 +1,60 @@ +package org.nl.b_lms.bst.ivt.cutpointivt.controller; + +import lombok.extern.slf4j.Slf4j; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.modules.logging.annotation.Log; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; +/** + * @author lyd + * @date 2024-02-26 + **/ +@Slf4j +@RestController +@RequestMapping("/api/bstIvtCutpointivt") +public class BstIvtCutpointivtController { + + @Autowired + private IBstIvtCutpointivtService bstIvtCutpointivtService; + + @GetMapping + @Log("查询分切区缓存点位库存") + //@SaCheckPermission("@el.check('bstIvtCutpointivt:list')") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(bstIvtCutpointivtService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增分切区缓存点位库存") + //@SaCheckPermission("@el.check('bstIvtCutpointivt:add')") + public ResponseEntity + create(@Validated @RequestBody BstIvtCutpointivt entity){ + bstIvtCutpointivtService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改分切区缓存点位库存") + //@SaCheckPermission("@el.check('bstIvtCutpointivt:edit')") + public ResponseEntity update(@Validated @RequestBody BstIvtCutpointivt entity){ + bstIvtCutpointivtService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除分切区缓存点位库存") + //@SaCheckPermission("@el.check('bstIvtCutpointivt:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + bstIvtCutpointivtService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/IBstIvtCutpointivtService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/IBstIvtCutpointivtService.java index e69de29bb..3efc57354 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/IBstIvtCutpointivtService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/IBstIvtCutpointivtService.java @@ -0,0 +1,77 @@ +package org.nl.b_lms.bst.ivt.cutpointivt.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @description 服务接口 + * @author lyd + * @date 2024-02-26 + **/ +public interface IBstIvtCutpointivtService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(BstIvtCutpointivt entity); + + /** + * 编辑 + * @param entity / + */ + void update(BstIvtCutpointivt entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); + + /** + * 获取类型状态,没任务的点位 + * @param type 点位类型:1套轴对接位,2分切缓存位,3分切对接位 + * @param pointStatus 点位状态:1空位2有气涨轴3有子卷 + * @param sort 0:不排序,1:正序, 2:倒序 + * @return / + */ + List getAreaNotTaskPointByStatus(String type, String pointStatus, String sort); + + /** + * 获取同尺寸的气涨轴 + * @param type 点位类型:1套轴对接位,2分切缓存位,3分切对接位 + * @param size 气涨轴尺寸 + * @return / + */ + List getPointByTypeAndShaftSize(String type, String size); + + /** + * 根据桁架对应的点位编码获取点位实体 + * @param point 桁架点位编码 + * @param flag 是否需要校验启用 + * @return 实体 + */ + BstIvtCutpointivt getPintByTrussCode(String point, boolean flag); + /** + * 根据AGV对应的点位编码获取点位实体 + * @param point AGV点位编码 + * @param flag 是否需要校验启用 + * @return 实体 + */ + BstIvtCutpointivt getPintByAgvCode(String point, boolean flag); + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/BstIvtCutpointivt.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/BstIvtCutpointivt.java index e69de29bb..d7eee30a1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/BstIvtCutpointivt.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/BstIvtCutpointivt.java @@ -0,0 +1,87 @@ +package org.nl.b_lms.bst.ivt.cutpointivt.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @description 添加'@Builder'注解最好不好添加'@NoArgsConstructor' + * @author lyd + * @date 2024-02-26 + **/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("bst_ivt_cutpointivt") +public class BstIvtCutpointivt implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "ivt_id", type = IdType.NONE) + /** 库存记录标识 */ + private String ivt_id; + + /** AGV点位编码 */ + private String point_code; + + /** AGV点位名称 */ + private String point_name; + + /** 桁架点位编码1 */ + private String truss_point_code1; + + /** 桁架点位编码2 */ + private String truss_point_code2; + + /** 气胀轴编码1 */ + private String qzz_no1; + + /** 气胀轴编码2 */ + private String qzz_no2; + + /** 点位类型 */ + private String point_type; + + /** 生产区域 */ + private String product_area; + + /** 位置 */ + private String point_location; + + /** 顺序号 */ + private BigDecimal sort_seq; + + /** 是否启用 */ + private String is_used; + + /** 备注 */ + private String remark; + + /** 创建人 */ + private String create_id; + + /** 创建人姓名 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改人 */ + private String update_optid; + + /** 修改人姓名 */ + private String update_optname; + + /** 修改时间 */ + private String update_time; + + /** 规划 */ + private String plan; + + private String point_status; + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.java index e69de29bb..a8d3c6b2e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.java @@ -0,0 +1,17 @@ +package org.nl.b_lms.bst.ivt.cutpointivt.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; + +import java.util.List; + +/** + * @author lyd + * @date 2024-02-26 + **/ +public interface BstIvtCutpointivtMapper extends BaseMapper { + + List getAreaNotTaskPointByStatus(String type, String pointStatus, String sort); + + List getPointByTypeAndShaftSize(String type, String size); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.xml index e69de29bb..72ad3dda7 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dao/mapper/BstIvtCutpointivtMapper.xml @@ -0,0 +1,36 @@ + + + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dto/BstIvtCutpointivtDto.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dto/BstIvtCutpointivtDto.java index e69de29bb..79e23fc0f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dto/BstIvtCutpointivtDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dto/BstIvtCutpointivtDto.java @@ -0,0 +1,80 @@ +package org.nl.b_lms.bst.ivt.cutpointivt.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import java.math.BigDecimal; +import lombok.Data; +import lombok.Builder; +import java.io.Serializable; + +/** + * @description / + * @author lyd + * @date 2024-02-26 + **/ +@Data +@Builder +public class BstIvtCutpointivtDto implements Serializable { + + /** 库存记录标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long ivt_id; + + /** AGV点位编码 */ + private String point_code; + + /** AGV点位名称 */ + private String point_name; + + /** 桁架点位编码1 */ + private String truss_point_code1; + + /** 桁架点位编码2 */ + private String truss_point_code2; + + /** 气胀轴编码1 */ + private String qzz_no1; + + /** 气胀轴编码2 */ + private String qzz_no2; + + /** 点位类型 */ + private String point_type; + + /** 生产区域 */ + private String product_area; + + /** 位置 */ + private String point_location; + + /** 顺序号 */ + private BigDecimal sort_seq; + + /** 是否启用 */ + private String is_used; + + /** 备注 */ + private String remark; + + /** 创建人 */ + private Long create_id; + + /** 创建人姓名 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改人 */ + private Long update_optid; + + /** 修改人姓名 */ + private String update_optname; + + /** 修改时间 */ + private String update_time; + + /** 规划 */ + private String plan; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dto/BstIvtCutpointivtQuery.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dto/BstIvtCutpointivtQuery.java index e69de29bb..85066cc88 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dto/BstIvtCutpointivtQuery.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/dto/BstIvtCutpointivtQuery.java @@ -0,0 +1,12 @@ +package org.nl.b_lms.bst.ivt.cutpointivt.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; + +/** + * @author lyd + * @date 2024-02-26 + **/ +public class BstIvtCutpointivtQuery extends BaseQuery { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/impl/BstIvtCutpointivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/impl/BstIvtCutpointivtServiceImpl.java index e69de29bb..3057309c4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/impl/BstIvtCutpointivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/impl/BstIvtCutpointivtServiceImpl.java @@ -0,0 +1,109 @@ +package org.nl.b_lms.bst.ivt.cutpointivt.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.mapper.BstIvtCutpointivtMapper; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.function.Consumer; + +/** + * @description 服务实现 + * @author lyd + * @date 2024-02-26 + **/ +@Slf4j +@Service +public class BstIvtCutpointivtServiceImpl extends ServiceImpl implements IBstIvtCutpointivtService { + + @Autowired + private BstIvtCutpointivtMapper bstIvtCutpointivtMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page){ + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + bstIvtCutpointivtMapper.selectPage(pages, lam); + return pages; + } + + @Override + public void create(BstIvtCutpointivt entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + entity.setIvt_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setCreate_id(currentUserId); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_optid(currentUserId); + entity.setUpdate_optname(nickName); + entity.setUpdate_time(now); + bstIvtCutpointivtMapper.insert(entity); + } + + @Override + public void update(BstIvtCutpointivt entity) { + BstIvtCutpointivt dto = bstIvtCutpointivtMapper.selectById(entity.getIvt_id()); + if (dto == null) { + throw new BadRequestException("被删除或无权限,操作失败!"); + } + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_optid(currentUserId); + entity.setUpdate_optname(nickName); + entity.setUpdate_time(now); + + bstIvtCutpointivtMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + bstIvtCutpointivtMapper.deleteBatchIds(ids); + } + + @Override + public List getAreaNotTaskPointByStatus(String type, String pointStatus, String sort) { + return bstIvtCutpointivtMapper.getAreaNotTaskPointByStatus(type, pointStatus, sort); + } + + @Override + public List getPointByTypeAndShaftSize(String type, String size) { + return bstIvtCutpointivtMapper.getPointByTypeAndShaftSize(type, size); + } + + @Override + public BstIvtCutpointivt getPintByTrussCode(String point, boolean flag) { + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(flag, BstIvtCutpointivt::getIs_used, "1") + .and(blam -> blam.eq(BstIvtCutpointivt::getTruss_point_code1, point).or() + .eq(BstIvtCutpointivt::getTruss_point_code2, point)); + return bstIvtCutpointivtMapper.selectOne(lam); + } + + @Override + public BstIvtCutpointivt getPintByAgvCode(String point, boolean flag) { + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(flag, BstIvtCutpointivt::getIs_used, "1").eq(BstIvtCutpointivt::getPoint_code, point); + return bstIvtCutpointivtMapper.selectOne(lam); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/controller/BstIvtShafttubeivtController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/controller/BstIvtShafttubeivtController.java index e69de29bb..c422c00a4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/controller/BstIvtShafttubeivtController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/controller/BstIvtShafttubeivtController.java @@ -0,0 +1,60 @@ +package org.nl.b_lms.bst.ivt.shafttubeivt.controller; + +import lombok.extern.slf4j.Slf4j; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.modules.logging.annotation.Log; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; +/** + * @author lyd + * @date 2024-02-26 + **/ +@Slf4j +@RestController +@RequestMapping("/api/bstIvtShafttubeivt") +public class BstIvtShafttubeivtController { + + @Autowired + private IBstIvtShafttubeivtService bstIvtShafttubeivtService; + + @GetMapping + @Log("查询穿拔轴区点位库存管理") + //@SaCheckPermission("@el.check('bstIvtShafttubeivt:list')") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(bstIvtShafttubeivtService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增穿拔轴区点位库存管理") + //@SaCheckPermission("@el.check('bstIvtShafttubeivt:add')") + public ResponseEntity + create(@Validated @RequestBody BstIvtShafttubeivt entity){ + bstIvtShafttubeivtService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改穿拔轴区点位库存管理") + //@SaCheckPermission("@el.check('bstIvtShafttubeivt:edit')") + public ResponseEntity update(@Validated @RequestBody BstIvtShafttubeivt entity){ + bstIvtShafttubeivtService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除穿拔轴区点位库存管理") + //@SaCheckPermission("@el.check('bstIvtShafttubeivt:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + bstIvtShafttubeivtService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/IBstIvtShafttubeivtService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/IBstIvtShafttubeivtService.java index e69de29bb..a6f7ab4b3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/IBstIvtShafttubeivtService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/IBstIvtShafttubeivtService.java @@ -0,0 +1,61 @@ +package org.nl.b_lms.bst.ivt.shafttubeivt.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @description 服务接口 + * @author lyd + * @date 2024-02-26 + **/ +public interface IBstIvtShafttubeivtService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(BstIvtShafttubeivt entity); + + /** + * 编辑 + * @param entity / + */ + void update(BstIvtShafttubeivt entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); + + /** + * 获取启用的 类型 区域 有无轴的点位 + * @param type + * @param location + * @param have + * @return + */ + List getAllShaftPointsByConditions(String type, String location, String have); + + /** + * 根据点位编码获取启用的点位 + * @param point 点位编码 唯一(重复会报错) + * @param flag 是否需要校验启用 + * @return + */ + BstIvtShafttubeivt getByPointCode(String point, boolean flag); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/BstIvtShafttubeivt.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/BstIvtShafttubeivt.java index e69de29bb..cbc76de73 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/BstIvtShafttubeivt.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/BstIvtShafttubeivt.java @@ -0,0 +1,95 @@ +package org.nl.b_lms.bst.ivt.shafttubeivt.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.io.Serializable; + +/** + * @description 添加'@Builder'注解最好不好添加'@NoArgsConstructor' + * @author lyd + * @date 2024-02-26 + **/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("bst_ivt_shafttubeivt") +public class BstIvtShafttubeivt implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "ivt_id", type = IdType.NONE) + /** 库存记录标识 */ + private String ivt_id; + + /** 点位编码 */ + private String point_code; + + /** 点位名称 */ + private String point_name; + + /** 气涨轴尺寸 */ + private String qzz_size; + + /** 气涨轴代数 */ + private String qzz_generation; + + /** 纸管1编码 */ + private String tube_code1; + + /** 纸管1描述 */ + private String tube_name1; + + /** 纸管2编码 */ + private String tube_code2; + + /** 纸管2描述 */ + private String tube_name2; + + /** 子卷号1 */ + private String container_name1; + + /** 子卷号2 */ + private String container_name2; + + /** 点位类型 */ + private String point_type; + + /** 位置 */ + private String point_location; + + /** 是否有轴 */ + private String have_qzz; + + /** 是否启用 */ + private String is_used; + + /** 顺序号 */ + private BigDecimal sort_seq; + + /** 创建人 */ + private String create_id; + + /** 创建人 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改人 */ + private String update_optid; + + /** 修改人 */ + private String update_optname; + + /** 修改时间 */ + private String update_time; + + /** 规划 */ + private String plan; + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.java index e69de29bb..2a725e6f5 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.java @@ -0,0 +1,14 @@ +package org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; + +import java.util.List; + +/** + * @author lyd + * @date 2024-02-26 + **/ +public interface BstIvtShafttubeivtMapper extends BaseMapper { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.xml index e69de29bb..8d6e60d25 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dao/mapper/BstIvtShafttubeivtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dto/BstIvtShafttubeivtDto.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dto/BstIvtShafttubeivtDto.java index e69de29bb..b36ee62c8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dto/BstIvtShafttubeivtDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dto/BstIvtShafttubeivtDto.java @@ -0,0 +1,89 @@ +package org.nl.b_lms.bst.ivt.shafttubeivt.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import java.math.BigDecimal; +import lombok.Data; +import lombok.Builder; +import java.io.Serializable; + +/** + * @description / + * @author lyd + * @date 2024-02-26 + **/ +@Data +@Builder +public class BstIvtShafttubeivtDto implements Serializable { + + /** 库存记录标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private String ivt_id; + + /** 点位编码 */ + private String point_code; + + /** 点位名称 */ + private String point_name; + + /** 气涨轴尺寸 */ + private String qzz_size; + + /** 气涨轴代数 */ + private String qzz_generation; + + /** 纸管1编码 */ + private String tube_code1; + + /** 纸管1描述 */ + private String tube_name1; + + /** 纸管2编码 */ + private String tube_code2; + + /** 纸管2描述 */ + private String tube_name2; + + /** 子卷号1 */ + private String container_name1; + + /** 子卷号2 */ + private String container_name2; + + /** 点位类型 */ + private String point_type; + + /** 位置 */ + private String point_location; + + /** 是否有轴 */ + private String have_qzz; + + /** 是否启用 */ + private String is_used; + + /** 顺序号 */ + private BigDecimal sort_seq; + + /** 创建人 */ + private String create_id; + + /** 创建人 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改人 */ + private String update_optid; + + /** 修改人 */ + private String update_optname; + + /** 修改时间 */ + private String update_time; + + /** 规划 */ + private String plan; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dto/BstIvtShafttubeivtQuery.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dto/BstIvtShafttubeivtQuery.java index e69de29bb..e937480db 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dto/BstIvtShafttubeivtQuery.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/dto/BstIvtShafttubeivtQuery.java @@ -0,0 +1,12 @@ +package org.nl.b_lms.bst.ivt.shafttubeivt.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; + +/** + * @author lyd + * @date 2024-02-26 + **/ +public class BstIvtShafttubeivtQuery extends BaseQuery { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/impl/BstIvtShafttubeivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/impl/BstIvtShafttubeivtServiceImpl.java index e69de29bb..82a323cd4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/impl/BstIvtShafttubeivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/shafttubeivt/service/impl/BstIvtShafttubeivtServiceImpl.java @@ -0,0 +1,104 @@ +package org.nl.b_lms.bst.ivt.shafttubeivt.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.SecurityUtils; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.mapper.BstIvtShafttubeivtMapper; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @description 服务实现 + * @author lyd + * @date 2024-02-26 + **/ +@Slf4j +@Service +public class BstIvtShafttubeivtServiceImpl extends ServiceImpl implements IBstIvtShafttubeivtService { + + @Autowired + private BstIvtShafttubeivtMapper bstIvtShafttubeivtMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page){ + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + bstIvtShafttubeivtMapper.selectPage(pages, lam); + return pages; + } + + @Override + public void create(BstIvtShafttubeivt entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + entity.setIvt_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setCreate_id(currentUserId); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_optid(currentUserId); + entity.setUpdate_optname(nickName); + entity.setUpdate_time(now); + bstIvtShafttubeivtMapper.insert(entity); + } + + @Override + public void update(BstIvtShafttubeivt entity) { + BstIvtShafttubeivt dto = bstIvtShafttubeivtMapper.selectById(entity.getIvt_id()); + if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_optid(currentUserId); + entity.setUpdate_optname(nickName); + entity.setUpdate_time(now); + + bstIvtShafttubeivtMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + bstIvtShafttubeivtMapper.deleteBatchIds(ids); + } + + @Override + public List getAllShaftPointsByConditions(String type, String location, String have) { + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(BstIvtShafttubeivt::getIs_used, "1") + .eq(BstIvtShafttubeivt::getPoint_type, type) + .eq(BstIvtShafttubeivt::getPoint_location, location) + .eq(BstIvtShafttubeivt::getHave_qzz, have); + return bstIvtShafttubeivtMapper.selectList(lam); + } + + @Override + public BstIvtShafttubeivt getByPointCode(String point, boolean flag) { + if (ObjectUtil.isEmpty(point)) { + return null; + } + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(BstIvtShafttubeivt::getPoint_code, point) + .eq(flag, BstIvtShafttubeivt::getIs_used, "1"); + return bstIvtShafttubeivtMapper.selectOne(lam); + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/controller/BstIvtStockingivtController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/controller/BstIvtStockingivtController.java index e69de29bb..306d0bd12 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/controller/BstIvtStockingivtController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/controller/BstIvtStockingivtController.java @@ -0,0 +1,60 @@ +package org.nl.b_lms.bst.ivt.stockingivt.controller; + +import lombok.extern.slf4j.Slf4j; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.modules.logging.annotation.Log; +import org.nl.b_lms.bst.ivt.stockingivt.service.IBstIvtStockingivtService; +import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; +/** + * @author lyd + * @date 2024-02-26 + **/ +@Slf4j +@RestController +@RequestMapping("/api/bstIvtStockingivt") +public class BstIvtStockingivtController { + + @Autowired + private IBstIvtStockingivtService bstIvtStockingivtService; + + @GetMapping + @Log("查询备货区点位库存表") + //@SaCheckPermission("@el.check('bstIvtStockingivt:list')") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(bstIvtStockingivtService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增备货区点位库存表") + //@SaCheckPermission("@el.check('bstIvtStockingivt:add')") + public ResponseEntity + create(@Validated @RequestBody BstIvtStockingivt entity){ + bstIvtStockingivtService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改备货区点位库存表") + //@SaCheckPermission("@el.check('bstIvtStockingivt:edit')") + public ResponseEntity update(@Validated @RequestBody BstIvtStockingivt entity){ + bstIvtStockingivtService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除备货区点位库存表") + //@SaCheckPermission("@el.check('bstIvtStockingivt:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + bstIvtStockingivtService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/IBstIvtStockingivtService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/IBstIvtStockingivtService.java index e69de29bb..b9952fa5b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/IBstIvtStockingivtService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/IBstIvtStockingivtService.java @@ -0,0 +1,43 @@ +package org.nl.b_lms.bst.ivt.stockingivt.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt; + +import java.util.Map; +import java.util.Set; + +/** + * @description 服务接口 + * @author lyd + * @date 2024-02-26 + **/ +public interface IBstIvtStockingivtService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(BstIvtStockingivt entity); + + /** + * 编辑 + * @param entity / + */ + void update(BstIvtStockingivt entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/BstIvtStockingivt.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/BstIvtStockingivt.java index e69de29bb..83e9fcb4b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/BstIvtStockingivt.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/BstIvtStockingivt.java @@ -0,0 +1,80 @@ +package org.nl.b_lms.bst.ivt.stockingivt.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.io.Serializable; + +/** + * @description 添加'@Builder'注解最好不好添加'@NoArgsConstructor' + * @author lyd + * @date 2024-02-26 + **/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("bst_ivt_stockingivt") +public class BstIvtStockingivt implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "ivt_id", type = IdType.NONE) + /** 库存记录标识 */ + private String ivt_id; + + /** 点位编码 */ + private String point_code; + + /** 点位名称 */ + private String point_name; + + /** 托盘号 */ + private String vehicle_code; + + /** 区域 */ + private String product_area; + + /** 点位类型 */ + private String point_type; + + /** 点位状态 */ + private String ivt_status; + + /** 位置 */ + private String point_location; + + /** 顺序号 */ + private BigDecimal sort_seq; + + /** 是否启用 */ + private String is_used; + + /** 备注 */ + private String remark; + + /** 创建人 */ + private String create_id; + + /** 创建人 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改人 */ + private String update_optid; + + /** 修改人 */ + private String update_optname; + + /** 修改时间 */ + private String update_time; + + /** 规划 */ + private String plan; + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.java index e69de29bb..7ab17402c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.java @@ -0,0 +1,12 @@ +package org.nl.b_lms.bst.ivt.stockingivt.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt; + +/** + * @author lyd + * @date 2024-02-26 + **/ +public interface BstIvtStockingivtMapper extends BaseMapper { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml index e69de29bb..010bdf5c4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dao/mapper/BstIvtStockingivtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dto/BstIvtStockingivtDto.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dto/BstIvtStockingivtDto.java index e69de29bb..ad8820265 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dto/BstIvtStockingivtDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dto/BstIvtStockingivtDto.java @@ -0,0 +1,74 @@ +package org.nl.b_lms.bst.ivt.stockingivt.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import java.math.BigDecimal; +import lombok.Data; +import lombok.Builder; +import java.io.Serializable; + +/** + * @description / + * @author lyd + * @date 2024-02-26 + **/ +@Data +@Builder +public class BstIvtStockingivtDto implements Serializable { + + /** 库存记录标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long ivt_id; + + /** 点位编码 */ + private String point_code; + + /** 点位名称 */ + private String point_name; + + /** 托盘号 */ + private String vehicle_code; + + /** 区域 */ + private String product_area; + + /** 点位类型 */ + private String point_type; + + /** 点位状态 */ + private String ivt_status; + + /** 位置 */ + private String point_location; + + /** 顺序号 */ + private BigDecimal sort_seq; + + /** 是否启用 */ + private String is_used; + + /** 备注 */ + private String remark; + + /** 创建人 */ + private Long create_id; + + /** 创建人 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改人 */ + private Long update_optid; + + /** 修改人 */ + private String update_optname; + + /** 修改时间 */ + private String update_time; + + /** 规划 */ + private String plan; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dto/BstIvtStockingivtQuery.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dto/BstIvtStockingivtQuery.java index e69de29bb..ba7fe1287 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dto/BstIvtStockingivtQuery.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/dto/BstIvtStockingivtQuery.java @@ -0,0 +1,12 @@ +package org.nl.b_lms.bst.ivt.stockingivt.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt; + +/** + * @author lyd + * @date 2024-02-26 + **/ +public class BstIvtStockingivtQuery extends BaseQuery { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/impl/BstIvtStockingivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/impl/BstIvtStockingivtServiceImpl.java index e69de29bb..7dc7ba8cd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/impl/BstIvtStockingivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/stockingivt/service/impl/BstIvtStockingivtServiceImpl.java @@ -0,0 +1,80 @@ +package org.nl.b_lms.bst.ivt.stockingivt.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.SecurityUtils; +import org.nl.b_lms.bst.ivt.stockingivt.service.IBstIvtStockingivtService; +import org.nl.b_lms.bst.ivt.stockingivt.service.dao.mapper.BstIvtStockingivtMapper; +import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Map; +import java.util.Set; + +/** + * @description 服务实现 + * @author lyd + * @date 2024-02-26 + **/ +@Slf4j +@Service +public class BstIvtStockingivtServiceImpl extends ServiceImpl implements IBstIvtStockingivtService { + + @Autowired + private BstIvtStockingivtMapper bstIvtStockingivtMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page){ + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + bstIvtStockingivtMapper.selectPage(pages, lam); + return pages; + } + + @Override + public void create(BstIvtStockingivt entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + entity.setIvt_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setCreate_id(currentUserId); + entity.setCreate_name(nickName); + entity.setCreate_time(now); + entity.setUpdate_optid(currentUserId); + entity.setUpdate_optname(nickName); + entity.setUpdate_time(now); + bstIvtStockingivtMapper.insert(entity); + } + + @Override + public void update(BstIvtStockingivt entity) { + BstIvtStockingivt dto = bstIvtStockingivtMapper.selectById(entity.getIvt_id()); + if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_optid(currentUserId); + entity.setUpdate_optname(nickName); + entity.setUpdate_time(now); + + bstIvtStockingivtMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + bstIvtStockingivtMapper.deleteBatchIds(ids); + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java index e69de29bb..8686f9589 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/IPdmBiSlittingproductionplanService.java @@ -0,0 +1,51 @@ +package org.nl.b_lms.pdm.bi.slittingproductionplan.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.nl.b_lms.sch.tasks.slitter.mapper.dto.SlitterPlanDistinctDto; +import org.nl.common.domain.query.PageQuery; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @description 服务接口 + * @author lyd + * @date 2024-02-26 + **/ +public interface IPdmBiSlittingproductionplanService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(PdmBiSlittingproductionplan entity); + + /** + * 编辑 + * @param entity / + */ + void update(PdmBiSlittingproductionplan entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); + + /** + * 获取可用的分切计划 + * @return / + */ + List getAllCutPlan(); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/PdmBiSlittingproductionplan.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/PdmBiSlittingproductionplan.java index e69de29bb..f22007cee 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/PdmBiSlittingproductionplan.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/PdmBiSlittingproductionplan.java @@ -0,0 +1,156 @@ +package org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @description 添加'@Builder'注解最好不好添加'@NoArgsConstructor' + * @author lyd + * @date 2024-02-26 + **/ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("pdm_bi_slittingproductionplan") +public class PdmBiSlittingproductionplan implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "workorder_id", type = IdType.NONE) + /** 分切计划标识 */ + private String workorder_id; + + /** 分切订单类型 */ + private String order_type; + + /** 子卷号 */ + private String container_name; + + /** 产品编码 */ + private String product_name; + + /** 产品描述 */ + private String description; + + /** 来源母卷号 */ + private String parent_container_name; + + /** 改制来源子卷号 */ + private String restruct_container_name; + + /** 子卷立库木箱号 */ + private String package_box_sn; + + /** 来源卷位置 */ + private String ware_house; + + /** 分切机台编码 */ + private String resource_name; + + /** 分切组 */ + private String split_group; + + /** 生产顺序 */ + private String manufacture_sort; + + /** 生产订单 */ + private String mfg_order_name; + + /** 生产日期 */ + private String manufacture_date; + + /** 管件类型 */ + private String paper_tube_or_FRP; + + /** 纸筒物料编码 */ + private String paper_tube_material; + + /** 纸筒物料描述 */ + private String paper_tube_description; + + /** 纸筒规格 */ + private String paper_tube_model; + + /** FRP管物料编码 */ + private String FRP_material; + + /** FRP管物料描述 */ + private String FRP_description; + + /** FRP管规格 */ + private String FRP_model; + + /** 子卷幅宽 */ + private BigDecimal split_breadth; + + /** 子卷理论长度 */ + private BigDecimal split_height; + + /** 子卷理论重量 */ + private BigDecimal split_weight; + + /** 开始时间 */ + private String start_time; + + /** 结束时间 */ + private String end_time; + + /** 状态 */ + private String status; + + /** 修改人 */ + private String update_optid; + + /** 修改人姓名 */ + private String update_optname; + + /** 修改时间 */ + private String update_time; + + /** 部门ID */ + private String sysdeptid; + + /** 公司ID */ + private String syscompanyid; + + /** 是否删除 */ + private String is_delete; + + /** 上料完成 */ + private String is_parent_ok; + + /** 子卷套轴完成 */ + private String is_child_tz_ok; + + /** 子卷配送完成 */ + private String is_child_ps_ok; + + /** 气涨轴编码 */ + private String qzzno; + + /** 销售订单及行号 */ + private String sale_order_name; + + /** 是否呼叫 */ + private String is_call; + + /** 呼叫时间 */ + private String call_time; + + /** 是否呼叫纸管 */ + private String is_paper_ok; + + /** 上下轴(1,2) */ + private String up_or_down; + + /** 左右(1,2) */ + private String left_or_right; + /** 气涨轴规格 */ + private String qzz_size; + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.java index e69de29bb..3d00a379c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.java @@ -0,0 +1,16 @@ +package org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; +import org.nl.b_lms.sch.tasks.slitter.mapper.dto.SlitterPlanDistinctDto; + +import java.util.List; + +/** + * @author lyd + * @date 2024-02-26 + **/ +public interface PdmBiSlittingproductionplanMapper extends BaseMapper { + + List getAllCutPlan(); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml index e69de29bb..a588bf5fc 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dao/mapper/PdmBiSlittingproductionplanMapper.xml @@ -0,0 +1,27 @@ + + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dto/PdmBiSlittingproductionplanDto.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dto/PdmBiSlittingproductionplanDto.java index e69de29bb..0e95c3f15 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dto/PdmBiSlittingproductionplanDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dto/PdmBiSlittingproductionplanDto.java @@ -0,0 +1,149 @@ +package org.nl.b_lms.pdm.bi.slittingproductionplan.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import java.math.BigDecimal; +import lombok.Data; +import lombok.Builder; +import java.io.Serializable; + +/** + * @description / + * @author lyd + * @date 2024-02-26 + **/ +@Data +@Builder +public class PdmBiSlittingproductionplanDto implements Serializable { + + /** 分切计划标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long workorder_id; + + /** 分切订单类型 */ + private String order_type; + + /** 子卷号 */ + private String container_name; + + /** 产品编码 */ + private String product_name; + + /** 产品描述 */ + private String description; + + /** 来源母卷号 */ + private String parent_container_name; + + /** 改制来源子卷号 */ + private String restruct_container_name; + + /** 子卷立库木箱号 */ + private String package_box_sn; + + /** 来源卷位置 */ + private String ware_house; + + /** 分切机台编码 */ + private String resource_name; + + /** 分切组 */ + private String split_group; + + /** 生产顺序 */ + private String manufacture_sort; + + /** 生产订单 */ + private String mfg_order_name; + + /** 生产日期 */ + private String manufacture_date; + + /** 管件类型 */ + private String paper_tube_or_FRP; + + /** 纸筒物料编码 */ + private String paper_tube_material; + + /** 纸筒物料描述 */ + private String paper_tube_description; + + /** 纸筒规格 */ + private String paper_tube_model; + + /** FRP管物料编码 */ + private String FRP_material; + + /** FRP管物料描述 */ + private String FRP_description; + + /** FRP管规格 */ + private String FRP_model; + + /** 子卷幅宽 */ + private BigDecimal split_breadth; + + /** 子卷理论长度 */ + private BigDecimal split_height; + + /** 子卷理论重量 */ + private BigDecimal split_weight; + + /** 开始时间 */ + private String start_time; + + /** 结束时间 */ + private String end_time; + + /** 状态 */ + private String status; + + /** 修改人 */ + private Long update_optid; + + /** 修改人姓名 */ + private String update_optname; + + /** 修改时间 */ + private String update_time; + + /** 部门ID */ + private Long sysdeptid; + + /** 公司ID */ + private Long syscompanyid; + + /** 是否删除 */ + private String is_delete; + + /** 上料完成 */ + private String is_parent_ok; + + /** 子卷套轴完成 */ + private String is_child_tz_ok; + + /** 子卷配送完成 */ + private String is_child_ps_ok; + + /** 气涨轴编码 */ + private String qzzno; + + /** 销售订单及行号 */ + private String sale_order_name; + + /** 是否呼叫 */ + private String is_call; + + /** 呼叫时间 */ + private String call_time; + + /** 是否呼叫纸管 */ + private String is_paper_ok; + + /** 上下轴(1,2) */ + private String up_or_down; + + /** 左右(1,2) */ + private String left_or_right; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dto/PdmBiSlittingproductionplanQuery.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dto/PdmBiSlittingproductionplanQuery.java index e69de29bb..54efa8529 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dto/PdmBiSlittingproductionplanQuery.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/dto/PdmBiSlittingproductionplanQuery.java @@ -0,0 +1,12 @@ +package org.nl.b_lms.pdm.bi.slittingproductionplan.service.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; + +/** + * @author lyd + * @date 2024-02-26 + **/ +public class PdmBiSlittingproductionplanQuery extends BaseQuery { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java index e69de29bb..9596e7bc6 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/bi/slittingproductionplan/service/impl/PdmBiSlittingproductionplanServiceImpl.java @@ -0,0 +1,83 @@ +package org.nl.b_lms.pdm.bi.slittingproductionplan.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.mapper.PdmBiSlittingproductionplanMapper; +import org.nl.b_lms.sch.tasks.slitter.mapper.dto.SlitterPlanDistinctDto; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @description 服务实现 + * @author lyd + * @date 2024-02-26 + **/ +@Slf4j +@Service +public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl implements IPdmBiSlittingproductionplanService { + + @Autowired + private PdmBiSlittingproductionplanMapper pdmBiSlittingproductionplanMapper; + + @Override + public IPage queryAll(Map whereJson, PageQuery page){ + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + pdmBiSlittingproductionplanMapper.selectPage(pages, lam); + return pages; + } + + @Override + public void create(PdmBiSlittingproductionplan entity) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + entity.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setUpdate_optid(currentUserId); + entity.setUpdate_optname(nickName); + entity.setUpdate_time(now); + pdmBiSlittingproductionplanMapper.insert(entity); + } + + @Override + public void update(PdmBiSlittingproductionplan entity) { + PdmBiSlittingproductionplan dto = pdmBiSlittingproductionplanMapper.selectById(entity.getWorkorder_id()); + if (dto == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + entity.setUpdate_optid(currentUserId); + entity.setUpdate_optname(nickName); + entity.setUpdate_time(now); + + pdmBiSlittingproductionplanMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + pdmBiSlittingproductionplanMapper.deleteBatchIds(ids); + } + + @Override + public List getAllCutPlan() { + return pdmBiSlittingproductionplanMapper.getAllCutPlan(); + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/productionplan/dao/PdmBiSlittingproductionplan.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/productionplan/dao/PdmBiSlittingproductionplan.java index d6c9cadb5..26f421d8d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/productionplan/dao/PdmBiSlittingproductionplan.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/productionplan/dao/PdmBiSlittingproductionplan.java @@ -289,6 +289,12 @@ public class PdmBiSlittingproductionplan extends Model { */ void deleteAll(Set ids); - + /** + * 根据点位编码获取分切机下料位 + * @param code 点位编码 + * @param flag 是否判断启用 + * @return / + */ + StIvtCutpointivt getPintByPointCode(String code, boolean flag); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/StIvtCutpointivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/StIvtCutpointivtServiceImpl.java index f6f33b6c3..678c94def 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/StIvtCutpointivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/StIvtCutpointivtServiceImpl.java @@ -1,5 +1,6 @@ package org.nl.b_lms.sch.point.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.nl.b_lms.sch.point.dao.StIvtCutpointivt; import org.nl.b_lms.sch.point.dao.mapper.StIvtCutpointivtMapper; @@ -23,7 +24,7 @@ import java.util.Set; * * @since 2024-01-24 */ -@Service("stIvtCutpointivtService") +@Service public class StIvtCutpointivtServiceImpl extends ServiceImpl implements IstIvtCutpointivtService { @@ -81,6 +82,14 @@ public class StIvtCutpointivtServiceImpl extends ServiceImpl lam = new LambdaQueryWrapper<>(); + lam.eq(StIvtCutpointivt::getPoint_code, code) + .eq(flag, StIvtCutpointivt::getIs_used, "1"); + return stIvtCutpointivtMapper.selectOne(lam); + } + /** * 获取实体基础信息 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/SchBaseTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/SchBaseTask.java index 08cf1bbb2..6b1199278 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/SchBaseTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/dao/SchBaseTask.java @@ -16,9 +16,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; * @since 2024-01-23 16:07:13 */ @Data -@Builder @ToString -@AllArgsConstructor @EqualsAndHashCode(callSuper = false) @SuppressWarnings("serial") @TableName("sch_base_task") @@ -31,7 +29,7 @@ public class SchBaseTask extends Model { * 任务标识 */ @TableId(value = "task_id", type = IdType.NONE) - private Long task_id; + private String task_id; /** @@ -91,13 +89,13 @@ public class SchBaseTask extends Model { /** * 搬运物料信息 */ - private Long material_info_id; + private String material_info_id; /** * 物料信息 */ - private Long material_id; + private String material_id; /** @@ -151,7 +149,7 @@ public class SchBaseTask extends Model { /** * 任务组标识 */ - private Long task_group_id; + private String task_group_id; /** @@ -193,7 +191,7 @@ public class SchBaseTask extends Model { /** * 业务表表名主键值 */ - private Long table_fk_id; + private String table_fk_id; /** @@ -230,7 +228,7 @@ public class SchBaseTask extends Model { /** * 创建人 */ - private Long create_id; + private String create_id; /** @@ -249,7 +247,7 @@ public class SchBaseTask extends Model { /** * 修改人 */ - private Long update_optid; + private String update_optid; /** diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/IschBaseTaskService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/IschBaseTaskService.java index 1359f4ea6..902cf1635 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/IschBaseTaskService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/IschBaseTaskService.java @@ -3,6 +3,7 @@ package org.nl.b_lms.sch.task.service; import org.nl.b_lms.sch.task.dao.SchBaseTask; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; import java.util.Map; import java.util.Set; @@ -51,7 +52,12 @@ public interface IschBaseTaskService extends IService { */ void deleteAll(Set ids); - + /** + * 获取下发的任务 + * @param thisClass 类 + * @return / + */ + List getIssueTasks(String thisClass); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java index 75d85524d..a1813e4d0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/task/service/impl/SchBaseTaskServiceImpl.java @@ -1,18 +1,21 @@ package org.nl.b_lms.sch.task.service.impl; +import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.b_lms.sch.task.dao.SchBaseTask; import org.nl.b_lms.sch.task.dao.mapper.SchBaseTaskMapper; import org.nl.b_lms.sch.task.service.IschBaseTaskService; -import cn.hutool.core.date.DateUtil; -import org.nl.common.utils.SecurityUtils; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.core.metadata.IPage; import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.sch.manage.TaskStatusEnum; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.List; import java.util.Map; import java.util.Set; @@ -23,7 +26,7 @@ import java.util.Set; * * @since 2024-01-23 16:07:13 */ -@Service("schBaseTaskService") +@Service("taskService") public class SchBaseTaskServiceImpl extends ServiceImpl implements IschBaseTaskService { @@ -89,6 +92,16 @@ public class SchBaseTaskServiceImpl extends ServiceImpl getIssueTasks(String thisClass) { + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(SchBaseTask::getHandle_class, thisClass) + .eq(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode()) + .eq(SchBaseTask::getIs_delete, "0") + .orderByAsc(SchBaseTask::getTask_code); + return schBaseTaskMapper.selectList(lam); + } + /** * 获取实体基础信息 @@ -97,14 +110,14 @@ public class SchBaseTaskServiceImpl extends ServiceImpl addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + List taskList = taskService.getIssueTasks(THIS_CLASS); + + ArrayList resultList = new ArrayList<>(); + String agv_system_type = "2"; + for (SchBaseTask task : taskList) { + AcsTaskDto dto = AcsTaskDto.builder() + .ext_task_id(task.getTask_id()) + .task_code(task.getTask_code()) + .task_type(task.getAcs_task_type()) + .start_device_code(task.getPoint_code1()) + .next_device_code(task.getPoint_code2()) + .start_device_code2(task.getPoint_code3()) + .next_device_code2(task.getPoint_code4()) + .vehicle_code(task.getVehicle_code()) + .agv_system_type(agv_system_type) + .priority(task.getPriority()) + .remark(task.getRemark()) + .product_area(task.getProduct_area()) + .build(); + resultList.add(dto); + } + return resultList; + } + + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + SchBaseTask task = taskService.getById(taskObj.getString("task_id")); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + task.setTask_status(TaskStatusEnum.EXECUTING.getCode()); + } + + if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + // 互换资源 + String startPoint = task.getPoint_code1(); + BstIvtCutpointivt startPointObj = bcutpointivtService.getPintByAgvCode(startPoint, false); + String endPoint = task.getPoint_code2(); + BstIvtCutpointivt endPointObj = bcutpointivtService.getPintByAgvCode(endPoint, false); + TaskUtils.pointExchangeResources(startPointObj, endPointObj, "3"); + bcutpointivtService.updateById(startPointObj); + bcutpointivtService.updateById(endPointObj); + // 分切计划状态修改02->03 + List collect = Stream.of(task.getVehicle_code(), task.getVehicle_code2()) + .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList()); + PdmBiSlittingproductionplan p = new PdmBiSlittingproductionplan(); + p.setStatus("03"); + p.setUpdate_optid("3"); + p.setUpdate_optname("ACS"); + p.setUpdate_time(DateUtil.now()); + slittingproductionplanService.update(p, new LambdaQueryWrapper() + .in(PdmBiSlittingproductionplan::getQzzno, collect)); + } + + // 取消 + if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + // todo: 分切计划是否需要回退 + } + task.setUpdate_time(DateUtil.now()); + taskService.updateById(task); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String createTask(JSONObject form) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + task.setPoint_code1(form.getString("point_code1")); + task.setPoint_code2(form.getString("point_code2")); + task.setVehicle_code(form.getString("vehicle_code1")); + task.setAcs_task_type("6"); + task.setIs_delete("0"); + task.setRequest_param(form.toJSONString()); + task.setTask_type(form.getString("task_type")); + task.setProduct_area(form.getString("product_area")); + task.setCreate_id(currentUserId); + task.setCreate_name(currentUsername); + task.setCreate_time(DateUtil.now()); + task.setHandle_class(THIS_CLASS); + //根据类型获取对应的任务优先级 + JSONObject priority_jo = WQL.getWO("PDA_COOLIN").addParam("flag", "3").addParam("task_type", task.getTask_type()).process().uniqueResult(0); + if (ObjectUtil.isEmpty(priority_jo)) { + task.setPriority("1"); + } else { + task.setPriority(priority_jo.getString("value")); + } + taskService.save(task); + // 分切计划(最多四个)修改状态 01->02 + List collect = Stream.of(task.getVehicle_code(), task.getVehicle_code2()) + .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList()); + PdmBiSlittingproductionplan p = new PdmBiSlittingproductionplan(); + p.setStatus("02"); + p.setUpdate_optid("3"); + p.setUpdate_optname("ACS"); + p.setUpdate_time(DateUtil.now()); + slittingproductionplanService.update(p, new LambdaQueryWrapper() + .in(PdmBiSlittingproductionplan::getQzzno, collect)); + this.immediateNotifyAcs(null); + return task.getTask_id(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + + @Override + public void cancel(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, "0"); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendCopperFoilSubRollTrussTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendCopperFoilSubRollTrussTask.java index e69de29bb..350f067c2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendCopperFoilSubRollTrussTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendCopperFoilSubRollTrussTask.java @@ -0,0 +1,45 @@ +package org.nl.b_lms.sch.tasks.slitter; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author: lyd + * @Description: 送铜箔子卷任务 ???? + * @Date: 2024/2/1 + */ +@Deprecated +@Slf4j +@Service +public class SendCopperFoilSubRollTrussTask extends AbstractAcsTask { + + @Override + public List addTask() { + return null; + } + + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + + } + + @Override + public String createTask(JSONObject form) { + return null; + } + + @Override + public void forceFinish(String task_id) { + + } + + @Override + public void cancel(String task_id) { + + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendShaftCacheAgvTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendShaftCacheAgvTask.java index e69de29bb..3de44faeb 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendShaftCacheAgvTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendShaftCacheAgvTask.java @@ -0,0 +1,45 @@ +package org.nl.b_lms.sch.tasks.slitter; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author: lyd + * @Description: 分切缓存位送子卷业务(废弃) + * @Date: 2024/2/1 + */ +@Deprecated +@Slf4j +@Service +public class SendShaftCacheAgvTask extends AbstractAcsTask { + + @Override + public List addTask() { + return null; + } + + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + + } + + @Override + public String createTask(JSONObject form) { + return null; + } + + @Override + public void forceFinish(String task_id) { + + } + + @Override + public void cancel(String task_id) { + + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterDownAgvTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterDownAgvTask.java index e69de29bb..2d7113f4b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterDownAgvTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterDownAgvTask.java @@ -0,0 +1,144 @@ +package org.nl.b_lms.sch.tasks.slitter; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.common.utils.SecurityUtils; +import org.nl.common.utils.TaskUtils; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: lyd + * @Description: 分切下料的AGV任务 + * @Date: 2024/2/1 + */ +@Slf4j +@Service +public class SlitterDownAgvTask extends AbstractAcsTask { + private final String THIS_CLASS = SlitterDownAgvTask.class.getName(); + @Autowired + private IschBaseTaskService taskService; + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + List taskList = taskService.getIssueTasks(THIS_CLASS); + + ArrayList resultList = new ArrayList<>(); + String agv_system_type = "2"; + for (SchBaseTask task : taskList) { + AcsTaskDto dto = AcsTaskDto.builder() + .ext_task_id(task.getTask_id()) + .task_code(task.getTask_code()) + .task_type(task.getAcs_task_type()) + .start_device_code(task.getPoint_code1()) + .next_device_code(task.getPoint_code2()) + .start_device_code2(task.getPoint_code3()) + .next_device_code2(task.getPoint_code4()) + .vehicle_code(task.getVehicle_code()) + .agv_system_type(agv_system_type) + .priority(task.getPriority()) + .remark(task.getRemark()) + .product_area(task.getProduct_area()) + .build(); + resultList.add(dto); + } + return resultList; + } + + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + SchBaseTask task = taskService.getById(taskObj.getString("task_id")); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + task.setTask_status(TaskStatusEnum.EXECUTING.getCode()); + } + if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + // 互换资源 + String startPoint = task.getPoint_code1(); + BstIvtCutpointivt startPointObj = bcutpointivtService.getPintByAgvCode(startPoint, false); + String endPoint = task.getPoint_code2(); + BstIvtCutpointivt endPointObj = bcutpointivtService.getPintByAgvCode(endPoint, false); + TaskUtils.pointExchangeResources(startPointObj, endPointObj, "3"); + bcutpointivtService.updateById(startPointObj); + bcutpointivtService.updateById(endPointObj); + } + // 取消 + if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + // todo: 分切计划是否需要回退 + } + task.setUpdate_time(DateUtil.now()); + taskService.updateById(task); + } + + @Override + public String createTask(JSONObject form) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + task.setPoint_code1(form.getString("point_code1")); + task.setPoint_code2(form.getString("point_code2")); + task.setVehicle_code(form.getString("vehicle_code1")); + task.setVehicle_code2(form.getString("vehicle_code2")); + task.setAcs_task_type("6"); + task.setIs_delete("0"); + task.setRequest_param(form.toJSONString()); + task.setTask_type(form.getString("task_type")); + task.setProduct_area(form.getString("product_area")); + task.setCreate_id(currentUserId); + task.setCreate_name(currentUsername); + task.setCreate_time(DateUtil.now()); + task.setHandle_class(THIS_CLASS); + //根据类型获取对应的任务优先级 + JSONObject priority_jo = WQL.getWO("PDA_COOLIN").addParam("flag", "3").addParam("task_type", task.getTask_type()).process().uniqueResult(0); + if (ObjectUtil.isEmpty(priority_jo)) { + task.setPriority("1"); + } else { + task.setPriority(priority_jo.getString("value")); + } + taskService.save(task); + this.immediateNotifyAcs(null); + return task.getTask_id(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + + @Override + public void cancel(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, "0"); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterDownTrussTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterDownTrussTask.java index e69de29bb..381742890 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterDownTrussTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterDownTrussTask.java @@ -0,0 +1,44 @@ +package org.nl.b_lms.sch.tasks.slitter; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author: lyd + * @Description: 分切下料桁架任务(2/4点任务) + * @Date: 2024/2/1 + */ +@Slf4j +@Service +public class SlitterDownTrussTask extends AbstractAcsTask { + + @Override + public List addTask() { + return null; + } + + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + + } + + @Override + public String createTask(JSONObject form) { + return null; + } + + @Override + public void forceFinish(String task_id) { + + } + + @Override + public void cancel(String task_id) { + + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterUpTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterUpTask.java deleted file mode 100644 index e69de29bb..000000000 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussCallAirShaftTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussCallAirShaftTask.java index e69de29bb..082b8cf4e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussCallAirShaftTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussCallAirShaftTask.java @@ -0,0 +1,205 @@ +package org.nl.b_lms.sch.tasks.slitter; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.b_lms.sch.tasks.slitter.mapper.dto.SlitterPlanDistinctDto; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: lyd + * @Description: 套轴机呼叫子卷拔轴任务类 桁架任务 + * @Date: 2024/2/1 + */ +@Slf4j +@Service +public class TrussCallAirShaftTask extends AbstractAcsTask { + private final String THIS_CLASS = TrussCallAirShaftTask.class.getName(); + @Autowired + private IschBaseTaskService taskService; + @Autowired + private IPdmBiSlittingproductionplanService slittingproductionplanService; + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; + @Autowired + private IBstIvtShafttubeivtService shafttubeivtService; + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + List taskList = taskService.getIssueTasks(THIS_CLASS); + + ArrayList resultList = new ArrayList<>(); + String agv_system_type = "2"; + for (SchBaseTask task : taskList) { + AcsTaskDto dto = AcsTaskDto.builder() + .ext_task_id(task.getTask_id()) + .task_code(task.getTask_code()) + .task_type(task.getAcs_task_type()) + .start_device_code(task.getPoint_code1()) + .next_device_code(task.getPoint_code2()) + .start_device_code2(task.getPoint_code3()) + .next_device_code2(task.getPoint_code4()) + .vehicle_code(task.getVehicle_code()) + .agv_system_type(agv_system_type) + .priority(task.getPriority()) + .remark(task.getRemark()) + .product_area(task.getProduct_area()) + .build(); + resultList.add(dto); + } + return resultList; + } + + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + SchBaseTask task = taskService.getById(taskObj.getString("task_id")); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + task.setTask_status(TaskStatusEnum.EXECUTING.getCode()); + } + + if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + // 更改任务状态为完成 + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + String startPoint = task.getPoint_code1(); + String endPoint = task.getPoint_code2(); + BstIvtCutpointivt startPointObj = bcutpointivtService.getOne(new LambdaQueryWrapper() + .eq(BstIvtCutpointivt::getTruss_point_code1, startPoint).or() + .eq(BstIvtCutpointivt::getTruss_point_code2, startPoint)); + BstIvtShafttubeivt endPointObj = shafttubeivtService.getOne(new LambdaQueryWrapper() + .eq(BstIvtShafttubeivt::getPoint_code, endPoint)); + String requestParam = task.getRequest_param(); + JSONObject extGroupData = JSONObject.parseObject(requestParam); + // 获取分切计划(最多两个)需要获取子卷的纸管设置到点位上 获取分切计划dto中对应的需要套轴的分切计划 最多两个计划 + String needPlan = extGroupData.getString("needPlan"); + SlitterPlanDistinctDto planDistinctDto = JSONObject.parseObject(needPlan, SlitterPlanDistinctDto.class); + List needPlans = slittingproductionplanService.list(new LambdaQueryWrapper() + .eq(PdmBiSlittingproductionplan::getResource_name, planDistinctDto.getResource_name()) + .eq(PdmBiSlittingproductionplan::getParent_container_name, planDistinctDto.getParent_container_name()) + .eq(PdmBiSlittingproductionplan::getUp_or_down, planDistinctDto.getUp_or_down()) + .eq(PdmBiSlittingproductionplan::getIs_paper_ok, "2")); + if (needPlans.size() == 0) { + throw new BadRequestException("找不到气涨轴编码【" + task.getVehicle_code() + "】对应的气涨轴"); + } + for (PdmBiSlittingproductionplan plan : needPlans) { + if ("1".equals(plan.getLeft_or_right())) { + // 左卷 + if ("1".equals(plan.getPaper_tube_or_FRP())) { + endPointObj.setTube_code1(plan.getPaper_tube_material()); + endPointObj.setTube_name1(plan.getPaper_tube_model()); + } else { + endPointObj.setTube_code1(plan.getFRP_material()); + endPointObj.setTube_name1(plan.getFRP_model()); + } + endPointObj.setContainer_name1(plan.getContainer_name()); + } else { + // 右卷 + if ("1".equals(plan.getPaper_tube_or_FRP())) { + endPointObj.setTube_code1(plan.getPaper_tube_material()); + endPointObj.setTube_name1(plan.getPaper_tube_model()); + } else { + endPointObj.setTube_code1(plan.getFRP_material()); + endPointObj.setTube_name1(plan.getFRP_model()); + } + endPointObj.setContainer_name2(plan.getContainer_name()); + } + } + endPointObj.setHave_qzz("1"); + endPointObj.setQzz_size(extGroupData.getString("qzz_size")); + endPointObj.setUpdate_optid("3"); + endPointObj.setUpdate_optname("ACS"); + endPointObj.setUpdate_time(DateUtil.now()); + shafttubeivtService.updateById(endPointObj); + // 起点清空 + startPointObj.setQzz_no1(""); + startPointObj.setQzz_no2(""); + startPointObj.setPoint_status("1"); + startPointObj.setUpdate_optid("3"); + startPointObj.setUpdate_optname("ACS"); + startPointObj.setUpdate_time(DateUtil.now()); + bcutpointivtService.updateById(startPointObj); + + } + // 取消 + if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + } + task.setUpdate_time(DateUtil.now()); + taskService.updateById(task); + } + + @Override + public String createTask(JSONObject form) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + task.setPoint_code1(form.getString("point_code1")); + task.setPoint_code2(form.getString("point_code2")); + task.setVehicle_code(form.getString("vehicle_code1")); + task.setAcs_task_type("6"); + task.setIs_delete("0"); + task.setRequest_param(form.toJSONString()); + task.setTask_type(form.getString("task_type")); + task.setProduct_area(form.getString("product_area")); + task.setCreate_id(currentUserId); + task.setCreate_name(currentUsername); + task.setCreate_time(DateUtil.now()); + task.setHandle_class(THIS_CLASS); + //根据类型获取对应的任务优先级 + JSONObject priority_jo = WQL.getWO("PDA_COOLIN").addParam("flag", "3").addParam("task_type", task.getTask_type()).process().uniqueResult(0); + if (ObjectUtil.isEmpty(priority_jo)) { + task.setPriority("1"); + } else { + task.setPriority(priority_jo.getString("value")); + } + taskService.save(task); + this.immediateNotifyAcs(null); + return task.getTask_id(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + + @Override + public void cancel(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, "0"); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussSendAirShaftTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussSendAirShaftTask.java index e69de29bb..43ace4f89 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussSendAirShaftTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/TrussSendAirShaftTask.java @@ -0,0 +1,174 @@ +package org.nl.b_lms.sch.tasks.slitter; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: lyd + * @Description: 桁架任务,桁架从套轴位送到套轴对接位 + * @Date: 2024/2/1 + */ +@Slf4j +@Service +public class TrussSendAirShaftTask extends AbstractAcsTask { + private final String THIS_CLASS = TrussSendAirShaftTask.class.getName(); + @Autowired + private IschBaseTaskService taskService; + @Autowired + private IPdmBiSlittingproductionplanService slittingproductionplanService; + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; + @Autowired + private IBstIvtShafttubeivtService shafttubeivtService; + + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + List taskList = taskService.getIssueTasks(THIS_CLASS); + + ArrayList resultList = new ArrayList<>(); + String agv_system_type = "2"; + for (SchBaseTask task : taskList) { + AcsTaskDto dto = AcsTaskDto.builder() + .ext_task_id(task.getTask_id()) + .task_code(task.getTask_code()) + .task_type(task.getAcs_task_type()) + .start_device_code(task.getPoint_code1()) + .next_device_code(task.getPoint_code2()) + .start_device_code2(task.getPoint_code3()) + .next_device_code2(task.getPoint_code4()) + .vehicle_code(task.getVehicle_code()) + .agv_system_type(agv_system_type) + .priority(task.getPriority()) + .remark(task.getRemark()) + .product_area(task.getProduct_area()) + .build(); + resultList.add(dto); + } + return resultList; + } + + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + SchBaseTask task = taskService.getById(taskObj.getString("task_id")); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + task.setTask_status(TaskStatusEnum.EXECUTING.getCode()); + } + + if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + // 更改任务状态为完成 + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + String startPoint = task.getPoint_code1(); + String endPoint = task.getPoint_code2(); + BstIvtShafttubeivt startPointObj = shafttubeivtService.getByPointCode(startPoint, false); + BstIvtCutpointivt endPointObj = bcutpointivtService.getPintByTrussCode(endPoint, false); + // 设置点位信息 + if (endPointObj.getTruss_point_code1().equals(endPoint)) { + // 上轴 + endPointObj.setQzz_no1(task.getVehicle_code()); + } else { + // 下轴 + endPointObj.setQzz_no2(task.getVehicle_code()); + } + endPointObj.setPoint_status("2"); + endPointObj.setUpdate_optid("3"); + endPointObj.setUpdate_optname("ACS"); + endPointObj.setUpdate_time(DateUtil.now()); + bcutpointivtService.updateById(endPointObj); + // 起点清空 + startPointObj.setQzz_size(""); + startPointObj.setTube_name1(""); + startPointObj.setTube_code1(""); + startPointObj.setTube_name2(""); + startPointObj.setTube_code2(""); + startPointObj.setContainer_name1(""); + startPointObj.setContainer_name2(""); + startPointObj.setHave_qzz("0"); + startPointObj.setUpdate_optid("3"); + startPointObj.setUpdate_optname("ACS"); + startPointObj.setUpdate_time(DateUtil.now()); + shafttubeivtService.updateById(startPointObj); + } + // 取消 + if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + // todo: 是否需要回退分切计划套轴完成? + } + task.setUpdate_time(DateUtil.now()); + taskService.updateById(task); + } + + @Override + public String createTask(JSONObject form) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + task.setPoint_code1(form.getString("point_code1")); + task.setPoint_code2(form.getString("point_code2")); + task.setVehicle_code(form.getString("vehicle_code")); + task.setAcs_task_type("6"); + task.setIs_delete("0"); + task.setRequest_param(form.toJSONString()); + task.setTask_type(form.getString("task_type")); + task.setProduct_area(form.getString("product_area")); + task.setCreate_id(currentUserId); + task.setCreate_name(currentUsername); + task.setCreate_time(DateUtil.now()); + task.setHandle_class(THIS_CLASS); + //根据类型获取对应的任务优先级 + JSONObject priority_jo = WQL.getWO("PDA_COOLIN").addParam("flag", "3").addParam("task_type", task.getTask_type()).process().uniqueResult(0); + if (ObjectUtil.isEmpty(priority_jo)) { + task.setPriority("1"); + } else { + task.setPriority(priority_jo.getString("value")); + } + taskService.save(task); + this.immediateNotifyAcs(null); + return task.getTask_id(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + + @Override + public void cancel(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, "0"); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/UpShaftTrussTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/UpShaftTrussTask.java index e69de29bb..6ad30f92b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/UpShaftTrussTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/UpShaftTrussTask.java @@ -0,0 +1,188 @@ +package org.nl.b_lms.sch.tasks.slitter; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; +import org.nl.b_lms.sch.point.dao.StIvtCutpointivt; +import org.nl.b_lms.sch.point.service.IstIvtCutpointivtService; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @Author: lyd + * @Description: 上气涨轴任务,将气涨轴送到分切机下料位上,桁架任务 (头次使用->单上/双上) + * @Date: 2024/2/1 + */ +@Slf4j +@Service +public class UpShaftTrussTask extends AbstractAcsTask { + + private final String THIS_CLASS = UpShaftTrussTask.class.getName(); + @Autowired + private IschBaseTaskService taskService; + @Autowired + private IPdmBiSlittingproductionplanService slittingproductionplanService; + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; + @Autowired + private IstIvtCutpointivtService cutpointivtService; + + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + List taskList = taskService.getIssueTasks(THIS_CLASS); + + ArrayList resultList = new ArrayList<>(); + String agv_system_type = "2"; + for (SchBaseTask task : taskList) { + AcsTaskDto dto = AcsTaskDto.builder() + .ext_task_id(task.getTask_id()) + .task_code(task.getTask_code()) + .task_type(task.getAcs_task_type()) + .start_device_code(task.getPoint_code1()) + .next_device_code(task.getPoint_code2()) + .start_device_code2(task.getPoint_code3()) + .next_device_code2(task.getPoint_code4()) + .vehicle_code(task.getVehicle_code()) + .agv_system_type(agv_system_type) + .priority(task.getPriority()) + .remark(task.getRemark()) + .product_area(task.getProduct_area()) + .build(); + resultList.add(dto); + } + return resultList; + } + + @Override + public void updateTaskStatus(JSONObject taskObj, String status) { + SchBaseTask task = taskService.getById(taskObj.getString("task_id")); + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + task.setTask_status(TaskStatusEnum.EXECUTING.getCode()); + } + + if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + // 点位内容更新 + // 1是分切对接位,2是分切机下料位 + String pointCode1 = task.getPoint_code1(); + BstIvtCutpointivt point1 = bcutpointivtService.getPintByTrussCode(pointCode1, false); + String pointCode2 = task.getPoint_code2(); + StIvtCutpointivt point2 = cutpointivtService.getPintByPointCode(pointCode2, false); + // 交换数据 + point2.setUp_qzzno(point1.getQzz_no1()); + point2.setDown_qzzno(point1.getQzz_no2()); + point2.setUpdate_optid(3L); + point2.setUpdate_optname("ACS"); + point2.setUpdate_time(DateUtil.now()); + cutpointivtService.updateById(point2); + point1.setQzz_no1(""); + point1.setQzz_no2(""); + point1.setPoint_status("1"); + point1.setUpdate_optid("3"); + point1.setUpdate_optname("ACS"); + point1.setUpdate_time(DateUtil.now()); + bcutpointivtService.updateById(point1); + // 分切计划修改状态04->05 + List collect = Stream.of(task.getVehicle_code(), task.getVehicle_code2()) + .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList()); + PdmBiSlittingproductionplan p = new PdmBiSlittingproductionplan(); + p.setStatus("05"); + p.setUpdate_optid("3"); + p.setUpdate_optname("ACS"); + p.setUpdate_time(DateUtil.now()); + slittingproductionplanService.update(p, new LambdaQueryWrapper() + .in(PdmBiSlittingproductionplan::getQzzno, collect)); + } + // 取消 + if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { + task.setTask_status(TaskStatusEnum.FINISHED.getCode()); + } + task.setUpdate_time(DateUtil.now()); + taskService.updateById(task); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String createTask(JSONObject form) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr()); + task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode()); + task.setPoint_code1(form.getString("point_code1")); + task.setPoint_code2(form.getString("point_code2")); + task.setVehicle_code(form.getString("vehicle_code1")); + task.setAcs_task_type("6"); + task.setIs_delete("0"); + task.setRequest_param(form.toJSONString()); + task.setTask_type(form.getString("task_type")); + task.setProduct_area(form.getString("product_area")); + task.setCreate_id(currentUserId); + task.setCreate_name(currentUsername); + task.setCreate_time(DateUtil.now()); + task.setHandle_class(THIS_CLASS); + //根据类型获取对应的任务优先级 + JSONObject priority_jo = WQL.getWO("PDA_COOLIN").addParam("flag", "3").addParam("task_type", task.getTask_type()).process().uniqueResult(0); + if (ObjectUtil.isEmpty(priority_jo)) { + task.setPriority("1"); + } else { + task.setPriority(priority_jo.getString("value")); + } + taskService.save(task); + // 分切计划修改状态 03->04 + List collect = Stream.of(task.getVehicle_code(), task.getVehicle_code2()) + .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList()); + PdmBiSlittingproductionplan p = new PdmBiSlittingproductionplan(); + p.setStatus("04"); + p.setUpdate_optid("3"); + p.setUpdate_optname("ACS"); + p.setUpdate_time(DateUtil.now()); + slittingproductionplanService.update(p, new LambdaQueryWrapper() + .in(PdmBiSlittingproductionplan::getQzzno, collect)); + this.immediateNotifyAcs(null); + return task.getTask_id(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + + @Override + public void cancel(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, "0"); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java index e69de29bb..0498ae74a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java @@ -0,0 +1,136 @@ +package org.nl.b_lms.sch.tasks.slitter.auto; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.b_lms.sch.tasks.slitter.TrussCallAirShaftTask; +import org.nl.b_lms.sch.tasks.slitter.mapper.dto.SlitterPlanDistinctDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @Author: lyd + * @Description: 自动任务 呼叫套轴 根据分切计划来呼叫套轴任务 桁架任务 + * @Date: 2024/2/1 + * @see TrussCallAirShaftTask#createTask(JSONObject) + */ +@Slf4j +@Component +public class AutoCallAirShaftTask { + + @Autowired + private IBstIvtShafttubeivtService bstIvtShafttubeivtService; + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; + @Autowired + private IPdmBiSlittingproductionplanService slittingproductionplanService; + @Autowired + private IschBaseTaskService taskService; + @Autowired + private TrussCallAirShaftTask trussCallAirShaftTask; + + @Transactional(rollbackFor = Exception.class) + public void run() { + // 1、获取空的插拔轴位 + List emptyPoints = bstIvtShafttubeivtService.getAllShaftPointsByConditions("2","0","0"); + emptyPoints.forEach(empty -> { + // 2、获取分切计划数据,todo:暂时不考虑区域 + // todo: 未考虑区域 + List plans = slittingproductionplanService.getAllCutPlan(); + if (plans.size() == 0) { + // todo: 如果不需要套轴,就只做拔轴 + return; + } + // 获取一个分切计划的Dto。一根轴可能有两个分切计划 + SlitterPlanDistinctDto planDto = plans.get(0); + // 查看套轴对接位是否满了 + List emptyShaftPoint = bcutpointivtService.getAreaNotTaskPointByStatus("1", "1", "0"); + // 如果满了就只做拔轴 + if (emptyShaftPoint.size() == 0) { + // todo: 如果不需要套轴,就只做拔轴 + return; + } + // 获取分切计划dto中对应的需要套轴的分切计划 最多两个计划 + List needPlans = slittingproductionplanService.list(new LambdaQueryWrapper() + .eq(PdmBiSlittingproductionplan::getResource_name, planDto.getResource_name()) + .eq(PdmBiSlittingproductionplan::getParent_container_name, planDto.getParent_container_name()) + .eq(PdmBiSlittingproductionplan::getUp_or_down, planDto.getUp_or_down()) + .eq(PdmBiSlittingproductionplan::getIs_paper_ok, "1")); + // 获取其中一条 + PdmBiSlittingproductionplan needPlan = needPlans.get(0); + String qzzSize = needPlan.getQzz_size(); + // 从套轴对接位获取相同气涨轴大小 + List qzzPoint = bcutpointivtService.getPointByTypeAndShaftSize("1", qzzSize); + if (qzzPoint.size() == 0) { + // todo 调用ACS滚条气涨轴下来 + + // todo: 保存所需要的分切计划数据到点位上(套轴对接位)更新分切计划 + return; + } + // 查找一条没任务的点位 todo: 优先获取只有一根轴的点位 + BstIvtCutpointivt startPoint = qzzPoint.stream().filter(point -> checkHaveTask(point)).findFirst().orElse(null); + if (ObjectUtil.isEmpty(startPoint)) { + // 如果不存在,则发起信号滚气涨轴 + // todo 调用ACS滚条气涨轴下来 + + // todo: 保存所需要的分切计划数据到点位上(套轴对接位)更新分切计划 + return; + } + // 创建任务 + JSONObject param = new JSONObject(); + param.put("point_code1", ObjectUtil.isNotEmpty(startPoint.getQzz_no1()) + ? startPoint.getTruss_point_code1() : startPoint.getTruss_point_code2()); + param.put("point_code2", empty.getPoint_code()); + param.put("vehicle_code", ObjectUtil.isNotEmpty(startPoint.getQzz_no1()) + ? startPoint.getQzz_no1() : startPoint.getQzz_no2()); + param.put("qzz_no", ObjectUtil.isNotEmpty(startPoint.getQzz_no1()) + ? startPoint.getQzz_no1() : startPoint.getQzz_no2()); + param.put("needPlan", planDto); + param.put("is_bushing", "1"); + param.put("task_type", "6"); + param.put("product_area", "Test"); + param.put("qzz_size", needPlan.getQzz_size()); + // 设置子卷号 + for (PdmBiSlittingproductionplan plan : needPlans) { + if ("1".equals(plan.getLeft_or_right())) { + param.put("left", plan.getContainer_name()); + } else { + param.put("right", plan.getContainer_name()); + } + } + trussCallAirShaftTask.createTask(param); + // 将分切计划is_paper_ok 1 -> 2 + needPlans.forEach(p -> { + p.setIs_paper_ok("2"); + p.setUpdate_optid("3"); + p.setUpdate_optname("ACS"); + p.setUpdate_time(DateUtil.now()); + }); + slittingproductionplanService.updateBatchById(needPlans); + }); + } + + public boolean checkHaveTask(BstIvtCutpointivt p) { + List list = taskService.list(new LambdaQueryWrapper() + .eq(SchBaseTask::getTask_code, "07").and(la -> la.eq(SchBaseTask::getPoint_code1, p.getPoint_code()).or() + .eq(SchBaseTask::getPoint_code2, p.getPoint_code()).or() + .eq(SchBaseTask::getPoint_code1, p.getTruss_point_code1()).or() + .eq(SchBaseTask::getPoint_code2, p.getTruss_point_code1()).or() + .eq(SchBaseTask::getPoint_code1, p.getTruss_point_code2()).or() + .eq(SchBaseTask::getPoint_code2, p.getTruss_point_code2()))); + return list.size() == 0; + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendAirShaftAgvTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendAirShaftAgvTask.java index e69de29bb..a036454d2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendAirShaftAgvTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendAirShaftAgvTask.java @@ -0,0 +1,94 @@ +package org.nl.b_lms.sch.tasks.slitter.auto; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; +import org.nl.b_lms.sch.point.dao.StIvtCutpointivt; +import org.nl.b_lms.sch.point.service.IstIvtCutpointivtService; +import org.nl.b_lms.sch.tasks.slitter.SendAirShaftAgvTask; +import org.nl.modules.common.exception.BadRequestException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @Author: lyd + * @Description: 自动任务 送气胀轴,将套轴对接位套好的轴送到对应的分切机对应的对接位 AGV任务 + * @Date: 2024/2/1 + */ +@Slf4j +@Component +public class AutoSendAirShaftAgvTask { + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; + @Autowired + private IstIvtCutpointivtService cutpointivtService; + @Autowired + private IPdmBiSlittingproductionplanService slittingproductionplanService; + @Autowired + private SendAirShaftAgvTask sendAirShaftAgvTask; + + public void run() { + // 获取套轴对接位有气涨轴没任务的点位 + List cutPoints = bcutpointivtService.getAreaNotTaskPointByStatus("1", "2", "0"); + for (BstIvtCutpointivt cutPoint : cutPoints) { + // 获取分切计划 + List collect = Stream.of(cutPoint.getQzz_no1(), cutPoint.getQzz_no2()) + .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList()); + // 最多4条分切计划 + List plans = slittingproductionplanService.list(new LambdaQueryWrapper() + .in(PdmBiSlittingproductionplan::getQzzno, collect)); + if (plans.size() == 0) { + throw new BadRequestException("分切计划不存在"); + } + // 获取任意一条 + PdmBiSlittingproductionplan demoPlan = plans.get(0); + StIvtCutpointivt deviceCut = cutpointivtService.getOne(new LambdaQueryWrapper() + .eq(StIvtCutpointivt::getExt_code, demoPlan.getResource_name())); + // 校验是否为一组 + if (ObjectUtil.isEmpty(cutPoint.getQzz_no1()) || ObjectUtil.isEmpty(cutPoint.getQzz_no2())) { + // 单条可能还有一条未套轴 + List list = slittingproductionplanService.list(new LambdaQueryWrapper() + .eq(PdmBiSlittingproductionplan::getParent_container_name, demoPlan.getParent_container_name()) + .eq(PdmBiSlittingproductionplan::getResource_name, demoPlan.getResource_name()) + .eq(PdmBiSlittingproductionplan::getSplit_group, demoPlan.getSplit_group()) + .ne(PdmBiSlittingproductionplan::getUp_or_down, demoPlan.getUp_or_down())); + if (list.size() > 0) { + // 还有不同轴,所以不继续 + break; + } + } + // 如果两个气涨轴编码则表示一组满了 + // 查找分切对接的空位 + List emptyPoint = bcutpointivtService.list(new LambdaQueryWrapper() + .eq(BstIvtCutpointivt::getPoint_type, "3") + .eq(BstIvtCutpointivt::getPoint_status, "1") + .eq(BstIvtCutpointivt::getIs_used, "1") + .last("ORDER BY ABS(sort_seq - " + deviceCut.getSort_seq() + ")")); + if (emptyPoint.size() == 0) { + log.warn("找不到对应的位置!"); + return; + } + // 创建任务 + BstIvtCutpointivt endPoint = emptyPoint.get(0); + JSONObject param = new JSONObject(); + param.put("point_code1", cutPoint.getPoint_code()); + param.put("point_code2", endPoint.getPoint_code()); + param.put("vehicle_code1", cutPoint.getQzz_no1()); + param.put("vehicle_code2", cutPoint.getQzz_no2()); + param.put("task_type", "6"); + param.put("product_area", "Test"); + sendAirShaftAgvTask.createTask(param); + } + + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendShaftCacheAgvTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendShaftCacheAgvTask.java index e69de29bb..a3f04e207 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendShaftCacheAgvTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendShaftCacheAgvTask.java @@ -0,0 +1,18 @@ +package org.nl.b_lms.sch.tasks.slitter.auto; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.sch.tasks.slitter.SlitterDownAgvTask; +import org.springframework.stereotype.Component; + +/** + * @Author: lyd + * @Description: + * @Date: 2024/2/1 + */ +@Deprecated +@Slf4j +@Component +public class AutoSendShaftCacheAgvTask { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterDownAgvTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterDownAgvTask.java index e69de29bb..744366c0d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterDownAgvTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterDownAgvTask.java @@ -0,0 +1,113 @@ +package org.nl.b_lms.sch.tasks.slitter.auto; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.b_lms.sch.tasks.slitter.SlitterDownAgvTask; +import org.nl.b_lms.sch.tasks.slitter.mapper.SlitterMapper; +import org.nl.modules.common.exception.BadRequestException; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @Author: lyd + * @Description: 自动任务 分切机满卷下料(分切对接位:3)去拔轴 AGV任务 + * 先去套轴对接位,(标箔,套轴对接位不够的情况下是去分切缓存位) + * + * 分切对接位和分切缓存位公用类 + * @Date: 2024/2/1 + * @see SlitterDownAgvTask#createTask(JSONObject) + */ +@Slf4j +@Component +public class AutoSlitterDownAgvTask { + + @Autowired + private IBstIvtCutpointivtService cutpointivtService; + @Autowired + private SlitterDownAgvTask slitterDownAgvTask; + @Autowired + private IschBaseTaskService taskService; + @Autowired + private SlitterMapper slitterMapper; + @Autowired + private RedissonClient redissonClient; + /** + * 业务: + * 分切下料满卷(分切计划是结束),通过气涨轴编码可定位。 + * 先往套轴对接位送,不够再送分切缓存位(针对B2,B4车间) + */ + public void run() { + // 获取满轴数据 todo: 先不考虑区域,后期添加 + List cutPointIvts = slitterMapper.getAreaFullVolume(); + cutPointIvts.forEach(cut -> { + // 校验任务 + List collect = Stream.of(cut.getPoint_code(), cut.getTruss_point_code1(), cut.getTruss_point_code2()) + .collect(Collectors.toList()); + List list = taskService.list(new LambdaQueryWrapper() + .le(SchBaseTask::getTask_status, "07") + .in(SchBaseTask::getPoint_code1, collect).in(SchBaseTask::getPoint_code2, collect) + .in(SchBaseTask::getPoint_code3, collect).in(SchBaseTask::getPoint_code4, collect)); + if (list.size() > 0) { + return; + } + // cut是起点 + // 1、先去对应的套轴对接位,没有气涨轴(空位),没有任务的点位 + List areaEmptyNotTaskPoint = cutpointivtService.getAreaNotTaskPointByStatus("1", "1", "2"); + if (areaEmptyNotTaskPoint.size() > 0) { + BstIvtCutpointivt endPoint = areaEmptyNotTaskPoint.get(0); + RLock lock = redissonClient.getLock(endPoint.getPoint_code()); + boolean tryLock; + try { + tryLock = lock.tryLock(0, TimeUnit.SECONDS); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + try { + if (tryLock) { + toCreateTask(cut, endPoint); + return; + } else { + throw new BadRequestException("资源已被占用,请稍等!"); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } + } else if (areaEmptyNotTaskPoint.size() == 0 && "3".equals(cut.getPoint_type())) { + // 2、没有位置,就去分切缓存位 + areaEmptyNotTaskPoint = cutpointivtService.getAreaNotTaskPointByStatus("3", "1", "0"); + } + if (areaEmptyNotTaskPoint.size() == 0) { + log.warn(cut.getProduct_area() + "该区域暂无位置存放满轴"); + return; + } + // 生成任务 + BstIvtCutpointivt endPoint = areaEmptyNotTaskPoint.get(0); + toCreateTask(cut, endPoint); + }); + } + + private void toCreateTask(BstIvtCutpointivt cut, BstIvtCutpointivt endPoint) { + JSONObject param = new JSONObject(); + param.put("point_code1", cut.getPoint_code()); + param.put("point_code2", endPoint.getPoint_code()); + param.put("vehicle_code1", cut.getQzz_no1()); + param.put("vehicle_code2", cut.getQzz_no2()); + param.put("task_type", "1"); + param.put("product_area", "Test"); + slitterDownAgvTask.createTask(param); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoUpShaftTrussTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoUpShaftTrussTask.java index e69de29bb..40bc41ca1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoUpShaftTrussTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoUpShaftTrussTask.java @@ -0,0 +1,115 @@ +package org.nl.b_lms.sch.tasks.slitter.auto; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; +import org.nl.b_lms.sch.point.dao.StIvtCutpointivt; +import org.nl.b_lms.sch.point.service.IstIvtCutpointivtService; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.b_lms.sch.tasks.slitter.UpShaftTrussTask; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @Author: lyd + * @Description: 自动任务 分切机下料位上套轴气涨轴,桁架任务(头一次调用,上单/上双) + * @Date: 2024/2/1 + */ +@Slf4j +@Component +public class AutoUpShaftTrussTask { + + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; + @Autowired + private IstIvtCutpointivtService cutpointivtService; + @Autowired + private IPdmBiSlittingproductionplanService slittingproductionplanService; + @Autowired + private UpShaftTrussTask upShaftTrussTask; + @Autowired + private IschBaseTaskService taskService; + + public void run() { + // 获取没有气涨轴的分切机点位 + List devicePoint = cutpointivtService.list(new LambdaQueryWrapper() + .eq(StIvtCutpointivt::getProduct_area, "B2") + .and(l1 -> l1.eq(StIvtCutpointivt::getUp_qzzno, "").or().isNull(StIvtCutpointivt::getUp_qzzno)) + .and(l2 -> l2.eq(StIvtCutpointivt::getDown_qzzno, "").or().isNull(StIvtCutpointivt::getDown_qzzno))); + devicePoint.forEach(device -> { + // 校验任务 + List collect = Stream.of(device.getUp_point_code(), device.getDown_point_code()).collect(Collectors.toList()); + List list = taskService.list(new LambdaQueryWrapper() + .le(SchBaseTask::getTask_status, "07") + .in(SchBaseTask::getPoint_code1, collect).in(SchBaseTask::getPoint_code2, collect) + .in(SchBaseTask::getPoint_code3, collect).in(SchBaseTask::getPoint_code4, collect)); + if (list.size() > 0) { + return; + } + // 获取当前分切机的下一组分切计划(最多四条分切计划) + List nextPlans = slittingproductionplanService.list(new LambdaQueryWrapper() + .eq(PdmBiSlittingproductionplan::getResource_name, device.getExt_code()) + .eq(PdmBiSlittingproductionplan::getStatus, "03") + .eq(PdmBiSlittingproductionplan::getIs_delete, "0") + .orderByAsc(PdmBiSlittingproductionplan::getUpdate_time)); + if (nextPlans.size() == 0) { + log.warn("分切机【" + device.getExt_code() + "】未找到套好轴的分切计划"); + // 下个分切机 + return; + } + JSONObject param = new JSONObject(); + // 筛选上下轴各一条 + PdmBiSlittingproductionplan nextUpPlan = nextPlans.stream().filter(p -> "1".equals(p.getUp_or_down())).findFirst().orElse(null); + PdmBiSlittingproductionplan nextDownPlan = nextPlans.stream().filter(p -> "2".equals(p.getUp_or_down())).findFirst().orElse(null); + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(BstIvtCutpointivt::getPoint_type, "3") + .eq(BstIvtCutpointivt::getPoint_status, "2") + .eq(BstIvtCutpointivt::getIs_used, "1"); + if (ObjectUtil.isNotEmpty(nextUpPlan)) { + lam.eq(BstIvtCutpointivt::getQzz_no1, nextUpPlan.getQzzno()); + } + if (ObjectUtil.isNotEmpty(nextDownPlan)) { + lam.eq(BstIvtCutpointivt::getQzz_no2, nextDownPlan.getQzzno()); + } + BstIvtCutpointivt newCutPoint = bcutpointivtService.getOne(lam, false); + // 查找对应的分切对接位 + if (ObjectUtil.isNotEmpty(nextUpPlan) && ObjectUtil.isNotEmpty(nextDownPlan)) { + // 双轴任务 + param.put("point_code1", newCutPoint.getTruss_point_code1()); + param.put("point_code2", device.getUp_point_code()); + param.put("point_code3", newCutPoint.getTruss_point_code2()); + param.put("point_code4", device.getDown_point_code()); + param.put("vehicle_code1", newCutPoint.getQzz_no1()); + param.put("vehicle_code2", newCutPoint.getQzz_no2()); + } else { + // 单轴任务 + if (ObjectUtil.isNotEmpty(nextUpPlan)) { + // 上轴任务 + param.put("point_code1", newCutPoint.getTruss_point_code1()); + param.put("point_code2", device.getUp_point_code()); + param.put("vehicle_code1", newCutPoint.getQzz_no1()); + } else { + // 下轴任务 + param.put("point_code1", newCutPoint.getTruss_point_code2()); + param.put("point_code2", device.getDown_point_code()); + param.put("vehicle_code2", newCutPoint.getQzz_no2()); + } + } + param.put("truss_type", "1"); + param.put("empty_site", "0"); + param.put("product_area", "Test"); + upShaftTrussTask.createTask(param); + }); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.java index e69de29bb..c1b1b0955 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.java @@ -0,0 +1,34 @@ +package org.nl.b_lms.sch.tasks.slitter.mapper; + +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; + +import java.util.List; + +/** + * @description 服务接口 + * @author lyd + * @date 2024-02-26 + **/ +public interface SlitterMapper { + + /** + * 获取同组的气胀轴点位 + * @param demoPlan 分切计划 + * @return 点位 + */ + BstIvtCutpointivt getSameGroupPoint(PdmBiSlittingproductionplan demoPlan); + + /** + * 获取同组的任务中的终点 + * @param demoPlan 分切计划 + * @return 任务终点 + */ + String getSameGroupTaskPoint(PdmBiSlittingproductionplan demoPlan); + + /** + * 获取2分切缓存位和3分切对接位有子卷的点位 + * @return / + */ + List getAreaFullVolume(); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml index e69de29bb..a47316ac0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml @@ -0,0 +1,30 @@ + + + + + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/SlitterPlanDistinctDto.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/SlitterPlanDistinctDto.java index e69de29bb..3ee6a5e12 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/SlitterPlanDistinctDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/dto/SlitterPlanDistinctDto.java @@ -0,0 +1,32 @@ +package org.nl.b_lms.sch.tasks.slitter.mapper.dto; + +import lombok.Data; + +/** + * @Author: lyd + * @Description: 分切实体 + * @Date: 2024/2/1 + */ +@Data +public class SlitterPlanDistinctDto { + /** + * 分切设备 + */ + private String resource_name; + /** + * 母卷 + */ + private String parent_container_name; + /** + * 分切组 + */ + private String split_group; + /** + * 上轴/下轴 + */ + private String up_or_down; + /** + * 数量 + */ + private String num; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java index e69de29bb..de65ab0f0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/SlitterService.java @@ -0,0 +1,24 @@ +package org.nl.b_lms.sch.tasks.slitter.service; + +import com.alibaba.fastjson.JSONObject; + +/** + * @description 服务接口 + * @author lyd + * @date 2024-02-26 + **/ +public interface SlitterService { + /** + * acs申请拔轴完毕 + * @param param + * @return + */ + JSONObject acsFinishShaftPluckTube(JSONObject param); + + /** + * ACS申请套轴完毕 + * @param param + * @return + */ + JSONObject acsFinishLoadShaft(JSONObject param); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java index e69de29bb..6f985cc0b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/service/impl/SlitterServiceImpl.java @@ -0,0 +1,147 @@ +package org.nl.b_lms.sch.tasks.slitter.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpStatus; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService; +import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService; +import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan; +import org.nl.b_lms.sch.point.service.IstIvtCutpointivtService; +import org.nl.b_lms.sch.task.dao.SchBaseTask; +import org.nl.b_lms.sch.task.service.IschBaseTaskService; +import org.nl.b_lms.sch.tasks.slitter.TrussSendAirShaftTask; +import org.nl.b_lms.sch.tasks.slitter.mapper.SlitterMapper; +import org.nl.b_lms.sch.tasks.slitter.service.SlitterService; +import org.nl.modules.common.exception.BadRequestException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @description 服务接口 + * @author lyd + * @date 2024-02-26 + **/ +@Service +public class SlitterServiceImpl implements SlitterService { + + @Autowired + private IschBaseTaskService taskService; + @Autowired + private IPdmBiSlittingproductionplanService slittingproductionplanService; + @Autowired + private IBstIvtCutpointivtService bcutpointivtService; + @Autowired + private IstIvtCutpointivtService cutpointivtService; + @Autowired + private IBstIvtShafttubeivtService shafttubeivtService; + @Autowired + private SlitterMapper slitterMapper; + @Autowired + private TrussSendAirShaftTask trussSendAirShaftTask; + + @Override + public JSONObject acsFinishShaftPluckTube(JSONObject param) { + JSONObject res = new JSONObject(); + String deviceCode = param.getString("device_code"); + String subVolume = param.getString("sub_volume"); + String taskId = param.getString("task_id"); + // 获取上一个桁架任务 + SchBaseTask previousTask = taskService.getById(taskId); + // hint: 使用子卷号 + List plans = slittingproductionplanService.list(new LambdaQueryWrapper() + .eq(PdmBiSlittingproductionplan::getContainer_name, subVolume)); + PdmBiSlittingproductionplan plan; + if ("1".equals(deviceCode.substring(deviceCode.length() - 1))) { + plan = plans.stream().filter(p -> "1".equals(p.getLeft_or_right())).findFirst().orElse(null); + } else { + plan = plans.stream().filter(p -> "2".equals(p.getLeft_or_right())).findFirst().orElse(null); + } + // 查找终点 todo: 如何确认是废箔还是成品 + // todo: 暂时写死去成品称重 +// BstIvtShafttubeivt one = shafttubeivtService.getOne(new LambdaQueryWrapper() +// .eq(BstIvtShafttubeivt::getPoint_type, "4").eq(BstIvtShafttubeivt::getPoint_location, "0")); + JSONObject taskParam = new JSONObject(); + taskParam.put("point_code1", deviceCode); + taskParam.put("point_code2", "B_CZW01"); + taskParam.put("material_code", plan.getContainer_name()); + taskParam.put("vehicle_code", plan.getQzzno()); + taskParam.put("task_type", "未定义"); + taskParam.put("product_area", "未定义"); +// sendCopperFoilSubRollTrussTask.createTask(taskParam); + res.put("code", HttpStatus.HTTP_OK); + res.put("message", "任务请求成功!"); + return res; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject acsFinishLoadShaft(JSONObject param) { + JSONObject res = new JSONObject(); + String deviceCode = param.getString("device_code"); + // todo: 判断是否有未完成的任务 + BstIvtShafttubeivt startPoint = shafttubeivtService.getOne(new LambdaQueryWrapper() + .eq(BstIvtShafttubeivt::getPoint_code, deviceCode)); + // 获取分切计划 + List collect = Stream.of(startPoint.getContainer_name1(), startPoint.getContainer_name2()) + .filter(value -> value != null && !value.isEmpty()).collect(Collectors.toList()); + List plans = slittingproductionplanService.list(new LambdaQueryWrapper() + .in(PdmBiSlittingproductionplan::getContainer_name, collect)); + if (plans.size() == 0) { + throw new BadRequestException("找不到对应的分切计划!"); + } + // 当前套轴的分切计划 + PdmBiSlittingproductionplan demoPlan = plans.get(0); + // 查找是否有同组的气胀轴位置 + BstIvtCutpointivt cutPoint = slitterMapper.getSameGroupPoint(demoPlan); + if (ObjectUtil.isEmpty(cutPoint)) { + // 也有可能在路上, 获取任务的终点 + String endPoint = slitterMapper.getSameGroupTaskPoint(demoPlan); + if (ObjectUtil.isNotEmpty(endPoint)) { + cutPoint = bcutpointivtService.getOne(new LambdaQueryWrapper() + .eq(BstIvtCutpointivt::getTruss_point_code1, endPoint).or() + .eq(BstIvtCutpointivt::getTruss_point_code2, endPoint)); + } + } + if (ObjectUtil.isEmpty(cutPoint)) { + // 获取一个空位 + List emptyNotTaskPoint = bcutpointivtService.getAreaNotTaskPointByStatus("1", "1", "1"); + if (emptyNotTaskPoint.size() == 0) { + throw new BadRequestException("找不到可用套轴对接位!"); + } + cutPoint = emptyNotTaskPoint.get(0); + } + // 分切计划设置套轴完成 + String qzzNo = IdUtil.getSnowflake(1,1).nextIdStr(); + plans.forEach(plan -> { + plan.setIs_child_tz_ok("1"); + plan.setQzzno(qzzNo); + plan.setUpdate_optid("3"); + plan.setUpdate_optname("ACS"); + plan.setUpdate_time(DateUtil.now()); + }); + slittingproductionplanService.updateBatchById(plans); + // 创建任务 + JSONObject taskParam = new JSONObject(); + taskParam.put("point_code1", startPoint.getPoint_code()); + taskParam.put("point_code2", ObjectUtil.isEmpty(cutPoint.getTruss_point_code1()) + ? cutPoint.getTruss_point_code1() : cutPoint.getTruss_point_code2()); + taskParam.put("vehicle_code", qzzNo); + taskParam.put("task_type", "6"); + taskParam.put("product_area", "Test"); + trussSendAirShaftTask.createTask(taskParam); + res.put("status", HttpStatus.HTTP_OK); + res.put("message", "请求成功"); + return res; + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/common/utils/FieldCopyUtils.java b/lms/nladmin-system/src/main/java/org/nl/common/utils/FieldCopyUtils.java deleted file mode 100644 index e69de29bb..000000000 diff --git a/lms/nladmin-system/src/main/java/org/nl/common/utils/TaskUtils.java b/lms/nladmin-system/src/main/java/org/nl/common/utils/TaskUtils.java new file mode 100644 index 000000000..0d13c2d2a --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/common/utils/TaskUtils.java @@ -0,0 +1,35 @@ +package org.nl.common.utils; + +import cn.hutool.core.date.DateUtil; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; + +/** + * @author: lyd + * @description: 工具类 + * @Date: 2024/2/27 + */ +@Slf4j +public class TaskUtils { + + /** + * 交换点位信息 + * @param source 源点 + * @param target 目标点 + * @param status 目标状态 + */ + public static void pointExchangeResources(BstIvtCutpointivt source, BstIvtCutpointivt target, String status) { + target.setQzz_no1(source.getQzz_no1()); + target.setQzz_no2(source.getQzz_no2()); + target.setPoint_status(status); + target.setUpdate_optid("3"); + target.setUpdate_optname("ACS"); + target.setUpdate_time(DateUtil.now()); + source.setQzz_no1(""); + source.setQzz_no2(""); + source.setPoint_status("1"); + source.setUpdate_optid("3"); + source.setUpdate_optname("ACS"); + source.setUpdate_time(DateUtil.now()); + } +}