add:增加一楼任务

This commit is contained in:
2024-02-01 23:20:00 +08:00
parent 2fbac5ca01
commit 39024a6484
48 changed files with 2758 additions and 492 deletions

View File

@@ -0,0 +1,96 @@
package org.nl.b_lms.pdm.productionplan.controller;
import java.util.Set;
import java.util.Map;
import org.nl.b_lms.pdm.productionplan.dao.PdmBiSlittingproductionplan;
import org.nl.common.TableDataInfo;
import org.springframework.web.bind.annotation.*;
import lombok.RequiredArgsConstructor;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.domain.query.PageQuery;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.nl.modules.logging.annotation.Log;
import org.nl.b_lms.pdm.productionplan.service.IpdmBiSlittingproductionplanService;
/**
* {@code @Description:} 分切生产计划(PdmBiSlittingproductionplan)控制层
* {@code @Author:} gbx
*
* @since 2024-01-27
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/pdmBiSlittingproductionplan")
@Slf4j
public class PdmBiSlittingproductionplanController {
@Resource
private IpdmBiSlittingproductionplanService pdmBiSlittingproductionplanService;
/**
* 分页查询
*
* @param whereJson 查询条件
* @param page 分页参数
*/
@GetMapping
@Log("查询分切生产计划")
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(pdmBiSlittingproductionplanService.queryAll(whereJson, page)), HttpStatus.OK);
}
/**
* 新增数据
*
* @param entity 实体对象
* @return 新增结果
*/
@PostMapping
@Log("新增分切生产计划")
public ResponseEntity<Object> create(PdmBiSlittingproductionplan entity) {
pdmBiSlittingproductionplanService.create(entity);
return new ResponseEntity<>(HttpStatus.OK);
}
/**
* 修改数据
*
* @param entity 实体对象
* @return 修改结果
*/
@PutMapping
@Log("修改分切生产计划")
//@SaCheckPermission("@el.check(PdmBiSlittingproductionplan:edit')")
public ResponseEntity<Object> update(PdmBiSlittingproductionplan entity) {
pdmBiSlittingproductionplanService.update(entity);
return new ResponseEntity<>(HttpStatus.OK);
}
/**
* 删除数据
*
* @param ids 多个主键Id
* @return 删除结果
*/
@Log("删除分切生产计划")
//@SaCheckPermission("@el.check(PdmBiSlittingproductionplan:del')")
@DeleteMapping
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
pdmBiSlittingproductionplanService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -0,0 +1,306 @@
package org.nl.b_lms.pdm.productionplan.dao;
import java.math.BigDecimal;
import java.io.Serializable;
import java.math.BigDecimal;
import lombok.*;
import lombok.Data;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.AllArgsConstructor;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
/**
* {@code @Description:} 分切生产计划(PdmBiSlittingproductionplan)实体类
* {@code @Author:} gbx
*
* @since 2024-01-27
*/
@Data
@Builder
@ToString
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")
@TableName("pdm_bi_slittingproductionplan")
public class PdmBiSlittingproductionplan extends Model<PdmBiSlittingproductionplan> {
private static final long serialVersionUID = -7739291296662381393L;
/**
* 分切计划标识
*/
@TableId(value = "workorder_id", type = IdType.NONE)
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;
/**
* 纸管定级(待检区1,2,3管制区4,6)
*/
@TableField(exist = false)
private String level;
/**
* 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 is_parent_ok;
/**
* 子卷套轴完成
*/
private String is_child_tz_ok;
/**
* 子卷配送完成
*/
private String is_child_ps_ok;
/**
* 气涨轴编码
*/
private String qzzno;
/**
* 修改人
*/
private Long update_optid;
/**
* 修改人姓名
*/
private String update_optname;
/**
* 修改时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String update_time;
/**
* 部门ID
*/
private Long sysdeptid;
/**
* 公司ID
*/
private Long syscompanyid;
/**
* 是否删除
*/
@TableField(fill = FieldFill.INSERT)
private String is_delete;
/**
* 销售订单及行号
*/
private String sale_order_name;
/**
* 是否呼叫
*/
private String is_call;
/**
* 呼叫时间
*/
private String call_time;
/**
* 是否呼叫纸管
*/
private String is_paper_ok;
/**
* 获取主键值
*
* @return 主键值
*/
@Override
protected Serializable pkVal() {
return this.workorder_id;
}
}

View File

@@ -0,0 +1,15 @@
package org.nl.b_lms.pdm.productionplan.dao.mapper;
import org.nl.b_lms.pdm.productionplan.dao.PdmBiSlittingproductionplan;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* {@code @Description:} 分切生产计划(PdmBiSlittingproductionplan)数据持久层
* {@code @Author:} gbx
*
* @since 2024-01-27
*/
public interface PdmBiSlittingproductionplanMapper extends BaseMapper<PdmBiSlittingproductionplan> {
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.b_lms.pdm.productionplan.dao.mapper.PdmBiSlittingproductionplanMapper">
</mapper>

View File

@@ -0,0 +1,190 @@
package org.nl.b_lms.pdm.productionplan.dto;
import java.math.BigDecimal;
import java.io.Serializable;
import lombok.*;
import lombok.Data;
import lombok.Builder;
/**
* {@code @Description:} 分切生产计划(PdmBiSlittingproductionplan)数据传输类
* {@code @Author:} gbx
*
* @since 2024-01-27
*/
@Data
@Builder
@ToString
public class PdmBiSlittingproductionplanDto implements Serializable {
/**
* 分切计划标识
*/
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 String is_parent_ok;
/**
* 子卷套轴完成
*/
private String is_child_tz_ok;
/**
* 子卷配送完成
*/
private String is_child_ps_ok;
/**
* 气涨轴编码
*/
private String qzzno;
/**
* 修改人
*/
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 sale_order_name;
/**
* 是否呼叫
*/
private String is_call;
/**
* 呼叫时间
*/
private String call_time;
/**
* 是否呼叫纸管
*/
private String is_paper_ok;
}

View File

@@ -0,0 +1,22 @@
package org.nl.b_lms.pdm.productionplan.dto;
import java.math.BigDecimal;
import lombok.Data;
import lombok.Builder;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import org.nl.b_lms.pdm.productionplan.dao.PdmBiSlittingproductionplan;
import org.nl.common.domain.query.BaseQuery;
/**
* @Author: gbx
* @since 2024-01-27
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class PdmBiSlittingproductionplanQuery extends BaseQuery<PdmBiSlittingproductionplan> {
}

View File

@@ -0,0 +1,57 @@
package org.nl.b_lms.pdm.productionplan.service;
import org.nl.b_lms.pdm.productionplan.dao.PdmBiSlittingproductionplan;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;
import java.util.Set;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery;
/**
* {@code @Description:} 分切生产计划(PdmBiSlittingproductionplan)服务接口层
* {@code @Author:} gbx
*
* @since 2024-01-27
*/
public interface IpdmBiSlittingproductionplanService extends IService<PdmBiSlittingproductionplan> {
/**
* 查询数据分页
*
* @param whereJson 查询条件
* @param pageable 分页参数
* @return IPage<PdmBiSlittingproductionplan>
*/
IPage<PdmBiSlittingproductionplan> queryAll(Map whereJson, PageQuery pageable);
/**
* 创建
*
* @param entity /
*/
void create(PdmBiSlittingproductionplan entity);
/**
* 编辑
*
* @param entity /
*/
void update(PdmBiSlittingproductionplan entity);
/**
* 多选删除
*
* @param ids /
*/
void deleteAll(Set<String> ids);
}

View File

@@ -0,0 +1,106 @@
package org.nl.b_lms.pdm.productionplan.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.b_lms.pdm.productionplan.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.pdm.productionplan.dao.mapper.PdmBiSlittingproductionplanMapper;
import org.nl.b_lms.pdm.productionplan.service.IpdmBiSlittingproductionplanService;
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 javax.annotation.Resource;
import java.util.Map;
import java.util.Set;
/**
* {@code @Description:} 分切生产计划(PdmBiSlittingproductionplan)服务实现层
* {@code @Author:} gbx
*
* @since 2024-01-27
*/
@Service("pdmBiSlittingproductionplanService")
public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl<PdmBiSlittingproductionplanMapper, PdmBiSlittingproductionplan> implements IpdmBiSlittingproductionplanService {
@Resource
private PdmBiSlittingproductionplanMapper pdmBiSlittingproductionplanMapper;
/**
* 查询数据分页
*
* @param whereJson 查询条件
* @param page 分页参数
*/
@Override
public IPage<PdmBiSlittingproductionplan> queryAll(Map whereJson, PageQuery page) {
return pdmBiSlittingproductionplanMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), new QueryWrapper<PdmBiSlittingproductionplan>()
.lambda()
);
}
/**
* 创建
*
* @param entity 对象实体
*/
@Override
public void create(PdmBiSlittingproductionplan entity) {
pdmBiSlittingproductionplanMapper.insert(getBasicInfo(entity, true));
}
/**
* 编辑
*
* @param entity 对象实体
*/
@Override
public void update(PdmBiSlittingproductionplan entity) {
// PdmBiSlittingproductionplan dto = pdmBiSlittingproductionplanMapper.selectById(entity.getId);
// if (dto == null) {
// throw new BadRequestException("不存在该数据!");
// }
pdmBiSlittingproductionplanMapper.updateById(getBasicInfo(entity, false));
}
/**
* 多选删除
*
* @param ids 多个Id主键
*/
@Override
public void deleteAll(Set<String> ids) {
// 物理删除
pdmBiSlittingproductionplanMapper.deleteBatchIds(ids);
}
/**
* 获取实体基础信息
*
* @param entity 对象实体
* @param isCreate 是否创建
*/
private PdmBiSlittingproductionplan getBasicInfo(PdmBiSlittingproductionplan entity, boolean isCreate) {
// if (isCreate) {
// entity.setCreate_id(Long.valueOf(SecurityUtils.getCurrentUserId()));
// entity.setCreate_name(SecurityUtils.getCurrentNickName());
// entity.setCreate_time(DateUtil.now());
// }
// entity.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
// entity.setUpdate_optname(SecurityUtils.getCurrentNickName());
// entity.setUpdate_time(DateUtil.now());
return entity;
}
}

View File

@@ -0,0 +1,96 @@
package org.nl.b_lms.pdm.subpackagerelation.controller;
import java.util.Set;
import java.util.Map;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.common.TableDataInfo;
import org.springframework.web.bind.annotation.*;
import lombok.RequiredArgsConstructor;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.domain.query.PageQuery;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.nl.modules.logging.annotation.Log;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
/**
* {@code @Description:} 子卷包装关系表(PdmBiSubpackagerelation)控制层
* {@code @Author:} gbx
*
* @since 2024-02-01
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/pdmBiSubpackagerelation")
@Slf4j
public class PdmBiSubpackagerelationController {
@Resource
private IpdmBiSubpackagerelationService pdmBiSubpackagerelationService;
/**
* 分页查询
*
* @param whereJson 查询条件
* @param page 分页参数
*/
@GetMapping
@Log("查询子卷包装关系表")
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(pdmBiSubpackagerelationService.queryAll(whereJson, page)), HttpStatus.OK);
}
/**
* 新增数据
*
* @param entity 实体对象
* @return 新增结果
*/
@PostMapping
@Log("新增子卷包装关系表")
public ResponseEntity<Object> create(PdmBiSubpackagerelation entity) {
pdmBiSubpackagerelationService.create(entity);
return new ResponseEntity<>(HttpStatus.OK);
}
/**
* 修改数据
*
* @param entity 实体对象
* @return 修改结果
*/
@PutMapping
@Log("修改子卷包装关系表")
//@SaCheckPermission("@el.check(PdmBiSubpackagerelation:edit')")
public ResponseEntity<Object> update(PdmBiSubpackagerelation entity) {
pdmBiSubpackagerelationService.update(entity);
return new ResponseEntity<>(HttpStatus.OK);
}
/**
* 删除数据
*
* @param ids 多个主键Id
* @return 删除结果
*/
@Log("删除子卷包装关系表")
//@SaCheckPermission("@el.check(PdmBiSubpackagerelation:del')")
@DeleteMapping
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
pdmBiSubpackagerelationService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -0,0 +1,326 @@
package org.nl.b_lms.pdm.subpackagerelation.dao;
import java.math.BigDecimal;
import java.io.Serializable;
import java.math.BigDecimal;
import lombok.*;
import lombok.Data;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.AllArgsConstructor;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
/**
* {@code @Description:} 子卷包装关系表(PdmBiSubpackagerelation)实体类
* {@code @Author:} gbx
*
* @since 2024-02-01
*/
@Data
@Builder
@ToString
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")
@TableName("pdm_bi_subpackagerelation")
public class PdmBiSubpackagerelation extends Model<PdmBiSubpackagerelation> {
private static final long serialVersionUID = -7739291296662381393L;
//@TableId(value = "id", type = IdType.NONE)
/**
* 子卷包装标识
*/
private Long workorder_id;
/**
* 木箱唯一码
*/
private String package_box_sn;
/**
* 箱内子卷数量
*/
private BigDecimal quanlity_in_box;
/**
* 木箱自身重量
*/
private BigDecimal box_weight;
/**
* 保质期
*/
private String quality_guaran_period;
/**
* 销售订单及行号
*/
private String sale_order_name;
/**
* 客户编号
*/
private String customer_name;
/**
* 客户名称
*/
private String customer_description;
/**
* 产品编码
*/
private String product_name;
/**
* 产品描述
*/
private String product_description;
/**
* 入库日期
*/
private String date_of_FG_inbound;
/**
* 子卷号
*/
private String container_name;
/**
* 产品规格(幅宽)
*/
private String width;
/**
* 产品厚度
*/
private String thickness;
/**
* 单位面积质量
*/
private BigDecimal mass_per_unit_area;
/**
* 净重
*/
private BigDecimal net_weight;
/**
* 长度
*/
private BigDecimal length;
/**
* 制造完成日期
*/
private String date_of_production;
/**
* 计划外分切的子卷
*/
private String is_un_plan_production;
/**
* 子卷的物性值1
*/
private String un_plan_product_property1;
/**
* 子卷的物性值2
*/
private String un_plan_product_property2;
/**
* 子卷的物性值3
*/
private String un_plan_product_property3;
/**
* 备注
*/
private String remark;
/**
* 创建人
*/
private Long create_id;
/**
* 创建人姓名
*/
private String create_name;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private String create_time;
/**
* 状态
*/
private String status;
/**
* 是否需要重打外包装标签
*/
private String isRePrintPackageBoxLabel;
/**
* 是否需要拆包重打子卷标签
*/
private String isUnPackBox;
/**
* 木箱料号
*/
private String box_type;
/**
* SAP批次
*/
private String sap_pcsn;
/**
* 交货单号
*/
private String vbeln;
/**
* 交货单行号
*/
private String posnr;
/**
* 木箱长度
*/
private String box_length;
/**
* 木箱宽度
*/
private String box_width;
/**
* 木箱高度
*/
private String box_high;
/**
* 销售订单描述
*/
private String sale_order_description;
/**
* 客户要求规格幅宽
*/
private String width_standard;
/**
* 物料标准厚度
*/
private String thickness_request;
/**
* 实际木箱自身重量
*/
private BigDecimal real_weight;
/**
* 包装关系类型
*/
private String sub_type;
/**
* 客户需求抗拉下限
*/
private String demand_limit;
/**
* 内控标准抗拉下限
*/
private String standard_limit;
/**
* 生产实际抗拉值
*/
private String actual_value;
/**
* 解绑删除标识
*/
private String need_delete;
/**
* 储存地点
*/
private String ext_code;
/**
* 获取主键值
*
* @return 主键值
*/
@Override
protected Serializable pkVal() {
return this.workorder_id;
}
}

View File

@@ -0,0 +1,15 @@
package org.nl.b_lms.pdm.subpackagerelation.dao.mapper;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* {@code @Description:} 子卷包装关系表(PdmBiSubpackagerelation)数据持久层
* {@code @Author:} gbx
*
* @since 2024-02-01
*/
public interface PdmBiSubpackagerelationMapper extends BaseMapper<PdmBiSubpackagerelation> {
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper">
</mapper>

View File

@@ -0,0 +1,210 @@
package org.nl.b_lms.pdm.subpackagerelation.dto;
import java.math.BigDecimal;
import java.io.Serializable;
import lombok.*;
import lombok.Data;
import lombok.Builder;
/**
* {@code @Description:} 子卷包装关系表(PdmBiSubpackagerelation)数据传输类
* {@code @Author:} gbx
*
* @since 2024-02-01
*/
@Data
@Builder
@ToString
public class PdmBiSubpackagerelationDto implements Serializable {
/**
* 子卷包装标识
*/
private Long workorder_id;
/**
* 木箱唯一码
*/
private String package_box_sn;
/**
* 箱内子卷数量
*/
private BigDecimal quanlity_in_box;
/**
* 木箱自身重量
*/
private BigDecimal box_weight;
/**
* 保质期
*/
private String quality_guaran_period;
/**
* 销售订单及行号
*/
private String sale_order_name;
/**
* 客户编号
*/
private String customer_name;
/**
* 客户名称
*/
private String customer_description;
/**
* 产品编码
*/
private String product_name;
/**
* 产品描述
*/
private String product_description;
/**
* 入库日期
*/
private String date_of_FG_inbound;
/**
* 子卷号
*/
private String container_name;
/**
* 产品规格(幅宽)
*/
private String width;
/**
* 产品厚度
*/
private String thickness;
/**
* 单位面积质量
*/
private BigDecimal mass_per_unit_area;
/**
* 净重
*/
private BigDecimal net_weight;
/**
* 长度
*/
private BigDecimal length;
/**
* 制造完成日期
*/
private String date_of_production;
/**
* 计划外分切的子卷
*/
private String is_un_plan_production;
/**
* 子卷的物性值1
*/
private String un_plan_product_property1;
/**
* 子卷的物性值2
*/
private String un_plan_product_property2;
/**
* 子卷的物性值3
*/
private String un_plan_product_property3;
/**
* 备注
*/
private String remark;
/**
* 创建人
*/
private Long create_id;
/**
* 创建人姓名
*/
private String create_name;
/**
* 创建时间
*/
private String create_time;
/**
* 状态
*/
private String status;
/**
* 是否需要重打外包装标签
*/
private String isRePrintPackageBoxLabel;
/**
* 是否需要拆包重打子卷标签
*/
private String isUnPackBox;
/**
* 木箱料号
*/
private String box_type;
/**
* SAP批次
*/
private String sap_pcsn;
/**
* 交货单号
*/
private String vbeln;
/**
* 交货单行号
*/
private String posnr;
/**
* 木箱长度
*/
private String box_length;
/**
* 木箱宽度
*/
private String box_width;
/**
* 木箱高度
*/
private String box_high;
/**
* 销售订单描述
*/
private String sale_order_description;
/**
* 客户要求规格幅宽
*/
private String width_standard;
/**
* 物料标准厚度
*/
private String thickness_request;
/**
* 实际木箱自身重量
*/
private BigDecimal real_weight;
/**
* 包装关系类型
*/
private String sub_type;
/**
* 客户需求抗拉下限
*/
private String demand_limit;
/**
* 内控标准抗拉下限
*/
private String standard_limit;
/**
* 生产实际抗拉值
*/
private String actual_value;
/**
* 解绑删除标识
*/
private String need_delete;
/**
* 储存地点
*/
private String ext_code;
}

View File

@@ -0,0 +1,24 @@
package org.nl.b_lms.pdm.subpackagerelation.dto;
import java.math.BigDecimal;
import lombok.Data;
import lombok.Builder;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.common.domain.query.BaseQuery;
/**
* {@code @Description:} 子卷包装关系表(PdmBiSubpackagerelation)查询参数类
* {@code @Author:} gbx
*
* @since 2024-02-01
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class PdmBiSubpackagerelationQuery extends BaseQuery<PdmBiSubpackagerelation> {
}

View File

@@ -0,0 +1,57 @@
package org.nl.b_lms.pdm.subpackagerelation.service;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;
import java.util.Set;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery;
/**
* {@code @Description:} 子卷包装关系表(PdmBiSubpackagerelation)服务接口层
* {@code @Author:} gbx
*
* @since 2024-02-01
*/
public interface IpdmBiSubpackagerelationService extends IService<PdmBiSubpackagerelation> {
/**
* 查询数据分页
*
* @param whereJson 查询条件
* @param pageable 分页参数
* @return IPage<PdmBiSubpackagerelation>
*/
IPage<PdmBiSubpackagerelation> queryAll(Map whereJson, PageQuery pageable);
/**
* 创建
*
* @param entity /
*/
void create(PdmBiSubpackagerelation entity);
/**
* 编辑
*
* @param entity /
*/
void update(PdmBiSubpackagerelation entity);
/**
* 多选删除
*
* @param ids /
*/
void deleteAll(Set<String> ids);
}

View File

@@ -0,0 +1,102 @@
package org.nl.b_lms.pdm.subpackagerelation.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
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 javax.annotation.Resource;
import java.util.Map;
import java.util.Set;
/**
* {@code @Description:} 子卷包装关系表(PdmBiSubpackagerelation)服务实现层
* {@code @Author:} gbx
*
* @since 2024-02-01
*/
@Service("pdmBiSubpackagerelationService")
public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpackagerelationMapper, PdmBiSubpackagerelation> implements IpdmBiSubpackagerelationService {
@Resource
private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper;
/**
* 查询数据分页
*
* @param whereJson 查询条件
* @param page 分页参数
*/
@Override
public IPage<PdmBiSubpackagerelation> queryAll(Map whereJson, PageQuery page) {
return pdmBiSubpackagerelationMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), new QueryWrapper<PdmBiSubpackagerelation>()
.lambda());
}
/**
* 创建
*
* @param entity 对象实体
*/
@Override
public void create(PdmBiSubpackagerelation entity) {
pdmBiSubpackagerelationMapper.insert(getBasicInfo(entity, true));
}
/**
* 编辑
*
* @param entity 对象实体
*/
@Override
public void update(PdmBiSubpackagerelation entity) {
// PdmBiSubpackagerelation dto = pdmBiSubpackagerelationMapper.selectById(entity.getId);
// if (dto == null) {
// throw new BadRequestException("不存在该数据!");
// }
pdmBiSubpackagerelationMapper.updateById(getBasicInfo(entity, false));
}
/**
* 多选删除
*
* @param ids 多个Id主键
*/
@Override
public void deleteAll(Set<String> ids) {
// 物理删除
pdmBiSubpackagerelationMapper.deleteBatchIds(ids);
}
/**
* 获取实体基础信息
*
* @param entity 对象实体
* @param isCreate 是否创建
*/
private PdmBiSubpackagerelation getBasicInfo(PdmBiSubpackagerelation entity, boolean isCreate) {
if (isCreate) {
entity.setCreate_id(Long.valueOf(SecurityUtils.getCurrentUserId()));
entity.setCreate_name(SecurityUtils.getCurrentNickName());
entity.setCreate_time(DateUtil.now());
}
return entity;
}
}

View File

@@ -24,7 +24,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")

View File

@@ -1,13 +1,10 @@
package org.nl.b_lms.sch.point.dao;
import java.math.BigDecimal;
import java.io.Serializable;
import java.math.BigDecimal;
import lombok.*;
import lombok.Data;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.AllArgsConstructor;
import com.baomidou.mybatisplus.annotation.*;
@@ -15,23 +12,25 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
/**
* {@code @Description:} 点位基础表(SchBasePoint)实体类
* {@code @Author:} gbx
*
* @since 2024-01-24
* @since 2024-01-25
*/
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")
@TableName("sch_base_point")
public class SchBasePoint extends Model<SchBasePoint> {
public class SchBasePoint extends Model<SchBasePoint>
{
private static final long serialVersionUID = -7739291296662381393L;
//@TableId(value = "id", type = IdType.NONE)
@@ -235,6 +234,8 @@ public class SchBasePoint extends Model<SchBasePoint> {
private String is_delete;
/**
* 创建人
*/
@@ -254,6 +255,8 @@ public class SchBasePoint extends Model<SchBasePoint> {
private String create_time;
/**
* 修改人
*/
@@ -273,6 +276,7 @@ public class SchBasePoint extends Model<SchBasePoint> {
private String update_time;
/**
* 位置
*/
@@ -285,13 +289,16 @@ public class SchBasePoint extends Model<SchBasePoint> {
private String material_code;
/**
* 获取主键值
*
* @return 主键值
*/
@Override
protected Serializable pkVal() {
protected Serializable pkVal()
{
return this.point_id;
}

View File

@@ -24,13 +24,14 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")
@TableName("st_ivt_coolregionio")
public class StIvtCoolregionio extends Model<StIvtCoolregionio> {
private static final long serialVersionUID = -7739291296662381393L;

View File

@@ -24,7 +24,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")

View File

@@ -24,7 +24,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")

View File

@@ -24,7 +24,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")

View File

@@ -24,7 +24,6 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")

View File

@@ -24,7 +24,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")

View File

@@ -23,7 +23,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@TableName("st_ivt_sbpointivt")

View File

@@ -24,7 +24,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")

View File

@@ -1,7 +1,7 @@
package org.nl.b_lms.sch.point.dao.mapper;
import org.nl.b_lms.sch.point.dao.SchBasePoint;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.b_lms.sch.point.dao.SchBasePoint;
/**
* {@code @Description:} 点位基础表(SchBasePoint)数据持久层

View File

@@ -1,13 +1,9 @@
package org.nl.b_lms.sch.point.dto;
import java.math.BigDecimal;
import lombok.Data;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.nl.b_lms.sch.point.dao.SchBasePoint;
import org.nl.common.domain.query.BaseQuery;
@@ -20,7 +16,7 @@ import org.nl.common.domain.query.BaseQuery;
@EqualsAndHashCode(callSuper = true)
@Data
@Builder
@NoArgsConstructor
public class SchBasePointQuery extends BaseQuery<SchBasePoint> {
}

View File

@@ -1,21 +1,12 @@
package org.nl.b_lms.sch.point.service;
import org.nl.b_lms.sch.point.dao.SchBasePoint;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Map;
import java.util.Set;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.b_lms.sch.point.dao.SchBasePoint;
import org.nl.common.domain.query.PageQuery;
/**
* {@code @Description:} 点位基础表(SchBasePoint)服务接口层
* {@code @Author:} gbx
*
* @since 2024-01-24
*/
public interface IschBasePointService extends IService<SchBasePoint> {

View File

@@ -4,8 +4,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.b_lms.sch.point.dao.SchBasePoint;
import org.nl.b_lms.sch.point.dao.mapper.SchBasePointMapper;
import org.nl.b_lms.sch.point.service.IschBasePointService;
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;

View File

@@ -17,7 +17,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")
@@ -30,6 +30,7 @@ public class SchBaseRegion extends Model<SchBaseRegion> {
/**
* 区域标识
*/
@TableId(value = "region_id", type = IdType.NONE)
private Long region_id;

View File

@@ -13,7 +13,7 @@ import org.nl.common.domain.query.BaseQuery;
*/
@Data
@Builder
@NoArgsConstructor
public class SchBaseRegionQuery extends BaseQuery<SchBaseRegion> {
}

View File

@@ -18,7 +18,6 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@SuppressWarnings("serial")
@@ -31,6 +30,7 @@ public class SchBaseTask extends Model<SchBaseTask> {
/**
* 任务标识
*/
@TableId(value = "task_id", type = IdType.NONE)
private Long task_id;

View File

@@ -16,7 +16,7 @@ import org.nl.common.domain.query.BaseQuery;
*/
@Data
@Builder
@NoArgsConstructor
public class SchBaseTaskQuery extends BaseQuery<SchBaseTask> {
}

View File

@@ -97,14 +97,14 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
* @param isCreate 是否创建
*/
private SchBaseTask getBasicInfo(SchBaseTask entity, boolean isCreate) {
// if (isCreate) {
// entity.setCreate_id(Long.valueOf(SecurityUtils.getCurrentUserId()));
// entity.setCreate_name(SecurityUtils.getCurrentNickName());
// entity.setCreate_time(DateUtil.now());
// }
// entity.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
// entity.setUpdate_optname(SecurityUtils.getCurrentNickName());
// entity.setUpdate_time(DateUtil.now());
if (isCreate) {
entity.setCreate_id(Long.valueOf(SecurityUtils.getCurrentUserId()));
entity.setCreate_name(SecurityUtils.getCurrentNickName());
entity.setCreate_time(DateUtil.now());
}
entity.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
entity.setUpdate_optname(SecurityUtils.getCurrentNickName());
entity.setUpdate_time(DateUtil.now());
return entity;
}

View File

@@ -0,0 +1,137 @@
package org.nl.b_lms.sch.tasks.packingArea;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* 满轴缓存位到管制区agv搬运任务
*
* @author gbx
* @since 2024-01-24
*/
@Service()
@RequiredArgsConstructor
@Slf4j
public class GzqTask extends AbstractAcsTask {
private final String THIS_CLASS = GzqTask.class.getName();
@Resource
private IschBaseTaskService taskService;
@Override
public List<AcsTaskDto> addTask() {
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getHandle_class, THIS_CLASS)
.eq(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode())
.eq(SchBaseTask::getIs_delete, 0)
);
taskList.forEach(r -> {
AcsTaskDto dto = AcsTaskDto.builder()
.ext_task_id(r.getTask_id().toString())
.task_code(r.getTask_code())
.task_type(r.getAcs_task_type())
.start_device_code(r.getPoint_code1())
.next_device_code(r.getPoint_code2())
.start_device_code2(r.getPoint_code3())
.next_device_code2(r.getPoint_code4())
.vehicle_code(r.getVehicle_code())
.priority(r.getPriority())
.remark(r.getRemark())
.product_area(r.getProduct_area())
.agv_system_type("2")
.build();
resultList.add(dto);
});
return resultList;
}
@Override
public void updateTaskStatus(JSONObject taskObj, String status) {
}
@Override
public String createTask(JSONObject form) {
Assert.notNull(form, "请求参数不能为空");
String task_type = form.getString("task_type");
if (StrUtil.isBlank(task_type)) {
throw new BadRequestException("业务类型不能为空");
}
String point_code1 = form.getString("point_code1");
if (StrUtil.isBlank(point_code1)) {
throw new BadRequestException("起点不能为空");
}
String point_code2 = form.getString("point_code2");
if (StrUtil.isBlank(point_code2)) {
throw new BadRequestException("下一点不能为空");
}
String point_code3 = form.getString("point_code3");
String point_code4 = form.getString("point_code4");
String vehicle_code = form.getString("vehicle_code");
if (StrUtil.isBlank(vehicle_code)) {
throw new BadRequestException("载具号不能为空");
}
JSONObject json = new JSONObject();
json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_type", form.getString("task_type"));
json.put("vehicle_code", form.getString("vehicle_code"));
String task_status = form.getString("task_status");
if (StrUtil.isEmpty(task_status)) {
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
} else {
json.put("task_status", task_status);
}
json.put("point_code1", point_code1);
json.put("point_code2", point_code2);
json.put("point_code3", point_code3);
json.put("point_code4", point_code4);
json.put("handle_class", this.getClass().getName());
json.put("create_id", SecurityUtils.getCurrentUserId());
json.put("create_name", SecurityUtils.getCurrentUsername());
json.put("create_time", DateUtil.now());
json.put("priority", "1");
json.put("acs_task_type", "9");
json.put("response_param", form.getString("truss_type"));
json.put("request_param", form.getString("request_param"));
taskService.save(json.toJavaObject(SchBaseTask.class));
//如果目标点位没有空位先创建不下发
if (form.getBoolean("isSend")) {
this.immediateNotifyAcs(json.getString("task_id"));
}
return json.getString("task_id");
}
@Override
public void forceFinish(String task_id) {
}
@Override
public void cancel(String task_id) {
}
}

View File

@@ -0,0 +1,134 @@
package org.nl.b_lms.sch.tasks.packingArea;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* 装箱区到装装箱对接位搬运任务
*
* @author gbx
* @since 2024-02-01
*/
@Service()
@RequiredArgsConstructor
@Slf4j
public class ZxDjwTask extends AbstractAcsTask {
@Resource
private IschBaseTaskService taskService;
private final String THIS_CLASS = ZxDjwTask.class.getName();
@Override
public List<AcsTaskDto> addTask() {
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getHandle_class, THIS_CLASS)
.eq(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode())
.eq(SchBaseTask::getIs_delete, 0)
);
taskList.forEach(r -> {
AcsTaskDto dto = AcsTaskDto.builder()
.ext_task_id(r.getTask_id().toString())
.task_code(r.getTask_code())
.task_type(r.getAcs_task_type())
.start_device_code(r.getPoint_code1())
.next_device_code(r.getPoint_code2())
.start_device_code2(r.getPoint_code3())
.next_device_code2(r.getPoint_code4())
.vehicle_code(r.getVehicle_code())
.priority(r.getPriority())
.remark(r.getRemark())
.product_area(r.getProduct_area())
.agv_system_type("2")
.build();
resultList.add(dto);
});
return resultList;
}
@Override
public void updateTaskStatus(JSONObject taskObj, String status) {
}
@Override
public String createTask(JSONObject form) {
Assert.notNull(form, "请求参数不能为空");
String task_type = form.getString("task_type");
if (StrUtil.isBlank(task_type)) {
throw new BadRequestException("业务类型不能为空");
}
String point_code1 = form.getString("point_code1");
if (StrUtil.isBlank(point_code1)) {
throw new BadRequestException("起点不能为空");
}
String point_code2 = form.getString("point_code2");
if (StrUtil.isBlank(point_code2)) {
throw new BadRequestException("下一点不能为空");
}
String point_code3 = form.getString("point_code3");
String point_code4 = form.getString("point_code4");
String vehicle_code = form.getString("vehicle_code");
if (StrUtil.isBlank(vehicle_code)) {
throw new BadRequestException("载具号不能为空");
}
JSONObject json = new JSONObject();
json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_type", form.getString("task_type"));
json.put("vehicle_code", form.getString("vehicle_code"));
String task_status = form.getString("task_status");
if (StrUtil.isEmpty(task_status)) {
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
} else {
json.put("task_status", task_status);
}
json.put("point_code1", point_code1);
json.put("point_code2", point_code2);
json.put("point_code3", point_code3);
json.put("point_code4", point_code4);
json.put("handle_class", this.getClass().getName());
json.put("create_id", SecurityUtils.getCurrentUserId());
json.put("create_name", SecurityUtils.getCurrentUsername());
json.put("create_time", DateUtil.now());
json.put("priority", "1");
json.put("acs_task_type", "9");
json.put("response_param", form.getString("truss_type"));
json.put("request_param", form.getString("request_param"));
taskService.save(json.toJavaObject(SchBaseTask.class));
//如果目标点位没有空位先创建不下发
if (form.getBoolean("isSend")) {
this.immediateNotifyAcs(json.getString("task_id"));
}
return json.getString("task_id");
}
@Override
public void forceFinish(String task_id) {
}
@Override
public void cancel(String task_id) {
}
}

View File

@@ -0,0 +1,191 @@
package org.nl.b_lms.sch.tasks.packingArea;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.pdm.productionplan.service.IpdmBiSlittingproductionplanService;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* 待检区到装箱区搬运任务
*
* @author gbx
* @since 2024-02-01
*/
@Service()
@RequiredArgsConstructor
@Slf4j
public class ZxqTask extends AbstractAcsTask {
@Resource
private IschBaseTaskService taskService;
@Resource
private ZxDjwTask zxDjwTask;
@Resource
private IbstIvtPackageinfoivtService packageinfoivtService;
@Resource
private IpdmBiSubpackagerelationService subpackageRelationService;
private final String THIS_CLASS = ZxqTask.class.getName();
@Override
public List<AcsTaskDto> addTask() {
ArrayList<AcsTaskDto> resultList = new ArrayList<>();
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getHandle_class, THIS_CLASS)
.eq(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode())
.eq(SchBaseTask::getIs_delete, 0)
);
taskList.forEach(r -> {
AcsTaskDto dto = AcsTaskDto.builder()
.ext_task_id(r.getTask_id().toString())
.task_code(r.getTask_code())
.task_type(r.getAcs_task_type())
.start_device_code(r.getPoint_code1())
.next_device_code(r.getPoint_code2())
.start_device_code2(r.getPoint_code3())
.next_device_code2(r.getPoint_code4())
.vehicle_code(r.getVehicle_code())
.priority(r.getPriority())
.remark(r.getRemark())
.product_area(r.getProduct_area())
.agv_system_type("2")
.build();
resultList.add(dto);
});
return resultList;
}
@Override
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(StringUtils.isNotBlank(taskObj.getString("task_code1")), SchBaseTask::getTask_code, taskObj.getString("task_code1")), false);
if (schBaseTask == null) {
throw new BadRequestException("待检区到空载具缓存位搬运空载具桁架任务更新接口任务号为空!");
}
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
taskService.update(schBaseTask);
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
//1.更改任务状态为完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
taskService.update(schBaseTask);
//2.改变起点点位状态
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("")).set("container_name", null).eq("point_code", schBaseTask.getPoint_code1()));
//更新库存记录
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
//todo 3.空木箱出库任务中,回调判断装箱区是否存在木箱号对应的子卷,如果存在,就创建搬运任务
//4.查询子卷对应的包装关系表,判断装箱位的木箱号是否为子卷对应的木箱号,是,创建搬运任务到装箱位,否,什么都不做
PdmBiSubpackagerelation pdmBiSubpackagerelation = subpackageRelationService.getOne(new LambdaUpdateWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getContainer_name, schBaseTask.getVehicle_code()), false);
if (pdmBiSubpackagerelation != null) {
//查询目标点位信息
BstIvtPackageinfoivt zxqPoint = packageinfoivtService.getOne(new LambdaUpdateWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_code, schBaseTask.getPoint_code2()));
//查询装箱对接位的木箱号和区域与子卷对应的木箱号与区域是否匹配
BstIvtPackageinfoivt zxdjwPoint = packageinfoivtService.getOne(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getContainer_name, pdmBiSubpackagerelation.getPackage_box_sn()).eq(BstIvtPackageinfoivt::getBlock, zxqPoint.getBlock()));
if (zxdjwPoint != null) {
//创建搬运任务到装箱位
JSONObject jo = new JSONObject();
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("装箱区->装箱对接位"));
jo.put("point_code1", schBaseTask.getPoint_code2());
jo.put("point_code2", zxdjwPoint.getPoint_code());
jo.put("vehicle_code", schBaseTask.getVehicle_code());
zxDjwTask.createTask(jo);
}
}
}
}
@Override
public String createTask(JSONObject form) {
Assert.notNull(form, "请求参数不能为空");
String task_type = form.getString("task_type");
if (StrUtil.isBlank(task_type)) {
throw new BadRequestException("业务类型不能为空");
}
String point_code1 = form.getString("point_code1");
if (StrUtil.isBlank(point_code1)) {
throw new BadRequestException("起点不能为空");
}
String point_code2 = form.getString("point_code2");
if (StrUtil.isBlank(point_code2)) {
throw new BadRequestException("下一点不能为空");
}
String point_code3 = form.getString("point_code3");
String point_code4 = form.getString("point_code4");
String vehicle_code = form.getString("vehicle_code");
if (StrUtil.isBlank(vehicle_code)) {
throw new BadRequestException("载具号不能为空");
}
JSONObject json = new JSONObject();
json.put("task_id", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_type", form.getString("task_type"));
json.put("vehicle_code", form.getString("vehicle_code"));
String task_status = form.getString("task_status");
if (StrUtil.isEmpty(task_status)) {
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
} else {
json.put("task_status", task_status);
}
json.put("point_code1", point_code1);
json.put("point_code2", point_code2);
json.put("point_code3", point_code3);
json.put("point_code4", point_code4);
json.put("handle_class", this.getClass().getName());
json.put("create_id", SecurityUtils.getCurrentUserId());
json.put("create_name", SecurityUtils.getCurrentUsername());
json.put("create_time", DateUtil.now());
json.put("priority", "1");
json.put("acs_task_type", "9");
json.put("response_param", form.getString("truss_type"));
json.put("request_param", form.getString("request_param"));
taskService.save(json.toJavaObject(SchBaseTask.class));
//如果目标点位没有空位先创建不下发
if (form.getBoolean("isSend")) {
this.immediateNotifyAcs(json.getString("task_id"));
}
return json.getString("task_id");
}
@Override
public void forceFinish(String task_id) {
}
@Override
public void cancel(String task_id) {
}
}

View File

@@ -0,0 +1,44 @@
package org.nl.common.enums;
import java.util.Arrays;
import java.util.Optional;
/**
* 子卷等级
* @author gbx
* @since 2023-01-27
*/
public enum ContainerLevelEnum {
//
BEST(1, "A+", "1"),
WELL(2, "A", "2"),
COMMON(3, "A-", "3"),
REWORK(4, "返切", "4"),
SCRAP(5, "报废", "5"),
CONTROL(6, "管制", "6"),
OTHER(7, "其他", "7");
private int index;
private String name;
private String code;
public int getIndex() { return index;}
public String getName() {
return name;
}
public String getCode() {
return code;
}
ContainerLevelEnum(int index, String name, String code) {
this.index = index;
this.name = name;
this.code = code;
}
public static ContainerLevelEnum getType(String type) {
Optional<ContainerLevelEnum> first = Arrays.stream(ContainerLevelEnum.values()).filter(a -> a.getCode().equals(type)).findFirst();
return first.orElse(ContainerLevelEnum.OTHER);
}
}

View File

@@ -0,0 +1,48 @@
package org.nl.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.utils.MapOf;
import org.nl.modules.common.exception.BadRequestException;
import java.util.Map;
/**
* 装箱区点位库存枚举
*
* @author gbx
* @since 2024-01-31
*/
@AllArgsConstructor
@Getter
public enum PackageInfoIvtEnum {
//点位类型
POINT_STATUS(MapOf.of("满轴缓存位", "1", "空载具缓存位", "2", "待检区", "3", "管制区", "4", "装箱区", "5", "装箱位", "6")),
TASK_TYPE(MapOf.of("输送线->满轴缓存位", "010701", "满轴缓存位->待检区", "010702", "满轴缓存位->管制区", "010703", "放空(空载具缓存位->输送线)", "010704", "取空(待检区->空载具缓存位)", "010705", "待检区->管制区", "010706","管制区->待检区", "010707","待检区->装箱区", "010708", "装箱区->装箱对接位", "010709")),
//是否
IS_USED(MapOf.of("启用", "1", "未启用", "0")),
//位置
POINT_LOCATION(MapOf.of("", "0", "", "1")),
//库存状态
IVT_STATUS(MapOf.of("", "0", "1", "空载具", "2", "有子卷"));
private Map<String, String> code;
public String code(String desc) {
String code = this.getCode().get(desc);
if (StringUtils.isNotEmpty(code)) {
return code;
}
throw new BadRequestException(this.name() + "对应类型" + desc + "未定义");
}
public String check(String code) {
for (Map.Entry<String, String> entry : this.getCode().entrySet()) {
if (entry.getValue().equals("code")) {
return entry.getValue();
}
}
throw new BadRequestException(this.name() + "对应类型" + code + "未定义");
}
}

View File

@@ -219,7 +219,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
sysDictMapper.remove(new QueryWrapper<Dict>().eq("para1", menu.getMenuId()).eq("code", DictConstantPool.DICT_SYS_CODE));
}
if (!resources.getTitle().equals(menu.getTitle())) {
sysDictMapper.update(new UpdateWrapper<Dict>().set("label", resources.getTitle()).eq("para1", menu.getMenuId()).eq("code", DictConstantPool.DICT_SYS_CODE));
sysDictMapper.update(new UpdateWrapper<Dict>().set("label", resources.getTitle()).eq("para1", menu.getMenuId())
.eq("code", DictConstantPool.DICT_SYS_CODE));
}
menu.setTitle(resources.getTitle());
menu.setComponent(resources.getComponent());

View File

@@ -29,12 +29,16 @@ public class AcsToWmsController {
@PostMapping("/status")
@Log(value = "ACS给WMS反馈任务状态", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
@SaIgnore
public ResponseEntity<Object> receiveTaskStatusAcs(@RequestBody String string) {
return new ResponseEntity<>(acsToWmsService.receiveTaskStatusAcs(string), HttpStatus.OK);
}
@PostMapping("/orderFinish")
@Log(value = "ACS给WMS下发工单完成状态", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
@@ -137,4 +141,13 @@ public class AcsToWmsController {
}
@PostMapping("/sendProductToFirstFloor")
@Log(value = "成品子卷到达一楼输送线", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
@SaIgnore
public ResponseEntity<Object> sendProductToFirstFloor(@RequestBody JSONObject json) {
return new ResponseEntity<>(acsToWmsService.sendProductToFirstFloor(json), HttpStatus.OK);
}
}

View File

@@ -79,6 +79,9 @@ public interface AcsToWmsService {
*/
JSONObject shipDeviceUpdate(JSONObject whereJson);
/**
* ACS客户端--->LMS服务端
* 输送线光电无货上报
@@ -105,4 +108,17 @@ public interface AcsToWmsService {
* 点位初始化
*/
void initPoint();
/**
* ACS客户端--->LMS服务端
* 成品子卷到达一楼输送线
*
* @param whereJson 条件
* @return JSONObject
*/
JSONObject sendProductToFirstFloor(JSONObject whereJson);
}

View File

@@ -7,11 +7,28 @@ 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.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.google.common.collect.Interner;
import com.google.common.collect.Interners;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
import org.nl.b_lms.sch.point.dao.mapper.SchBasePointMapper;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.point.service.IschBasePointService;
import org.nl.b_lms.sch.point.service.impl.BstIvtPackageinfoivtServiceImpl;
import org.nl.b_lms.sch.point.service.impl.SchBasePointServiceImpl;
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 org.nl.b_lms.sch.task.service.impl.SchBaseTaskServiceImpl;
import org.nl.b_lms.sch.tasks.packingArea.MzhcwTask;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.WQL;
@@ -38,11 +55,14 @@ import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@@ -66,6 +86,83 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
private final ISysNoticeService noticeService;
@Resource
private IschBaseTaskService taskService;
@Resource
private IschBasePointService pointService;
@Resource
private IbstIvtPackageinfoivtService packageinfoivtService;
@Resource
private MzhcwTask mzhcwTask;
/**
* 成品子卷到达一楼输送线
*/
@Override
public JSONObject sendProductToFirstFloor(JSONObject whereJson) {
log.info("sendProductToFirstFloor--------------------------" + whereJson.toString());
JSONObject result = new JSONObject();
String task_code1 = whereJson.getString("task_code1");
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(StringUtils.isNotBlank(task_code1), SchBaseTask::getTask_code, task_code1));
if (schBaseTask == null) {
throw new BadRequestException("接口sendProductToFirstFloor任务号为空");
}
// JSONObject whereJson 应该传子卷信息,子卷等级,载具号,任务号,车间号
// 先查询满轴缓存位是否有可用库位,有创建搬运任务
// 任务完成创建空载具补充到输送线桁架任务子卷搬运至待检区或或管制区agv任务
// 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
// 这个情况是有agv任务在搬去待检区或管制区的路上还没有更新任务状态需要查询是否有这种任务等这个任务更新完后
// 再补发之前创建的输送线到满轴缓存位任务;
//1.查询满轴缓存位是否有空位
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>().eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
JSONObject jo = new JSONObject();
//todo 添加任务类型
jo.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"));
//一楼到输送线任务的目标点为当前位置,为起点
jo.put("point_code1", schBaseTask.getPoint_code2());
//任意一个满轴缓存位为终点
jo.put("point_code2", bstIvtPackageinfoivtList.get(0).getPoint_code());
//获取子卷号
jo.put("vehicle_code", whereJson.getString("container_name1"));
if (CollectionUtils.isNotEmpty(bstIvtPackageinfoivtList)) {
jo.put("isSend", true);
mzhcwTask.createTask(jo);
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");
return result;
} else {
//满轴缓存位点位
List<BstIvtPackageinfoivt> packageinfoivtList = packageinfoivtService.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位")));
//todo 查找正在搬运到待检区的任务,假设只有一个,现场其实有多个车正在搬运过去
List<SchBaseTask> taskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
//执行中
.eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode())
.and(
r -> r.in(SchBaseTask::getPoint_code1, packageinfoivtList)
));
// 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
List<SchBaseTask> existTaskList = taskService.list(new LambdaUpdateWrapper<SchBaseTask>()
//是否存在已创建的目标点相同的未下发的任务
.eq(SchBaseTask::getPoint_code2, taskList.get(0).getPoint_code1())
.eq(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode()));
if (CollectionUtils.isEmpty(existTaskList)) {
jo.put("point_code2", taskList.get(0).getPoint_code1());
jo.put("isSend", false);
mzhcwTask.createTask(jo);
}
result.put("status", HttpStatus.OK.value());
result.put("message", "反馈成功!");
return result;
}
}
/**
* task_id任务标识
* task_code任务编码
@@ -1282,6 +1379,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
return result;
}
//创建气胀轴放货任务
private JSONObject createTask(JSONObject result, String product_area, JSONObject cbz_jo, String cbz_size, String cbz_generation) {
JSONObject jo = new JSONObject();

View File

@@ -114,4 +114,12 @@ public class MesToLmsController {
}
@PostMapping("/sendTargetHouse")
@Log("MES传递给LMS入线边库或者入成品库")
@SaIgnore
public ResponseEntity<Object> sendTargetHouse(@RequestBody JSONObject jo) {
return new ResponseEntity<>(mesToLmsService.sendTargetHouse(jo), HttpStatus.OK);
}
}

View File

@@ -62,4 +62,12 @@ public interface MesToLmsService {
JSONObject sendAuditResult(JSONObject param);
JSONObject sendProcessInfo(JSONObject param);
/**
* MES传递给LMS入线边库或者入成品库
*/
JSONObject sendTargetHouse(JSONObject param);
}

View File

@@ -7,9 +7,18 @@ 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.update.LambdaUpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.ProcessTask;
import org.nl.b_lms.sch.tasks.packingArea.DjqTask;
import org.nl.b_lms.sch.tasks.packingArea.GzqTask;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
@@ -28,8 +37,11 @@ import org.nl.wms.st.instor.service.impl.ProductScrapServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@@ -42,6 +54,15 @@ public class MesToLmsServiceImpl implements MesToLmsService {
private final InService inService;
@Resource
private DjqTask djqTask;
@Resource
private GzqTask gzqTask;
@Resource
private IbstIvtPackageinfoivtService packageinfoivtService;
/**
* 生箔烘箱:
* 母卷批次创建信息发送智能物流MES生箔工序Move In
@@ -1547,4 +1568,68 @@ public class MesToLmsServiceImpl implements MesToLmsService {
log.info("sendProcessInfo接口输出参数为-------------------" + resultParam.toString());
return resultParam;
}
@Override
public JSONObject sendTargetHouse(JSONObject param) {
log.info("sendTargetHouse输入参数为-------------------" + param.toString());
JSONObject resultParam = new JSONObject();
try {
String containerName = param.getString("ContainerName");
String TargetHouse = param.getString("TargetHouse");
if (StringUtils.isBlank(containerName)) {
throw new BadRequestException("传入的母卷号不能为空!");
}
if (StringUtils.isBlank(TargetHouse)) {
throw new BadRequestException("传入的目标库不能为空!");
}
//待检区和管制区库位信息
List<BstIvtPackageinfoivt> bstIvtPackageinfoivtList = packageinfoivtService
.list(new LambdaUpdateWrapper<BstIvtPackageinfoivt>()
.in(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.POINT_STATUS.code("管制区"))
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用")).orderByAsc(BstIvtPackageinfoivt::getSort_seq));
//子卷信息
BstIvtPackageinfoivt containerInfo =
bstIvtPackageinfoivtList.stream().filter(r -> r.getContainer_name().equals(containerName)).collect(Collectors.toList()).get(0);
JSONObject toDjqTask = new JSONObject();
toDjqTask.put("vehicle_code", containerName);
//0 管制区 1待检区
if ("0".equals(TargetHouse)) {
if (containerInfo.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区"))) {
List<BstIvtPackageinfoivt> djqList = bstIvtPackageinfoivtList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("待检区")) && r.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code(""))).collect(Collectors.toList());
//待检区有空位,搬到待检区
if (CollectionUtils.isNotEmpty(djqList)) {
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("管制区->待检区"));
toDjqTask.put("point_code1", containerInfo.getPoint_code());
toDjqTask.put("point_code2", djqList.get(0).getPoint_code());
djqTask.createTask(toDjqTask);
}
}
} else if ("1".equals(TargetHouse)) {
if (containerInfo.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("管制区"))) {
List<BstIvtPackageinfoivt> gzqList = bstIvtPackageinfoivtList.stream().filter(r -> r.getPoint_status().equals(PackageInfoIvtEnum.POINT_STATUS.code("管制区")) && r.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code(""))).collect(Collectors.toList());
//管制区有空位
if (CollectionUtils.isNotEmpty(gzqList)) {
toDjqTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("管制区->待检区"));
toDjqTask.put("point_code1", containerInfo.getPoint_code());
toDjqTask.put("point_code2", gzqList.get(0).getPoint_code());
gzqTask.createTask(toDjqTask);
}
}
}
resultParam.put("RTYPE", "S");
resultParam.put("Code", "0");
resultParam.put("RTMSG", "操作成功!");
} catch (Exception e) {
resultParam.put("RTYPE", "E");
resultParam.put("Code", "1");
resultParam.put("RTMSG", "操作失败!" + e.getMessage());
}
log.info("sendTargetHouse接口输出参数为-------------------" + resultParam);
return resultParam;
}
}

View File

@@ -85,71 +85,6 @@ public class CutTrussTask extends AbstractAcsTask {
String task_id = taskObj.getString("task_id");
JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0);
if (StrUtil.equals(status, "0")) {
// 更新删除字段
jsonTask.put("is_delete", "1");
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
//桁架标准任务
if ("010403".equals(jsonTask.getString("task_type"))) {
//更新入站气涨轴的分切计划状态
JSONArray plan_jo = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status IN ('04','05')").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code") + "状态为:入站中或入站完成的分切计划!");
}
for (int i = 0; i < plan_jo.size(); i++) {
JSONObject plan_row = plan_jo.getJSONObject(i);
plan_row.put("status", "03");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
//更新出站气涨轴的分切计划状态
JSONArray plan_jo2 = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code2") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status = '06'").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo2)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code2") + "状态为:出站中的分切计划!");
}
for (int i = 0; i < plan_jo2.size(); i++) {
JSONObject plan_row = plan_jo2.getJSONObject(i);
plan_row.put("status", "05");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
}
//分切>输送线 子卷出站
if ("010404".equals(jsonTask.getString("task_type"))) {
if (!jsonTask.getString("vehicle_code").contains("废箔")) {
//更新出站气涨轴的分切计划状态
JSONArray plan_jo2 = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status = '06'").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo2)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code") + "状态为:出站中的分切计划!");
}
for (int i = 0; i < plan_jo2.size(); i++) {
JSONObject plan_row = plan_jo2.getJSONObject(i);
plan_row.put("status", "05");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
}
}
//分切>输送线 子卷入站
if ("010405".equals(jsonTask.getString("task_type"))) {
//更新入站气涨轴的分切计划状态
JSONArray plan_jo = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status IN ('04','05') ").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code") + "状态为:入站中或入站完成的分切计划!");
}
for (int i = 0; i < plan_jo.size(); i++) {
JSONObject plan_row = plan_jo.getJSONObject(i);
plan_row.put("status", "03");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
}
}
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode());
@@ -165,7 +100,6 @@ public class CutTrussTask extends AbstractAcsTask {
jsonTask.put("update_time", DateUtil.now());
taskTab.update(jsonTask);
//桁架标准任务,双工位任务
if ("010403".equals(jsonTask.getString("task_type"))) {
//更新分切机对应位置的气涨轴
@@ -264,84 +198,6 @@ public class CutTrussTask extends AbstractAcsTask {
cutConveyorTask.createTask(form);
}
//子卷入站
if ("010405".equals(jsonTask.getString("task_type"))) {
//更新输送线的气涨轴编码
JSONObject delivery_point = WQLObject.getWQLObject("ST_IVT_DeliveryPointIvt").query("point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(delivery_point)) {
throw new BadRequestException("未查询到对应的输送线点位!");
}
delivery_point.put("qzzno", "");
delivery_point.put("point_status", "02");
WQLObject.getWQLObject("ST_IVT_DeliveryPointIvt").update(delivery_point);
//更新入站气涨轴的分切计划状态
JSONArray plan_jo = WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").query("qzzno = '" + jsonTask.getString("vehicle_code") + "' AND is_child_tz_ok = '1' AND is_child_ps_ok = '1' AND is_delete = '0' AND status IN ('04','05') ").getResultJSONArray(0);
if (ObjectUtil.isEmpty(plan_jo)) {
throw new BadRequestException("未查询到气涨轴:" + jsonTask.getString("vehicle_code") + "对应的分切计划!");
}
for (int i = 0; i < plan_jo.size(); i++) {
JSONObject plan_row = plan_jo.getJSONObject(i);
plan_row.put("status", "05");
plan_row.put("end_time", DateUtil.now());
WQLObject.getWQLObject("PDM_BI_SlittingProductionPlan").update(plan_row);
}
//如果桁架任务执行完,右侧的输送线上存在气涨轴,则生成一个输送出的任务,防止左侧空载具挡住右侧气涨轴进行横移
log.debug("如果桁架任务执行完,缓存位的输送线上存在气涨轴,则对上料位的空载具生成一个输送出的任务");
char dtl_type = jsonTask.getString("point_code1").charAt(jsonTask.getString("point_code1").length() - 1);
if (Integer.valueOf(String.valueOf(dtl_type)) % 2 != 0) {
String point_location = delivery_point.getString("point_location");
String product_area = delivery_point.getString("product_area");
String sort_seq = delivery_point.getString("sort_seq");
JSONObject right_point = WQL.getWO("PDA_02")
.addParam("point_location", point_location)
.addParam("point_code", jsonTask.getString("point_code1"))
.addParam("product_area", product_area)
.addParam("sort_seq", sort_seq)
.addParam("find_type", "3")
.addParam("flag", "17").process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(right_point)) {
log.debug("生成一个输送线出库任务");
//生成一个输送线出库任务
JSONObject form = new JSONObject();
form.put("point_code1", jsonTask.getString("point_code1"));
JSONObject ss_jo = WQLObject.getWQLObject("sch_base_point").query("product_area = '" + delivery_point.getString("product_area") + "' AND point_type = '7'").uniqueResult(0);
form.put("point_code2", ss_jo.getString("point_code"));
if (StrUtil.isEmpty(delivery_point.getString("vehicle_code"))) {
throw new BadRequestException("点位:" + delivery_point.getString("point_code") + "载具号为空!");
}
form.put("vehicle_code2", delivery_point.getString("vehicle_code"));
//分切输送出
form.put("task_type", "010401");
form.put("product_area", delivery_point.getString("product_area"));
cutConveyorTask.createTask(form);
} else {
right_point = WQL.getWO("PDA_02")
.addParam("point_location", point_location)
.addParam("point_code", jsonTask.getString("point_code1"))
.addParam("product_area", product_area)
.addParam("sort_seq", sort_seq)
.addParam("find_type", "4")
.addParam("flag", "18").process().uniqueResult(0);
if (ObjectUtil.isNotEmpty(right_point)) {
//判断对应缓存位是否存在需要末次下卷或者废箔下卷的任务
JSONObject task_jo = WQLObject.getWQLObject("sch_base_task").query("vehicle_code2 = '" + right_point.getString("vehicle_code") + "' AND is_delete = '0' AND task_status = '02'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(task_jo)) {
if ("010404".equals(task_jo.getString("task_type"))) {
//出站
task_jo.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
task_jo.put("point_code2", jsonTask.getString("point_code1"));
task_jo.put("vehicle_code2", delivery_point.getString("vehicle_code"));
WQLObject.getWQLObject("sch_base_task").update(task_jo);
new CutTrussTask().immediateNotifyAcs(null);
}
}
}
}
}
}
}
}