feat: 分切上料
This commit is contained in:
@@ -41,6 +41,13 @@ public class AcsToWmsController {
|
||||
return new ResponseEntity<>(acsToWmsService.apply(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/outHotTaskApply")
|
||||
@Log(value = "申请出烘箱任务", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> outHotTaskApply(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.outHotTaskApply(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/againApply")
|
||||
@Log(value = "二次申请任务", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
|
||||
@SaIgnore
|
||||
|
||||
@@ -118,4 +118,11 @@ public interface AcsToWmsService {
|
||||
* @return /
|
||||
*/
|
||||
JSONObject actionFinishRequest2(JSONObject param);
|
||||
|
||||
/**
|
||||
* 出烘箱
|
||||
* @param whereJson /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject outHotTaskApply(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.TaskFactory;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.service.BakingOperationService;
|
||||
import org.redisson.api.RLock;
|
||||
import org.redisson.api.RedissonClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -29,6 +30,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private TaskFactory taskFactory;
|
||||
@Autowired
|
||||
private BakingOperationService bakingOperationService;
|
||||
@Override
|
||||
public Map<String, Object> receiveTaskStatusAcs(String string) throws InterruptedException {
|
||||
log.info("acs向lms反馈任务状态,请求参数:--------------------------------------" + string);
|
||||
@@ -159,4 +162,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
public JSONObject actionFinishRequest2(JSONObject param) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject outHotTaskApply(JSONObject whereJson) {
|
||||
return bakingOperationService.acsRequestOutHotTask(whereJson);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.pda.mps.service.BakingService;
|
||||
import org.nl.wms.pda.mps.service.BakingPdaService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -22,14 +22,14 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RequestMapping("/api/pda/baking")
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
public class BakingController {
|
||||
public class BakingPdaController {
|
||||
|
||||
@Autowired
|
||||
private BakingService bakingService;
|
||||
private BakingPdaService bakingPdaService;
|
||||
|
||||
@PostMapping("/bakingQuality")
|
||||
@Log("烘烤质检")
|
||||
public ResponseEntity<Object> bakingQuality(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(bakingService.bakingQuality(whereJson), HttpStatus.OK);
|
||||
return new ResponseEntity<>(bakingPdaService.bakingQuality(whereJson), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package org.nl.wms.pda.mps.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.pda.mps.service.SlitterPdaService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 分切
|
||||
* @Date: 2024/8/12
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/api/pda/slitter")
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
public class SlitterPdaController {
|
||||
@Autowired
|
||||
private SlitterPdaService slitterPdaService;
|
||||
|
||||
/**
|
||||
* 获取生箔工单信息
|
||||
* @param whereJson /
|
||||
* @return /
|
||||
*/
|
||||
@PostMapping("/queryOrderInfo")
|
||||
public ResponseEntity<Object> queryOrderInfo(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(slitterPdaService.queryOrderInfo(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/callSlitterRoll")
|
||||
@Log("呼叫母卷")
|
||||
public ResponseEntity<Object> callSlitterRoll(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(slitterPdaService.callSlitterRoll(whereJson), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/allowCoiling")
|
||||
@Log("允许上卷")
|
||||
public ResponseEntity<Object> allowCoiling(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(slitterPdaService.allowCoiling(whereJson), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/vehicleReturn")
|
||||
@Log("空轴送回")
|
||||
public ResponseEntity<Object> vehicleReturn(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(slitterPdaService.vehicleReturn(whereJson), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
* @Description:
|
||||
* @Date: 2024/8/12
|
||||
*/
|
||||
public interface BakingService {
|
||||
public interface BakingPdaService {
|
||||
/**
|
||||
* 质检
|
||||
* @param param /
|
||||
@@ -0,0 +1,38 @@
|
||||
package org.nl.wms.pda.mps.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2024/8/12
|
||||
*/
|
||||
public interface SlitterPdaService {
|
||||
/**
|
||||
* 查询烘烤区域的母卷信息
|
||||
* @param param /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject queryOrderInfo(JSONObject param);
|
||||
|
||||
/**
|
||||
* 呼叫母卷 - 分切上料或者送空上轴
|
||||
* @param param /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject callSlitterRoll(JSONObject param);
|
||||
|
||||
/**
|
||||
* 允许上卷
|
||||
* @param param /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject allowCoiling(JSONObject param);
|
||||
|
||||
/**
|
||||
* 空轴送回
|
||||
* @param param /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject vehicleReturn(JSONObject param);
|
||||
}
|
||||
@@ -5,7 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.pda.mps.service.BakingService;
|
||||
import org.nl.wms.pda.mps.service.BakingPdaService;
|
||||
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
@@ -23,7 +23,7 @@ import java.util.List;
|
||||
*/
|
||||
@Service
|
||||
@Slf4j
|
||||
public class BakingServiceImpl implements BakingService {
|
||||
public class BakingPdaServiceImpl implements BakingPdaService {
|
||||
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@@ -0,0 +1,133 @@
|
||||
package org.nl.wms.pda.mps.service.impl;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.pda.mps.service.SlitterPdaService;
|
||||
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||
import org.nl.wms.pdm.ivt.dao.StIvtCutpointivt;
|
||||
import org.nl.wms.pdm.ivt.service.IstIvtCutpointivtService;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.tasks.slitter.SlitterSendRollAGVTask;
|
||||
import org.nl.wms.sch.task_manage.tasks.slitter.SlitterUpTrussTask;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2024/8/12
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class SlitterPdaServiceImpl implements SlitterPdaService {
|
||||
@Autowired
|
||||
private IpdmBiRawfoilworkorderService rawfoilworkorderService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private SlitterUpTrussTask slitterUpTrussTask;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
@Autowired
|
||||
private SlitterSendRollAGVTask slitterSendRollAGVTask;
|
||||
@Autowired
|
||||
private IstIvtCutpointivtService cutpointivtService;
|
||||
@Override
|
||||
public JSONObject queryOrderInfo(JSONObject param) {
|
||||
List<PdmBiRawfoilworkorder> orders = rawfoilworkorderService.getAllUsedRawPlanOnZc();
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("data", orders);
|
||||
result.put("message", "操作成功!");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject callSlitterRoll(JSONObject param) {
|
||||
log.info("手持呼叫母卷:{}", param);
|
||||
// param: workorder_id, zc_point, point_code, vehicle_code
|
||||
String workorderId = param.getString("workorder_id");
|
||||
// 分切机满料位
|
||||
String pointCode = param.getString("point_code");
|
||||
String vehicleCode = param.getString("vehicle_code");
|
||||
Assert.notBlank(workorderId, "请选择母卷!");
|
||||
Assert.notBlank(pointCode, "点位不能为空!");
|
||||
// 判断是否呼叫过任务
|
||||
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode);
|
||||
if (schBaseTasks.size() > 0) {
|
||||
throw new BadRequestException("点位[" + pointCode + "]已经创建过任务!");
|
||||
}
|
||||
param.put("config_code", "SlitterUpTrussTask");
|
||||
param.put("device_code", pointCode);
|
||||
param.put("create_mode", GeneralDefinition.PDA_CREATION);
|
||||
// 标记一下, 0: 只做呼叫母卷,1:呼叫母卷还要送空辊
|
||||
param.put("is_flag", ObjectUtil.isEmpty(vehicleCode) ? "0" : "1");
|
||||
slitterUpTrussTask.apply(param);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("message", "操作成功!");
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject allowCoiling(JSONObject param) {
|
||||
log.info("手持分切准备就绪, {}", param);
|
||||
// point_code
|
||||
String pointCode = param.getString("point_code");
|
||||
// 获取对应任务
|
||||
SchBaseTask task = taskService.getTaskByPointCodeX(null, pointCode, null, null);
|
||||
if (ObjectUtil.isEmpty(task)) {
|
||||
log.error("该点查不到任务!");
|
||||
throw new BadRequestException("该点查不到任务!");
|
||||
}
|
||||
//下发ACS,执行AGV动作
|
||||
JSONArray paramArr = new JSONArray();
|
||||
JSONObject acsParam = new JSONObject();
|
||||
acsParam.put("device_code", pointCode);
|
||||
acsParam.put("task_code", task.getTask_code());
|
||||
acsParam.put("product_area", task.getProduct_area());
|
||||
acsParam.put("option", "1");
|
||||
paramArr.add(acsParam);
|
||||
JSONObject jsonObject = wmsToAcsService.updateTask(paramArr);
|
||||
log.info("分切下发ACS,执行AGV动作,请求参数{},返回结果:{}", paramArr, jsonObject);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "请求成功!");
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject vehicleReturn(JSONObject param) {
|
||||
log.info("手持空轴送回, {}", param);
|
||||
// param: point_code, vehicle_code
|
||||
String pointCode = param.getString("point_code");
|
||||
String vehicleCode = param.getString("vehicle_code");
|
||||
Assert.notBlank(vehicleCode, "载具编码不能为空!");
|
||||
StIvtCutpointivt cutPoint = cutpointivtService.getByFullCode(pointCode, false);
|
||||
// 校验是否有任务
|
||||
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(cutPoint.getEmpty_point_code());
|
||||
if (schBaseTasks.size() > 0) {
|
||||
throw new BadRequestException("点位[" + pointCode + "]已经存在任务!");
|
||||
}
|
||||
// todo: 载具类型没有获取
|
||||
param.put("device_code", cutPoint.getEmpty_point_code());
|
||||
param.put("config_code", "SlitterSendRollAGVTask");
|
||||
param.put("create_mode", GeneralDefinition.PDA_CREATION);
|
||||
slitterSendRollAGVTask.apply(param);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "请求成功!");
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -179,6 +179,9 @@ public class PdmBiRawfoilworkorder extends Model<PdmBiRawfoilworkorder> {
|
||||
/** 烘烤温度 */
|
||||
private String baking_temperature;
|
||||
|
||||
@TableField(exist = false)
|
||||
private String zc_point;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -23,8 +23,6 @@ public class PdmBiSlittingproductionplan extends Model<PdmBiSlittingproductionpl
|
||||
|
||||
private static final long serialVersionUID = -7739291296662381393L;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 分切计划标识
|
||||
*/
|
||||
@@ -239,13 +237,13 @@ public class PdmBiSlittingproductionplan extends Model<PdmBiSlittingproductionpl
|
||||
/**
|
||||
* 部门ID
|
||||
*/
|
||||
private Long sysdeptid;
|
||||
private String sysdeptid;
|
||||
|
||||
|
||||
/**
|
||||
* 公司ID
|
||||
*/
|
||||
private Long syscompanyid;
|
||||
private String syscompanyid;
|
||||
|
||||
|
||||
/**
|
||||
@@ -301,17 +299,6 @@ public class PdmBiSlittingproductionplan extends Model<PdmBiSlittingproductionpl
|
||||
*/
|
||||
private String level;
|
||||
|
||||
|
||||
/**
|
||||
* 获取主键值
|
||||
*
|
||||
* @return 主键值
|
||||
*/
|
||||
@Override
|
||||
protected Serializable pkVal() {
|
||||
return this.workorder_id;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@ package org.nl.wms.pdm.bi.dao.mapper;
|
||||
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* {@code @Description:} 生箔工序工单(PdmBiRawfoilworkorder)数据持久层
|
||||
* {@code @Author:} gbx
|
||||
@@ -12,4 +14,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
public interface PdmBiRawfoilworkorderMapper extends BaseMapper<PdmBiRawfoilworkorder> {
|
||||
|
||||
|
||||
List<PdmBiRawfoilworkorder> getAllUsedRawPlanOnZc();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?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.wms.pdm.bi.dao.mapper.PdmBiRawfoilworkorderMapper">
|
||||
|
||||
|
||||
<select id="getAllUsedRawPlanOnZc" resultType="org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder">
|
||||
SELECT p.point_code as zc_point,
|
||||
w.*
|
||||
FROM sch_base_point p
|
||||
LEFT JOIN pdm_bi_rawfoilworkorder w ON w.workorder_id = p.source_id
|
||||
WHERE p.region_code = 'A1-HXZC'
|
||||
AND p.point_status = '4'
|
||||
AND IFNULL(w.workorder_id, '') <![CDATA[ <> ]]> ''
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -1,6 +0,0 @@
|
||||
<?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.wms.pdm.bi.dao.mapper.PdmBiRawfoilworkorderMapper">
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -80,6 +80,12 @@ public interface IpdmBiRawfoilworkorderService extends IService<PdmBiRawfoilwork
|
||||
* @return /
|
||||
*/
|
||||
List<PdmBiRawfoilworkorder> getOrderByVehicleAndStatus(String vehicleCode, String status);
|
||||
|
||||
/**
|
||||
* 获取烘箱暂存的母卷信息
|
||||
* @return /
|
||||
*/
|
||||
List<PdmBiRawfoilworkorder> getAllUsedRawPlanOnZc();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskMapper;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -52,7 +53,7 @@ import static org.nl.common.enums.WorkOrderStatusEnum.PRODUCT_STATUS;
|
||||
@Service
|
||||
public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl<PdmBiRawfoilworkorderMapper, PdmBiRawfoilworkorder> implements IpdmBiRawfoilworkorderService {
|
||||
|
||||
@Resource
|
||||
@Autowired
|
||||
private PdmBiRawfoilworkorderMapper pdmBiRawfoilworkorderMapper;
|
||||
|
||||
@Resource
|
||||
@@ -242,5 +243,10 @@ public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl<PdmBiRawfoilwo
|
||||
return list(lam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PdmBiRawfoilworkorder> getAllUsedRawPlanOnZc() {
|
||||
return pdmBiRawfoilworkorderMapper.getAllUsedRawPlanOnZc();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -22,13 +22,13 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
public class StIvtCutpointivt extends Model<StIvtCutpointivt> {
|
||||
|
||||
private static final long serialVersionUID = -7739291296662381393L;
|
||||
//@TableId(type = IdType.ASSIGN_ID)
|
||||
|
||||
|
||||
/**
|
||||
* 库存记录标识
|
||||
*/
|
||||
private Long ivt_id;
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private String ivt_id;
|
||||
|
||||
|
||||
/**
|
||||
@@ -124,7 +124,7 @@ public class StIvtCutpointivt extends Model<StIvtCutpointivt> {
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long create_id;
|
||||
private String create_id;
|
||||
|
||||
|
||||
/**
|
||||
@@ -136,14 +136,13 @@ public class StIvtCutpointivt extends Model<StIvtCutpointivt> {
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private String create_time;
|
||||
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
private Long update_optid;
|
||||
private String update_optid;
|
||||
|
||||
|
||||
/**
|
||||
@@ -155,7 +154,6 @@ public class StIvtCutpointivt extends Model<StIvtCutpointivt> {
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
private String update_time;
|
||||
|
||||
|
||||
@@ -188,17 +186,6 @@ public class StIvtCutpointivt extends Model<StIvtCutpointivt> {
|
||||
*/
|
||||
private String qzz_generation;
|
||||
|
||||
|
||||
/**
|
||||
* 获取主键值
|
||||
*
|
||||
* @return 主键值
|
||||
*/
|
||||
@Override
|
||||
protected Serializable pkVal() {
|
||||
return this.ivt_id;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -60,6 +60,20 @@ public interface IstIvtCutpointivtService extends IService<StIvtCutpointivt> {
|
||||
void deleteAll(Set<String> ids);
|
||||
|
||||
|
||||
/**
|
||||
* 获取分切数据
|
||||
* @param fullCode 满轴位
|
||||
* @param flag 是否校验禁用
|
||||
* @return /
|
||||
*/
|
||||
StIvtCutpointivt getByFullCode(String fullCode, boolean flag);
|
||||
|
||||
/**
|
||||
* 根据点位编码/满轴位/空轴位查找对应点位
|
||||
* @param code 编码
|
||||
* @return /
|
||||
*/
|
||||
StIvtCutpointivt getOneByCode(String code);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
@@ -35,7 +36,7 @@ import java.util.List;
|
||||
public class StIvtCutpointivtServiceImpl extends ServiceImpl<StIvtCutpointivtMapper, StIvtCutpointivt> implements IstIvtCutpointivtService {
|
||||
|
||||
|
||||
@Resource
|
||||
@Autowired
|
||||
private StIvtCutpointivtMapper stIvtCutpointivtMapper;
|
||||
|
||||
|
||||
@@ -115,6 +116,25 @@ public class StIvtCutpointivtServiceImpl extends ServiceImpl<StIvtCutpointivtMap
|
||||
stIvtCutpointivtMapper.update(null, updateWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StIvtCutpointivt getByFullCode(String fullCode, boolean flag) {
|
||||
LambdaQueryWrapper<StIvtCutpointivt> lam = new QueryWrapper<StIvtCutpointivt>().lambda();
|
||||
lam.eq(StIvtCutpointivt::getFull_point_code, fullCode)
|
||||
.eq(flag, StIvtCutpointivt::getIs_used, "1");
|
||||
return getOne(lam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StIvtCutpointivt getOneByCode(String code) {
|
||||
LambdaQueryWrapper<StIvtCutpointivt> lam = new QueryWrapper<StIvtCutpointivt>().lambda();
|
||||
lam.eq(StIvtCutpointivt::getFull_point_code, code)
|
||||
.or()
|
||||
.eq(StIvtCutpointivt::getEmpty_point_code, code)
|
||||
.or()
|
||||
.eq(StIvtCutpointivt::getPoint_code, code);
|
||||
return getOne(lam);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取实体基础信息
|
||||
|
||||
@@ -78,7 +78,7 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
||||
List<SchBasePoint> getWindRollNotTaskPoints(String vehicleType);
|
||||
|
||||
/**
|
||||
* 根据条件获取点位
|
||||
* 根据条件获取点位 (纯找点,没有校验任务!!!)
|
||||
* @param area 生产区域(车间)
|
||||
* @param region 区域
|
||||
* @param pointType 点位类型
|
||||
@@ -97,4 +97,15 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
||||
* @return /
|
||||
*/
|
||||
List<SchBasePoint> getHotNotTaskPoint(String area, String region, String pointType, String pointStatus);
|
||||
|
||||
/**
|
||||
* 从点位查找以下条件可用的没任务点位
|
||||
* @param area 生产区域
|
||||
* @param region 区域
|
||||
* @param pointType 点位类型
|
||||
* @param pointStatus 点位状态
|
||||
* @param vehicleType 载具类型
|
||||
* @return /
|
||||
*/
|
||||
List<SchBasePoint> getAllBusinessNotTaskPoint(String area, String region, String pointType, String pointStatus, String vehicleType);
|
||||
}
|
||||
|
||||
@@ -34,4 +34,6 @@ public interface SchBasePointMapper extends BaseMapper<SchBasePoint> {
|
||||
* @return /
|
||||
*/
|
||||
List<SchBasePoint> getHotNotTaskPoint(String area, String region, String pointType, String pointStatus);
|
||||
|
||||
List<SchBasePoint> getAllBusinessNotTaskPoint(String area, String region, String pointType, String pointStatus, String vehicleType);
|
||||
}
|
||||
|
||||
@@ -36,4 +36,26 @@
|
||||
AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.task_status <![CDATA[<]]> '07'
|
||||
AND (t.point_code1 = p.point_code OR t.point_code2 = p.point_code OR t.point_code4 = p.point_code))
|
||||
</select>
|
||||
<select id="getAllBusinessNotTaskPoint" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
|
||||
SELECT p.*
|
||||
FROM sch_base_point p
|
||||
WHERE p.is_used = TRUE
|
||||
<if test="region != null">
|
||||
AND p.region_code = #{region}
|
||||
</if>
|
||||
<if test="pointType != null">
|
||||
AND p.point_type = #{pointType}
|
||||
</if>
|
||||
<if test="area != null">
|
||||
AND p.product_area = #{area}
|
||||
</if>
|
||||
<if test="pointStatus != null">
|
||||
AND p.point_status = #{pointStatus}
|
||||
</if>
|
||||
<if test="vehicleType != null">
|
||||
AND p.vehicle_type = #{vehicleType}
|
||||
</if>
|
||||
AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.point_code1 = p.point_code AND t.task_status <![CDATA[<]]> '07')
|
||||
ORDER BY p.in_order_seq
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -230,4 +230,9 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
return pointMapper.getHotNotTaskPoint(area, region, pointType, pointStatus);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBasePoint> getAllBusinessNotTaskPoint(String area, String region, String pointType, String pointStatus, String vehicleType) {
|
||||
return pointMapper.getAllBusinessNotTaskPoint(area, region, pointType, pointStatus, vehicleType);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -251,7 +251,7 @@ public abstract class AbstractTask {
|
||||
}
|
||||
|
||||
/**
|
||||
* 申请任务 - 暂时不用
|
||||
* 申请任务
|
||||
* <p>创建task的总入口,会根据自定义的子类去执行创建方法。</p>
|
||||
* @param param 请求任务的参数(可以是只确定了单个点,也可以是4个点都确定了)
|
||||
* @throws BadRequestException 如果创建失败
|
||||
|
||||
@@ -120,7 +120,7 @@ public class AutoInHotTrussTask extends AbstractTask {
|
||||
String endPointCode = taskObj.getPoint_code2();
|
||||
SchBasePoint startPoint = pointService.getById(startPointCode);
|
||||
StIvtHotpointivt endPoint = hotpointivtService.getPointByCode(endPointCode, false);
|
||||
String orderId = startPoint.getGroup_id();
|
||||
String orderId = startPoint.getSource_id();
|
||||
PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(orderId);
|
||||
// 烘箱位,状态为02:烘烤中
|
||||
endPoint.setContainer_name(order.getContainer_name());
|
||||
|
||||
@@ -146,7 +146,7 @@ public class InHotTrussTask extends AbstractTask {
|
||||
hotDjwPoint.setVehicle_code(taskObj.getVehicle_code());
|
||||
hotDjwPoint.setPoint_status("1".equals(order.getIs_baking()) ? "2" : "4");
|
||||
// 此字段存放工单号
|
||||
hotDjwPoint.setGroup_id(workorderId);
|
||||
hotDjwPoint.setSource_id(workorderId);
|
||||
setUpdateByType(hotDjwPoint, taskFinishedType);
|
||||
pointService.update(hotDjwPoint);
|
||||
} else {
|
||||
|
||||
@@ -72,19 +72,23 @@ public class OutHotTrussTask extends AbstractTask {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 出烘箱后,终点状态应改成04:待分切
|
||||
// 出烘箱后,终点状态应改成4:待分切
|
||||
String startPointCode = taskObj.getPoint_code1();
|
||||
String endPointCode = taskObj.getPoint_code2();
|
||||
StIvtHotpointivt startPoint = hotpointivtService.getPointByCode(startPointCode, false);
|
||||
SchBasePoint endPoint = pointService.getById(endPointCode);
|
||||
// 终点设置值
|
||||
endPoint.setVehicle_code(startPoint.getFull_vehicle_code());
|
||||
endPoint.setGroup_id(startPoint.getWorkorder_id());
|
||||
endPoint.setPoint_status("04");
|
||||
endPoint.setSource_id(startPoint.getWorkorder_id());
|
||||
endPoint.setPoint_status("4");
|
||||
setUpdateByType(endPoint, taskFinishedType);
|
||||
pointService.updateById(endPoint);
|
||||
// 起点清空
|
||||
hotClearPoint(startPoint, taskFinishedType);
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
package org.nl.wms.sch.task_manage.tasks.slitter;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.pdm.ivt.dao.StIvtCutpointivt;
|
||||
import org.nl.wms.pdm.ivt.service.IstIvtCutpointivtService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
|
||||
import static org.nl.wms.util.TaskUtils.setUpdateByPC;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 分切收卷辊单独入库任务
|
||||
* @Date: 2024/8/13
|
||||
*/
|
||||
@Slf4j
|
||||
@Component(value = "SlitterSendRollAGVTask")
|
||||
public class SlitterSendRollAGVTask extends AbstractTask {
|
||||
private final String THIS_CLASS = SlitterSendRollAGVTask.class.getName();
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private IstIvtCutpointivtService cutpointivtService;
|
||||
@Autowired
|
||||
private SlitterSendRollTrussTask slitterSendRollTrussTask;
|
||||
@Override
|
||||
public void create() throws BadRequestException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createCompletion(SchBaseTask task) {
|
||||
// 查找终点:获取收卷辊入口
|
||||
// 终点为入口,不校验是否占用
|
||||
List<SchBasePoint> endPoints = pointService.getPointByConditions("A1",
|
||||
"A1-SJGK", "1", null, true);
|
||||
if (endPoints.size() == 0) {
|
||||
throw new BadRequestException("收卷辊出口查询失败!");
|
||||
}
|
||||
SchBasePoint point = endPoints.get(0);
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
// 创建任务
|
||||
task.setHandle_class(THIS_CLASS);
|
||||
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
||||
setUpdateByPC(task);
|
||||
taskService.save(task);
|
||||
log.info("任务创建成功:{}", task);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 起点清除
|
||||
String startPointCode = taskObj.getPoint_code1();
|
||||
StIvtCutpointivt startPoint = cutpointivtService.getOneByCode(startPointCode);
|
||||
startPoint.setContainer_name("");
|
||||
startPoint.setFull_point_status("01");
|
||||
startPoint.setFull_vehicle_code("");
|
||||
startPoint.setEmpty_vehicle_code("");
|
||||
startPoint.setEmpty_point_status("01");
|
||||
PointUtils.setCutUpdateByType(startPoint, taskFinishedType);
|
||||
cutpointivtService.updateById(startPoint);
|
||||
// 创建桁架任务
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("config_code", "SlitterSendRollTrussTask");
|
||||
taskParam.put("up_task_code", taskObj.getTask_code());
|
||||
taskParam.put("create_mode", GeneralDefinition.TASK_CREATION);
|
||||
taskParam.put("vehicle_code", taskObj.getVehicle_code());
|
||||
taskParam.put("vehicle_type", taskObj.getVehicle_type());
|
||||
taskParam.put("device_code", taskObj.getPoint_code2());
|
||||
slitterSendRollTrussTask.apply(taskParam);
|
||||
// 任务更新
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 取消
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
package org.nl.wms.sch.task_manage.tasks.slitter;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
|
||||
import static org.nl.wms.util.TaskUtils.setUpdateByPC;
|
||||
import static org.nl.wms.util.PointUtils.setUpdateByType;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 分切送收卷辊任务
|
||||
* @Date: 2024/8/12
|
||||
*/
|
||||
@Slf4j
|
||||
@Component(value = "SlitterSendRollTrussTask")
|
||||
public class SlitterSendRollTrussTask extends AbstractTask {
|
||||
private final String THIS_CLASS = SlitterSendRollTrussTask.class.getName();
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Override
|
||||
public void create() throws BadRequestException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createCompletion(SchBaseTask task) {
|
||||
// 起点一样不记录,直接创建入库任务
|
||||
// 查找空位终点即可
|
||||
List<SchBasePoint> allSjgkPoints = pointService.getAllBusinessNotTaskPoint("A1",
|
||||
"A1-SJGK", "3", "1", null);
|
||||
if (allSjgkPoints.size() == 0) {
|
||||
throw new BadRequestException("收卷辊不存在空位!");
|
||||
}
|
||||
SchBasePoint endPoint = allSjgkPoints.get(0);
|
||||
task.setPoint_code2(endPoint.getPoint_code());
|
||||
// 创建任务
|
||||
task.setHandle_class(THIS_CLASS);
|
||||
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
||||
setUpdateByPC(task);
|
||||
taskService.save(task);
|
||||
log.info("任务创建成功:{}", task);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 点位更新需要将载具编码设置到终点
|
||||
String endPointCode = taskObj.getPoint_code2();
|
||||
SchBasePoint endPoint = pointService.getById(endPointCode);
|
||||
endPoint.setVehicle_code(taskObj.getVehicle_code());
|
||||
endPoint.setPoint_status("2");
|
||||
// 载具类型是否一开始从工单获取,还是根据编码从物料表查询?
|
||||
endPoint.setVehicle_type(taskObj.getVehicle_type());
|
||||
setUpdateByType(endPoint, taskFinishedType);
|
||||
pointService.updateById(endPoint);
|
||||
// 任务更新
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 取消
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
package org.nl.wms.sch.task_manage.tasks.slitter;
|
||||
|
||||
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.common.exception.BadRequestException;
|
||||
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||
import org.nl.wms.pdm.ivt.dao.StIvtCutpointivt;
|
||||
import org.nl.wms.pdm.ivt.service.IstIvtCutpointivtService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtils.*;
|
||||
import static org.nl.wms.util.PointUtils.setCutUpdateByType;
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description:
|
||||
* @Date: 2024/8/12
|
||||
*/
|
||||
@Slf4j
|
||||
@Component(value = "SlitterUpAGVTask")
|
||||
public class SlitterUpAGVTask extends AbstractTask {
|
||||
private final String THIS_CLASS = SlitterUpAGVTask.class.getName();
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private IstIvtCutpointivtService cutpointivtService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private IpdmBiRawfoilworkorderService rawfoilworkorderService;
|
||||
@Autowired
|
||||
private SlitterSendRollTrussTask slitterSendRollTrussTask;
|
||||
@Override
|
||||
public void create() throws BadRequestException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createCompletion(SchBaseTask task) {
|
||||
String requestParam = task.getRequest_param();
|
||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||
String isFlag = requestObj.getString("is_flag");
|
||||
// 分切上料满料对接位
|
||||
String cutPointCode = requestObj.getString("cut_point");
|
||||
// 烘箱暂存对接位
|
||||
String deviceCode = requestObj.getString("device_code");
|
||||
StIvtCutpointivt cutPoint = cutpointivtService.getByFullCode(cutPointCode, false);
|
||||
if ("0".equals(isFlag)) {
|
||||
// 两点任务
|
||||
task.setPoint_code1(deviceCode);
|
||||
task.setPoint_code2(cutPoint.getFull_point_code());
|
||||
} else {
|
||||
// 收卷辊的入库不做校验
|
||||
List<SchBasePoint> sjgPoints = pointService.getPointByConditions("A1", "A1-SJGK", "1", null, false);
|
||||
if (sjgPoints.size() == 0) {
|
||||
throw new BadRequestException("收卷辊库找不到入口!");
|
||||
}
|
||||
SchBasePoint sjgPoint = sjgPoints.get(0);
|
||||
// 四点任务
|
||||
task.setPoint_code1(deviceCode);
|
||||
task.setPoint_code2(cutPoint.getFull_point_code());
|
||||
task.setPoint_code3(cutPoint.getEmpty_point_code());
|
||||
task.setPoint_code4(sjgPoint.getPoint_code());
|
||||
}
|
||||
// 创建任务
|
||||
task.setHandle_class(THIS_CLASS);
|
||||
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
||||
setUpdateByPC(task);
|
||||
taskService.save(task);
|
||||
log.info("任务创建成功:{}", task);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 任务完成需要任务中的数据设置到分切机上, 工单结束
|
||||
String requestParam = taskObj.getRequest_param();
|
||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||
String workorderId = requestObj.getString("workorder_id");
|
||||
String endPointCode = taskObj.getPoint_code2();
|
||||
StIvtCutpointivt cutPoint = cutpointivtService.getByFullCode(endPointCode, false);
|
||||
PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(workorderId);
|
||||
cutPoint.setFull_vehicle_code(taskObj.getVehicle_code2());
|
||||
cutPoint.setFull_point_status("02");
|
||||
cutPoint.setContainer_name(order.getContainer_name());
|
||||
cutPoint.setEmpty_vehicle_code("");
|
||||
cutPoint.setEmpty_point_status("01");
|
||||
setCutUpdateByType(cutPoint, taskFinishedType);
|
||||
cutpointivtService.updateById(cutPoint);
|
||||
if (ObjectUtil.isNotEmpty(taskObj.getPoint_code3())) {
|
||||
// 四点任务,还需要创建收卷辊桁架任务
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("vehicle_code", taskObj.getVehicle_code());
|
||||
taskParam.put("up_task_code", taskObj.getTask_code());
|
||||
taskParam.put("create_mode", GeneralDefinition.TASK_CREATION);
|
||||
taskParam.put("config_code", "SlitterSendRollTrussTask");
|
||||
taskParam.put("device_code", taskObj.getPoint_code4());
|
||||
slitterSendRollTrussTask.apply(taskParam);
|
||||
}
|
||||
// 工单结束
|
||||
order.setStatus("09");
|
||||
order.setFinish_type("02");
|
||||
order.setUp_coiler_date(DateUtil.now());
|
||||
setRawOrderUpdateByType(order, taskFinishedType);
|
||||
rawfoilworkorderService.updateById(order);
|
||||
// 任务更新
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 取消
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
package org.nl.wms.sch.task_manage.tasks.slitter;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.PointUtils.clearPoint;
|
||||
import static org.nl.wms.util.TaskUtils.*;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 分切上料-出烘箱暂存的桁架任务
|
||||
* @Date: 2024/8/12
|
||||
*/
|
||||
@Slf4j
|
||||
@Component(value = "SlitterUpTrussTask")
|
||||
public class SlitterUpTrussTask extends AbstractTask {
|
||||
private final String THIS_CLASS = SlitterUpTrussTask.class.getName();
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private SlitterUpAGVTask slitterUpAGVTask;
|
||||
@Autowired
|
||||
private IpdmBiRawfoilworkorderService rawfoilworkorderService;
|
||||
@Override
|
||||
public void create() throws BadRequestException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createCompletion(SchBaseTask task) {
|
||||
// 桁架任务,到对接位。(对接位不作更新。)
|
||||
String requestParam = task.getRequest_param();
|
||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||
String pointCode = requestObj.getString("zc_point");
|
||||
// 终点为出口,不校验是否占用
|
||||
List<SchBasePoint> endPoints = pointService.getPointByConditions("A1", "A1-HXZC", "1", null, true);
|
||||
if (endPoints.size() == 0) {
|
||||
throw new BadRequestException("烘箱出口查询失败!");
|
||||
}
|
||||
SchBasePoint point = endPoints.get(0);
|
||||
task.setPoint_code1(pointCode);
|
||||
task.setPoint_code2(point.getPoint_code());
|
||||
// 创建任务
|
||||
task.setHandle_class(THIS_CLASS);
|
||||
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
||||
setUpdateByPC(task);
|
||||
taskService.save(task);
|
||||
log.info("任务创建成功:{}", task);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 任务完成起点清除,创建AGV任务到达参数中的point_code的点位上
|
||||
String requestParam = taskObj.getRequest_param();
|
||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||
// 分切机满料位
|
||||
String isFlag = requestObj.getString("is_flag");
|
||||
String workorderId = requestObj.getString("workorder_id");
|
||||
String startPointCode = taskObj.getPoint_code1();
|
||||
String endPointCode = taskObj.getPoint_code2();
|
||||
SchBasePoint startPoint = pointService.getById(startPointCode);
|
||||
clearPoint(startPoint, taskFinishedType);
|
||||
// 创建AGV任务
|
||||
log.info("点位{}更新完毕,创建AGV任务给分切机上料", startPointCode);
|
||||
PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(workorderId);
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("device_code", endPointCode);
|
||||
taskParam.put("cut_point", requestObj.getString("device_code"));
|
||||
// 标记一下, 0: 只做呼叫母卷,1:呼叫母卷还要送空辊
|
||||
taskParam.put("is_flag", isFlag);
|
||||
// 空轴的编码
|
||||
taskParam.put("vehicle_code", taskObj.getVehicle_code());
|
||||
taskParam.put("vehicle_code2", order.getWind_roll());
|
||||
taskParam.put("workorder_id", workorderId);
|
||||
taskParam.put("config_code", "SlitterSendRollTrussTask");
|
||||
taskParam.put("up_task_code", taskObj.getTask_code());
|
||||
taskParam.put("create_mode", GeneralDefinition.TASK_CREATION);
|
||||
slitterUpAGVTask.apply(taskParam);
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 取消
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.SpringContextHolder;
|
||||
import org.nl.wms.pdm.ivt.dao.StIvtCutpointivt;
|
||||
import org.nl.wms.pdm.ivt.dao.StIvtHotpointivt;
|
||||
import org.nl.wms.pdm.ivt.service.IstIvtHotpointivtService;
|
||||
import org.nl.wms.pdm.ivt.service.impl.StIvtHotpointivtServiceImpl;
|
||||
@@ -55,7 +56,7 @@ public class PointUtils {
|
||||
point.setVehicle_type("");
|
||||
point.setVehicle_code("");
|
||||
point.setIng_task_code("");
|
||||
point.setGroup_id("");
|
||||
point.setSource_id("");
|
||||
point.setVehicle_qty(0);
|
||||
point.setUpdate_time(DateUtil.now());
|
||||
setUpdateByType(point, taskFinishedType);
|
||||
@@ -71,7 +72,7 @@ public class PointUtils {
|
||||
return; // 空直接退出
|
||||
}
|
||||
IstIvtHotpointivtService pointService = SpringContextHolder.getBean(StIvtHotpointivtServiceImpl.class);
|
||||
point.setPoint_status(PointStatusEnum.EMPTY_POINT.getCode());
|
||||
point.setPoint_status("01");
|
||||
point.setContainer_name("");
|
||||
point.setFull_vehicle_code("");
|
||||
point.setWorkorder_id("");
|
||||
@@ -162,4 +163,33 @@ public class PointUtils {
|
||||
setHxUpdateByPC(pointObj);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 点位修改更新信息
|
||||
**/
|
||||
public static void setCutUpdateByAcs(StIvtCutpointivt pointObj) {
|
||||
pointObj.setUpdate_optid(GeneralDefinition.ACS_ID);
|
||||
pointObj.setUpdate_optname(GeneralDefinition.ACS_NAME);
|
||||
pointObj.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
|
||||
/**
|
||||
* 点位修改更新信息
|
||||
**/
|
||||
public static void setCutUpdateByPC(StIvtCutpointivt pointObj) {
|
||||
pointObj.setUpdate_optid(SecurityUtils.getCurrentUserId());
|
||||
pointObj.setUpdate_optname(SecurityUtils.getCurrentNickName());
|
||||
pointObj.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
|
||||
/**
|
||||
* 分切修改点位更新信息
|
||||
*/
|
||||
public static void setCutUpdateByType(StIvtCutpointivt pointObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) {
|
||||
setCutUpdateByAcs(pointObj);
|
||||
} else {
|
||||
setCutUpdateByPC(pointObj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -228,4 +228,25 @@ public class TaskUtils {
|
||||
throw new BadRequestException("任务已被取消!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void setRawOrderUpdateAcs(PdmBiRawfoilworkorder order) {
|
||||
order.setUpdate_optid(GeneralDefinition.ACS_ID);
|
||||
order.setUpdate_optname(GeneralDefinition.ACS_NAME);
|
||||
order.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
|
||||
public static void setRawOrderUpdatePC(PdmBiRawfoilworkorder order) {
|
||||
order.setUpdate_optid(SecurityUtils.getCurrentUserId());
|
||||
order.setUpdate_optname(SecurityUtils.getCurrentNickName());
|
||||
order.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
|
||||
public static void setRawOrderUpdateByType(PdmBiRawfoilworkorder order, TaskFinishedTypeEnum taskFinishedType) {
|
||||
if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) {
|
||||
setRawOrderUpdateAcs(order);
|
||||
} else {
|
||||
setRawOrderUpdatePC(order);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user