feat: 生箔->烘箱->分切->内包间变动修改与优化
This commit is contained in:
@@ -17,6 +17,9 @@ public enum TagNameEnum {
|
|||||||
RAW_DOWN("手持生箔下料"),
|
RAW_DOWN("手持生箔下料"),
|
||||||
RAW_EMPTY_HOME("手持生箔空辊回库"),
|
RAW_EMPTY_HOME("手持生箔空辊回库"),
|
||||||
RAW_READY("手持生箔准备就绪"),
|
RAW_READY("手持生箔准备就绪"),
|
||||||
|
CUT_UP("手持分切上料"),
|
||||||
|
CUT_UP_CONFIRM("手持分切确认上料"),
|
||||||
|
CUT_EMPTY_BACK("手持空轴送回"),
|
||||||
GX_IN("手持管芯入库"),
|
GX_IN("手持管芯入库"),
|
||||||
GX_OUT("手持管芯出库"),
|
GX_OUT("手持管芯出库"),
|
||||||
SWITCH_STATUS_OF_LIFT("货梯切换状态"),
|
SWITCH_STATUS_OF_LIFT("货梯切换状态"),
|
||||||
|
|||||||
@@ -68,4 +68,17 @@ public class SlitterPdaController {
|
|||||||
public ResponseEntity<Object> querySlitterDeviceSubVolumeInfos(@RequestBody JSONObject param) {
|
public ResponseEntity<Object> querySlitterDeviceSubVolumeInfos(@RequestBody JSONObject param) {
|
||||||
return new ResponseEntity<>(slitterPdaService.querySlitterDeviceSubVolumeInfos(param), HttpStatus.OK);
|
return new ResponseEntity<>(slitterPdaService.querySlitterDeviceSubVolumeInfos(param), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/devicePointQuery")
|
||||||
|
// @Log("分切子卷维护 - 设备点位查询")
|
||||||
|
public ResponseEntity<Object> devicePointQuery(@RequestBody JSONObject whereJson) {
|
||||||
|
return new ResponseEntity<>(slitterPdaService.devicePointQuery(whereJson), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/bindSlitterSubVolumeInfo")
|
||||||
|
@Log("绑定分切机上的子卷信息")
|
||||||
|
@SaIgnore
|
||||||
|
public ResponseEntity<Object> bindSlitterSubVolumeInfo(@RequestBody JSONObject param) {
|
||||||
|
return new ResponseEntity<>(slitterPdaService.bindSlitterSubVolumeInfo(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.nl.wms.pda.mps.service;
|
package org.nl.wms.pda.mps.service;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -57,4 +58,18 @@ public interface SlitterPdaService {
|
|||||||
* @return /
|
* @return /
|
||||||
*/
|
*/
|
||||||
JSONObject querySlitterDeviceSubVolumeInfos(JSONObject param);
|
JSONObject querySlitterDeviceSubVolumeInfos(JSONObject param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询分切机设备上下轴点位
|
||||||
|
* @param param /
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONArray devicePointQuery(JSONObject param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分切子卷维护
|
||||||
|
* @param param
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
JSONObject bindSlitterSubVolumeInfo(JSONObject param);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
|||||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||||
import org.nl.wms.pdm.ivt.raw.service.IstIvtSbpointivtService;
|
import org.nl.wms.pdm.ivt.raw.service.IstIvtSbpointivtService;
|
||||||
import org.nl.wms.pdm.ivt.raw.service.dao.StIvtSbpointivt;
|
import org.nl.wms.pdm.ivt.raw.service.dao.StIvtSbpointivt;
|
||||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
|
||||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
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.core.constant.GeneralDefinition;
|
||||||
@@ -201,6 +200,7 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
|
|||||||
// 组织请求任务参数
|
// 组织请求任务参数
|
||||||
// 当前生箔的点位
|
// 当前生箔的点位
|
||||||
param.put("device_code", pointCode);
|
param.put("device_code", pointCode);
|
||||||
|
param.put("workorder_id", rawOrder.getWorkorder_id());
|
||||||
param.put("ext_code", sbPoint.getExt_code());
|
param.put("ext_code", sbPoint.getExt_code());
|
||||||
param.put("create_mode", GeneralDefinition.PDA_CREATION);
|
param.put("create_mode", GeneralDefinition.PDA_CREATION);
|
||||||
// 判断是否呼叫空辊
|
// 判断是否呼叫空辊
|
||||||
|
|||||||
@@ -2,11 +2,13 @@ package org.nl.wms.pda.mps.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
|
import org.nl.config.lucene.TagNameEnum;
|
||||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||||
import org.nl.wms.pda.mps.service.SlitterPdaService;
|
import org.nl.wms.pda.mps.service.SlitterPdaService;
|
||||||
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||||
@@ -25,11 +27,14 @@ import org.nl.wms.sch.task_manage.tasks.slitter.SlitterDownAGVTask;
|
|||||||
import org.nl.wms.sch.task_manage.tasks.slitter.SlitterInHotAGVTask;
|
import org.nl.wms.sch.task_manage.tasks.slitter.SlitterInHotAGVTask;
|
||||||
import org.nl.wms.sch.task_manage.tasks.slitter.SlitterSendRollAGVTask;
|
import org.nl.wms.sch.task_manage.tasks.slitter.SlitterSendRollAGVTask;
|
||||||
import org.nl.wms.sch.task_manage.tasks.slitter.SlitterUpTrussTask;
|
import org.nl.wms.sch.task_manage.tasks.slitter.SlitterUpTrussTask;
|
||||||
|
import org.nl.wms.util.TaskUtils;
|
||||||
|
import org.slf4j.MDC;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
@@ -71,9 +76,11 @@ public class SlitterPdaServiceImpl implements SlitterPdaService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public JSONObject callSlitterRoll(JSONObject param) {
|
public JSONObject callSlitterRoll(JSONObject param) {
|
||||||
|
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.CUT_UP.getTag());
|
||||||
log.info("手持呼叫母卷:{}", param);
|
log.info("手持呼叫母卷:{}", param);
|
||||||
// param: workorder_id, zc_point, point_code, vehicle_code
|
// param: workorder_id, zc_point, point_code, vehicle_code, resource_name
|
||||||
String workorderId = param.getString("workorder_id");
|
String workorderId = param.getString("workorder_id");
|
||||||
// 分切机满料位
|
// 分切机满料位
|
||||||
String pointCode = param.getString("point_code");
|
String pointCode = param.getString("point_code");
|
||||||
@@ -93,8 +100,9 @@ public class SlitterPdaServiceImpl implements SlitterPdaService {
|
|||||||
param.put("create_mode", GeneralDefinition.PDA_CREATION);
|
param.put("create_mode", GeneralDefinition.PDA_CREATION);
|
||||||
// 判断空轴位状态
|
// 判断空轴位状态
|
||||||
// 标记一下, 0: 只做呼叫母卷,1:呼叫母卷还要送空辊
|
// 标记一下, 0: 只做呼叫母卷,1:呼叫母卷还要送空辊
|
||||||
param.put("is_flag", "01".equals(cutPoint.getEmpty_point_status()) ? "0" : "1");
|
param.put("is_flag", "01".equals(cutPoint.getFull_point_status()) ? "0" : "1");
|
||||||
param.put("vehicle_code", cutPoint.getEmpty_vehicle_code());
|
param.put("vehicle_code", cutPoint.getFull_vehicle_code());
|
||||||
|
param.put("vehicle_code2", param.getString("resource_name"));
|
||||||
slitterUpTrussTask.apply(param);
|
slitterUpTrussTask.apply(param);
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
result.put("message", "操作成功!");
|
result.put("message", "操作成功!");
|
||||||
@@ -103,6 +111,7 @@ public class SlitterPdaServiceImpl implements SlitterPdaService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject allowCoiling(JSONObject param) {
|
public JSONObject allowCoiling(JSONObject param) {
|
||||||
|
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.CUT_UP_CONFIRM.getTag());
|
||||||
log.info("手持分切确认上料, {}", param);
|
log.info("手持分切确认上料, {}", param);
|
||||||
// point_code
|
// point_code
|
||||||
String pointCode = param.getString("point_code");
|
String pointCode = param.getString("point_code");
|
||||||
@@ -131,11 +140,12 @@ public class SlitterPdaServiceImpl implements SlitterPdaService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSONObject vehicleReturn(JSONObject param) {
|
public JSONObject vehicleReturn(JSONObject param) {
|
||||||
|
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.CUT_EMPTY_BACK.getTag());
|
||||||
log.info("手持空轴送回, {}", param);
|
log.info("手持空轴送回, {}", param);
|
||||||
// param: point_code
|
// param: point_code
|
||||||
String pointCode = param.getString("point_code");
|
String pointCode = param.getString("point_code");
|
||||||
StIvtCutpointivt cutPoint = cutpointivtService.getByFullCode(pointCode, false);
|
StIvtCutpointivt cutPoint = cutpointivtService.getOneByCode(pointCode);
|
||||||
if ("01".equals(cutPoint.getEmpty_point_status())) {
|
if ("01".equals(cutPoint.getFull_point_status())) {
|
||||||
throw new BadRequestException("系统识别到分切上料位[ " + pointCode + " ]无空轴!");
|
throw new BadRequestException("系统识别到分切上料位[ " + pointCode + " ]无空轴!");
|
||||||
}
|
}
|
||||||
// 校验是否有任务
|
// 校验是否有任务
|
||||||
@@ -147,6 +157,7 @@ public class SlitterPdaServiceImpl implements SlitterPdaService {
|
|||||||
param.put("config_code", "SlitterSendRollAGVTask");
|
param.put("config_code", "SlitterSendRollAGVTask");
|
||||||
// 最后一趟送回去的才需要清
|
// 最后一趟送回去的才需要清
|
||||||
param.put("is_flag", "1");
|
param.put("is_flag", "1");
|
||||||
|
param.put("vehicle_code", cutPoint.getFull_vehicle_code());
|
||||||
param.put("create_mode", GeneralDefinition.PDA_CREATION);
|
param.put("create_mode", GeneralDefinition.PDA_CREATION);
|
||||||
slitterSendRollAGVTask.apply(param);
|
slitterSendRollAGVTask.apply(param);
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
@@ -301,4 +312,68 @@ public class SlitterPdaServiceImpl implements SlitterPdaService {
|
|||||||
data.put("msg", msg);
|
data.put("msg", msg);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONArray devicePointQuery(JSONObject param) {
|
||||||
|
String device_code = param.getString("device_code");
|
||||||
|
if (StrUtil.isEmpty(device_code)) {
|
||||||
|
throw new BadRequestException("输入的设备号不能为空!");
|
||||||
|
}
|
||||||
|
StIvtCutpointivt device = cutpointivtService.getOneByCode(device_code);
|
||||||
|
JSONArray jsonArray = new JSONArray();
|
||||||
|
JSONObject p1 = new JSONObject();
|
||||||
|
p1.put("text", device.getPoint_code() + "上轴位");
|
||||||
|
p1.put("value", device.getUp_point_code());
|
||||||
|
JSONObject p2 = new JSONObject();
|
||||||
|
p2.put("text", device.getPoint_code() + "下轴位");
|
||||||
|
p2.put("value", device.getDown_point_code());
|
||||||
|
jsonArray.add(p1);
|
||||||
|
jsonArray.add(p2);
|
||||||
|
return jsonArray;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject bindSlitterSubVolumeInfo(JSONObject param) {
|
||||||
|
log.info("绑定分切机上的子卷信息:{}", param);
|
||||||
|
// param: point_code, container_name(逗号隔开)
|
||||||
|
// 子卷生成气胀轴编码,设置05状态
|
||||||
|
String containerName = param.getString("container_name");
|
||||||
|
String pointCode1 = param.getString("point_code");
|
||||||
|
if (ObjectUtil.isEmpty(containerName)) {
|
||||||
|
throw new BadRequestException("子卷号不能为空!");
|
||||||
|
}
|
||||||
|
List<String> collect = Arrays.stream(containerName.split(",")).collect(Collectors.toList());
|
||||||
|
List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.getByContainerNames(collect);
|
||||||
|
if (plans.size() == 0) {
|
||||||
|
throw new BadRequestException("子卷号:[" + containerName + "] 的分切计划没找到,检查是否推送或者子卷号是否正确!");
|
||||||
|
}
|
||||||
|
PdmBiSlittingproductionplan demoPlan = plans.get(0);
|
||||||
|
String resourceName = demoPlan.getResource_name();
|
||||||
|
String qzzNo = resourceName.substring(0, 2)
|
||||||
|
+ resourceName.substring(resourceName.length() - 2)
|
||||||
|
+ demoPlan.getSplit_group()
|
||||||
|
+ TaskUtils.getDateTime("yyMMddHHmmss") + "-"
|
||||||
|
+ demoPlan.getUp_or_down();
|
||||||
|
if (ObjectUtil.isNotEmpty(demoPlan.getQzzno())) {
|
||||||
|
qzzNo = demoPlan.getQzzno();
|
||||||
|
}
|
||||||
|
for (PdmBiSlittingproductionplan plan : plans) {
|
||||||
|
plan.setQzzno(qzzNo);
|
||||||
|
plan.setStatus("05");
|
||||||
|
TaskUtils.updateOptMessageBySlitterPlan(plan);
|
||||||
|
}
|
||||||
|
slittingproductionplanService.updateBatchById(plans);
|
||||||
|
// 气胀轴编码设置到分切机器上
|
||||||
|
StIvtCutpointivt slitterDevice = cutpointivtService.getPintByUpOrDownCode(pointCode1, false);
|
||||||
|
if (pointCode1.equals(slitterDevice.getUp_point_code())) {
|
||||||
|
slitterDevice.setUp_qzzno(qzzNo);
|
||||||
|
} else {
|
||||||
|
slitterDevice.setDown_qzzno(qzzNo);
|
||||||
|
}
|
||||||
|
cutpointivtService.updateById(slitterDevice);
|
||||||
|
JSONObject res = new JSONObject();
|
||||||
|
res.put("status", cn.hutool.http.HttpStatus.HTTP_OK);
|
||||||
|
res.put("message", "子卷信息绑定成功!");
|
||||||
|
return res;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,8 @@ public class NbjPdaController {
|
|||||||
|
|
||||||
@PostMapping("/doSubVolumeBindingWeight")
|
@PostMapping("/doSubVolumeBindingWeight")
|
||||||
@Log("子卷重量维护")
|
@Log("子卷重量维护")
|
||||||
public ResponseEntity<Object> doSubVolumeBindingWeight(@RequestBody JSONObject param) {
|
public ResponseEntity<Object>
|
||||||
|
doSubVolumeBindingWeight(@RequestBody JSONObject param) {
|
||||||
return new ResponseEntity<>(nbjPdaService.doSubVolumeBindingWeight(param), HttpStatus.OK);
|
return new ResponseEntity<>(nbjPdaService.doSubVolumeBindingWeight(param), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,4 +80,10 @@ public class NbjPdaController {
|
|||||||
public ResponseEntity<Object> doSendShaft(@RequestBody JSONObject param) {
|
public ResponseEntity<Object> doSendShaft(@RequestBody JSONObject param) {
|
||||||
return new ResponseEntity<>(nbjPdaService.doSendShaft(param), HttpStatus.OK);
|
return new ResponseEntity<>(nbjPdaService.doSendShaft(param), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/toCleanCutCacheInventory")
|
||||||
|
@Log("清除分切暂存")
|
||||||
|
public ResponseEntity<Object> toCleanCutCacheInventory(@RequestBody JSONObject param) {
|
||||||
|
return new ResponseEntity<>(nbjPdaService.toCleanCutCacheInventory(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,4 +78,11 @@ public interface NbjPdaService {
|
|||||||
* @return /
|
* @return /
|
||||||
*/
|
*/
|
||||||
JSONObject doBindingGxV2(JSONObject param);
|
JSONObject doBindingGxV2(JSONObject param);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 清理分切暂存
|
||||||
|
* @param param /
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
JSONObject toCleanCutCacheInventory(JSONObject param);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.nl.wms.pda.st.service.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
@@ -65,6 +66,8 @@ public class NbjPdaServiceImpl implements NbjPdaService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IstIvtCutpointivtService stIvtCutpointivtService;
|
private IstIvtCutpointivtService stIvtCutpointivtService;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
private IBstIvtCutpointivtService bcutpointivtService;
|
||||||
|
@Autowired
|
||||||
private PointToPointAGVTask pointToPointAGVTask;
|
private PointToPointAGVTask pointToPointAGVTask;
|
||||||
@Autowired
|
@Autowired
|
||||||
private PdaSendShaftAGVTask pdaSendShaftAGVTask;
|
private PdaSendShaftAGVTask pdaSendShaftAGVTask;
|
||||||
@@ -119,8 +122,9 @@ public class NbjPdaServiceImpl implements NbjPdaService {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public JSONObject doSubVolumeDown(JSONObject param) {
|
public JSONObject doSubVolumeDown(JSONObject param) {
|
||||||
log.info("手持子卷下线,送到货梯 - {}", param);
|
log.info("手持子卷下线,送到货梯 - {}", param);
|
||||||
// point_code, vehicle_code
|
// point_code, vehicle_code, container_name
|
||||||
String pointCode = param.getString("point_code");
|
String pointCode = param.getString("point_code");
|
||||||
|
String containerName = param.getString("container_name");
|
||||||
String vehicleCode = param.getString("vehicle_code");
|
String vehicleCode = param.getString("vehicle_code");
|
||||||
// 校验任务
|
// 校验任务
|
||||||
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode);
|
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode);
|
||||||
@@ -129,6 +133,8 @@ public class NbjPdaServiceImpl implements NbjPdaService {
|
|||||||
}
|
}
|
||||||
SchBasePoint startPoint = pointService.getById(pointCode);
|
SchBasePoint startPoint = pointService.getById(pointCode);
|
||||||
startPoint.setPoint_status("2");
|
startPoint.setPoint_status("2");
|
||||||
|
// 子卷号
|
||||||
|
startPoint.setMaterial_code(containerName);
|
||||||
startPoint.setVehicle_code(vehicleCode);
|
startPoint.setVehicle_code(vehicleCode);
|
||||||
setUpdateByPC(startPoint);
|
setUpdateByPC(startPoint);
|
||||||
pointService.updateById(startPoint);
|
pointService.updateById(startPoint);
|
||||||
@@ -136,6 +142,7 @@ public class NbjPdaServiceImpl implements NbjPdaService {
|
|||||||
taskParam.put("device_code", pointCode);
|
taskParam.put("device_code", pointCode);
|
||||||
// 纸管编码
|
// 纸管编码
|
||||||
taskParam.put("vehicle_code", vehicleCode);
|
taskParam.put("vehicle_code", vehicleCode);
|
||||||
|
taskParam.put("container_name", containerName);
|
||||||
taskParam.put("config_code", "SubRollDownAGVTask");
|
taskParam.put("config_code", "SubRollDownAGVTask");
|
||||||
taskParam.put("create_mode", GeneralDefinition.PDA_CREATION);
|
taskParam.put("create_mode", GeneralDefinition.PDA_CREATION);
|
||||||
subRollDownAGVTask.apply(taskParam);
|
subRollDownAGVTask.apply(taskParam);
|
||||||
@@ -148,23 +155,28 @@ public class NbjPdaServiceImpl implements NbjPdaService {
|
|||||||
@Override
|
@Override
|
||||||
public JSONObject doSubVolumeBindingWeight(JSONObject param) {
|
public JSONObject doSubVolumeBindingWeight(JSONObject param) {
|
||||||
log.info("子卷绑定重量 - {}", param);
|
log.info("子卷绑定重量 - {}", param);
|
||||||
// container_name, weight
|
//container_name: 子卷号, roll_weight: 子卷重量, paper_weight:纸管重量
|
||||||
String containerName = param.getString("container_name");
|
String containerName = param.getString("container_name");
|
||||||
String weight = param.getString("weight");
|
Assert.notBlank(containerName, "子卷号不能为空!");
|
||||||
|
String rollWeight = param.getString("roll_weight");
|
||||||
|
String paperWeight = param.getString("paper_weight");
|
||||||
PdmBiSlittingproductionplan plan = slittingproductionplanService.getByContainerName(containerName);
|
PdmBiSlittingproductionplan plan = slittingproductionplanService.getByContainerName(containerName);
|
||||||
if (ObjectUtil.isEmpty(plan)) {
|
if (ObjectUtil.isEmpty(plan)) {
|
||||||
throw new BadRequestException("子卷号[ " + containerName + " ]分切计划不存在!");
|
throw new BadRequestException("子卷号[ " + containerName + " ]分切计划不存在!");
|
||||||
}
|
}
|
||||||
log.info("更新子卷:{} - 重量:{}", containerName, weight);
|
log.info("更新子卷:{} - 重量:{} - 纸管重量", containerName, rollWeight, paperWeight);
|
||||||
plan.setWeight(weight);
|
if (ObjectUtil.isNotEmpty(rollWeight)) {
|
||||||
plan.setUpdate_time(DateUtil.now());
|
plan.setWeight(rollWeight);
|
||||||
plan.setUpdate_optid(SecurityUtils.getCurrentUserId());
|
}
|
||||||
plan.setUpdate_optname(SecurityUtils.getCurrentNickName());
|
if (ObjectUtil.isNotEmpty(paperWeight)) {
|
||||||
|
plan.setPaper_weight(paperWeight);
|
||||||
|
}
|
||||||
|
TaskUtils.updateOptMessageBySlitterPlan(plan);
|
||||||
slittingproductionplanService.updateById(plan);
|
slittingproductionplanService.updateById(plan);
|
||||||
JSONObject result = new JSONObject();
|
JSONObject res = new JSONObject();
|
||||||
result.put("status", HttpStatus.OK.value());
|
res.put("status", cn.hutool.http.HttpStatus.HTTP_OK);
|
||||||
result.put("message", "子卷绑定重量成功!");
|
res.put("message", "重量更新成功!");
|
||||||
return result;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -187,9 +199,9 @@ public class NbjPdaServiceImpl implements NbjPdaService {
|
|||||||
String pointCode = param.getString("point_code");
|
String pointCode = param.getString("point_code");
|
||||||
BstIvtCutpointivt tzzcPoint = bstIvtCutpointivtService.getPintByTrussCode(pointCode, false);
|
BstIvtCutpointivt tzzcPoint = bstIvtCutpointivtService.getPintByTrussCode(pointCode, false);
|
||||||
JSONArray rows = param.getJSONArray("row");
|
JSONArray rows = param.getJSONArray("row");
|
||||||
List<String> orderIds = rows.stream()
|
List<PdmBiSlittingproductionplan> planList = rows.toJavaList(PdmBiSlittingproductionplan.class);
|
||||||
.map(o -> ((JSONObject) o))
|
List<String> orderIds = planList.stream()
|
||||||
.map(o -> o.getString("workorder_id"))
|
.map(o -> o.getWorkorder_id())
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.getByIds(orderIds);
|
List<PdmBiSlittingproductionplan> plans = slittingproductionplanService.getByIds(orderIds);
|
||||||
// 当前套轴的分切计划
|
// 当前套轴的分切计划
|
||||||
@@ -221,6 +233,29 @@ public class NbjPdaServiceImpl implements NbjPdaService {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject toCleanCutCacheInventory(JSONObject param) {
|
||||||
|
log.info("手持清理分切暂存位参数:{}", param);
|
||||||
|
// param: point_code
|
||||||
|
String pointCode = param.getString("point_code");
|
||||||
|
BstIvtCutpointivt agvCode = bcutpointivtService.getPintByTrussCode(pointCode, false);
|
||||||
|
if (agvCode.getTruss_point_code1().equals(pointCode)) {
|
||||||
|
agvCode.setQzz_no1("");
|
||||||
|
}
|
||||||
|
if (agvCode.getTruss_point_code2().equals(pointCode)) {
|
||||||
|
agvCode.setQzz_no2("");
|
||||||
|
}
|
||||||
|
if (ObjectUtil.isEmpty(agvCode.getQzz_no1()) && ObjectUtil.isEmpty(agvCode.getQzz_no2())) {
|
||||||
|
agvCode.setPoint_status("1");
|
||||||
|
}
|
||||||
|
TaskUtils.updateOptMessageByBCutPoint(agvCode);
|
||||||
|
bcutpointivtService.updateById(agvCode);
|
||||||
|
JSONObject res = new JSONObject();
|
||||||
|
res.put("status", cn.hutool.http.HttpStatus.HTTP_OK);
|
||||||
|
res.put("message", "库存清除成功!");
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
|||||||
@@ -138,6 +138,13 @@ public interface IpdmBiSlittingproductionplanService extends IService<PdmBiSlitt
|
|||||||
* @return /
|
* @return /
|
||||||
*/
|
*/
|
||||||
PdmBiSlittingproductionplan getByContainerName(String containerName);
|
PdmBiSlittingproductionplan getByContainerName(String containerName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过子卷获取多个分切计划
|
||||||
|
* @param collect
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<PdmBiSlittingproductionplan> getByContainerNames(List<String> collect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -288,5 +288,12 @@ public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl<PdmBiSli
|
|||||||
.eq(PdmBiSlittingproductionplan::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"));
|
.eq(PdmBiSlittingproductionplan::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"));
|
||||||
return pdmBiSlittingproductionplanMapper.selectOne(lam);
|
return pdmBiSlittingproductionplanMapper.selectOne(lam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PdmBiSlittingproductionplan> getByContainerNames(List<String> collect) {
|
||||||
|
LambdaQueryWrapper<PdmBiSlittingproductionplan> lam = new QueryWrapper<PdmBiSlittingproductionplan>().lambda();
|
||||||
|
lam.in(PdmBiSlittingproductionplan::getContainer_name, collect);
|
||||||
|
return pdmBiSlittingproductionplanMapper.selectList(lam);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -90,6 +90,14 @@ public interface IstIvtCutpointivtService extends IService<StIvtCutpointivt> {
|
|||||||
* @return /
|
* @return /
|
||||||
*/
|
*/
|
||||||
StIvtCutpointivt getPintByExtCode(String code, boolean flag);
|
StIvtCutpointivt getPintByExtCode(String code, boolean flag);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据点位编码获取分切机上下轴
|
||||||
|
* @param code 点位编码
|
||||||
|
* @param flag 是否判断启用
|
||||||
|
* @return /
|
||||||
|
*/
|
||||||
|
StIvtCutpointivt getPintByUpOrDownCode(String code, boolean flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public class StIvtCutpointivtParam extends BaseQuery<StIvtCutpointivt> {
|
|||||||
/**
|
/**
|
||||||
* 库存记录标识
|
* 库存记录标识
|
||||||
*/
|
*/
|
||||||
private Long ivt_id;
|
private String ivt_id;
|
||||||
/**
|
/**
|
||||||
* 点位编码
|
* 点位编码
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -146,6 +146,15 @@ public class StIvtCutpointivtServiceImpl extends ServiceImpl<StIvtCutpointivtMap
|
|||||||
return stIvtCutpointivtMapper.selectOne(lam);
|
return stIvtCutpointivtMapper.selectOne(lam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StIvtCutpointivt getPintByUpOrDownCode(String code, boolean flag) {
|
||||||
|
LambdaQueryWrapper<StIvtCutpointivt> lam = new LambdaQueryWrapper<>();
|
||||||
|
lam.eq(flag, StIvtCutpointivt::getIs_used, "1")
|
||||||
|
.and(la -> la.eq(StIvtCutpointivt::getUp_point_code, code).or()
|
||||||
|
.eq(StIvtCutpointivt::getDown_point_code, code));
|
||||||
|
return stIvtCutpointivtMapper.selectOne(lam);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取实体基础信息
|
* 获取实体基础信息
|
||||||
@@ -154,16 +163,6 @@ public class StIvtCutpointivtServiceImpl extends ServiceImpl<StIvtCutpointivtMap
|
|||||||
* @param isCreate 是否创建
|
* @param isCreate 是否创建
|
||||||
*/
|
*/
|
||||||
private StIvtCutpointivt getBasicInfo(StIvtCutpointivtParam params, boolean isCreate) {
|
private StIvtCutpointivt getBasicInfo(StIvtCutpointivtParam params, boolean isCreate) {
|
||||||
// if (isCreate) {
|
|
||||||
// params.setId(IdUtil.getStringId());
|
|
||||||
// params.setCreate_id(Long.valueOf(SecurityUtils.getCurrentUserId()));
|
|
||||||
// params.setCreate_name(SecurityUtils.getCurrentNickName());
|
|
||||||
// params.setCreate_time(DateUtil.now());
|
|
||||||
// params.setIs_delete(IOSEnum.IS_NOTANDYES.code("否"));
|
|
||||||
// }
|
|
||||||
// params.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
|
|
||||||
// params.setUpdate_optname(SecurityUtils.getCurrentNickName());
|
|
||||||
// params.setUpdate_time(DateUtil.now());
|
|
||||||
StIvtCutpointivt stIvtCutpointivt = new StIvtCutpointivt();
|
StIvtCutpointivt stIvtCutpointivt = new StIvtCutpointivt();
|
||||||
BeanUtils.copyProperties(params, stIvtCutpointivt);
|
BeanUtils.copyProperties(params, stIvtCutpointivt);
|
||||||
return stIvtCutpointivt;
|
return stIvtCutpointivt;
|
||||||
|
|||||||
@@ -12,12 +12,19 @@
|
|||||||
AND 0 = (SELECT COUNT(*)
|
AND 0 = (SELECT COUNT(*)
|
||||||
FROM st_ivt_hotpointivt ht2
|
FROM st_ivt_hotpointivt ht2
|
||||||
WHERE ht2.group_name = ht.group_name
|
WHERE ht2.group_name = ht.group_name
|
||||||
AND ht2.plan <![CDATA[ <= ]]> ht.plan
|
AND ht2.plan <![CDATA[ <> ]]> ht.plan
|
||||||
AND ht2.point_status = '02')
|
AND ht2.point_status = '02')
|
||||||
AND 0 = (SELECT COUNT(*)
|
AND 0 = (SELECT COUNT(*)
|
||||||
FROM sch_base_task t
|
FROM sch_base_task t
|
||||||
WHERE t.point_code2 = ht.point_code
|
WHERE t.point_code2 = ht.point_code
|
||||||
AND t.task_status <![CDATA[ < ]]> '07')
|
AND t.task_status <![CDATA[ < ]]> '07')
|
||||||
|
AND 0 = (SELECT COUNT(*)
|
||||||
|
FROM sch_base_task t2
|
||||||
|
LEFT JOIN st_ivt_hotpointivt ht3 ON ht3.point_code = t2.point_code2
|
||||||
|
WHERE ht3.plan <![CDATA[ <> ]]> ht.plan
|
||||||
|
AND ht3.group_name = ht.group_name
|
||||||
|
AND ht3.point_status = '01'
|
||||||
|
AND t2.task_status <![CDATA[ < ]]> '07')
|
||||||
</select>
|
</select>
|
||||||
<select id="getHotDeviceInfoForAcs" resultType="com.alibaba.fastjson.JSONArray">
|
<select id="getHotDeviceInfoForAcs" resultType="com.alibaba.fastjson.JSONArray">
|
||||||
SELECT point_code AS device_code,
|
SELECT point_code AS device_code,
|
||||||
|
|||||||
@@ -1,12 +1,9 @@
|
|||||||
package org.nl.wms.pdm.ivt.raw.service.dao;
|
package org.nl.wms.pdm.ivt.raw.service.dao;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
|
||||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -21,8 +18,6 @@ import com.baomidou.mybatisplus.extension.activerecord.Model;
|
|||||||
public class StIvtSbpointivt extends Model<StIvtSbpointivt> {
|
public class StIvtSbpointivt extends Model<StIvtSbpointivt> {
|
||||||
|
|
||||||
private static final long serialVersionUID = -7739291296662381393L;
|
private static final long serialVersionUID = -7739291296662381393L;
|
||||||
//@TableId(type = IdType.ASSIGN_ID)
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 点位标识
|
* 点位标识
|
||||||
@@ -76,7 +71,7 @@ public class StIvtSbpointivt extends Model<StIvtSbpointivt> {
|
|||||||
/**
|
/**
|
||||||
* 创建人
|
* 创建人
|
||||||
*/
|
*/
|
||||||
private Long create_id;
|
private String create_id;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -95,7 +90,7 @@ public class StIvtSbpointivt extends Model<StIvtSbpointivt> {
|
|||||||
/**
|
/**
|
||||||
* 修改人
|
* 修改人
|
||||||
*/
|
*/
|
||||||
private Long update_optid;
|
private String update_optid;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -123,16 +118,6 @@ public class StIvtSbpointivt extends Model<StIvtSbpointivt> {
|
|||||||
private String mes_used;
|
private String mes_used;
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取主键值
|
|
||||||
*
|
|
||||||
* @return 主键值
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
protected Serializable pkVal() {
|
|
||||||
return this.point_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.common.domain.query.PageQuery;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
import org.nl.wms.pdm.ivt.raw.service.dao.StIvtSbpointivt;
|
|
||||||
import org.nl.wms.pdm.ivt.raw.service.dao.mapper.StIvtSbpointivtMapper;
|
|
||||||
import org.nl.wms.pdm.ivt.raw.service.dao.dto.StIvtSbpointivtParam;
|
|
||||||
import org.nl.wms.pdm.ivt.raw.service.IstIvtSbpointivtService;
|
import org.nl.wms.pdm.ivt.raw.service.IstIvtSbpointivtService;
|
||||||
|
import org.nl.wms.pdm.ivt.raw.service.dao.StIvtSbpointivt;
|
||||||
|
import org.nl.wms.pdm.ivt.raw.service.dao.dto.StIvtSbpointivtParam;
|
||||||
|
import org.nl.wms.pdm.ivt.raw.service.dao.mapper.StIvtSbpointivtMapper;
|
||||||
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
|
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@@ -59,7 +59,6 @@ public class StIvtSbpointivtServiceImpl extends ServiceImpl<StIvtSbpointivtMappe
|
|||||||
if (whereJson.containsKey("mes_used")) {
|
if (whereJson.containsKey("mes_used")) {
|
||||||
queryWrapper.eq(StIvtSbpointivt::getMes_used, whereJson.get("mes_used"));
|
queryWrapper.eq(StIvtSbpointivt::getMes_used, whereJson.get("mes_used"));
|
||||||
}
|
}
|
||||||
queryWrapper.orderByDesc(StIvtSbpointivt::getPoint_code);
|
|
||||||
return stIvtSbpointivtMapper.selectPage(resultPage, queryWrapper);
|
return stIvtSbpointivtMapper.selectPage(resultPage, queryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description /
|
* @description 区域表DO
|
||||||
* @author lyd
|
* @author lyd
|
||||||
* @date 2023-05-16
|
* @date 2023-05-16
|
||||||
**/
|
**/
|
||||||
@@ -21,47 +21,47 @@ public class SchBaseRegion implements Serializable {
|
|||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** 区域编码 */
|
||||||
@TableId(value = "region_code", type = IdType.NONE)
|
@TableId(value = "region_code", type = IdType.NONE)
|
||||||
|
|
||||||
private String region_code;
|
private String region_code;
|
||||||
|
|
||||||
|
/** 区域名称 */
|
||||||
private String region_name;
|
private String region_name;
|
||||||
|
|
||||||
|
/** 点位类型描述 */
|
||||||
private String point_type_explain;
|
private String point_type_explain;
|
||||||
|
|
||||||
|
/** 点位状态描述 */
|
||||||
private String point_status_explain;
|
private String point_status_explain;
|
||||||
|
|
||||||
|
/** 是否有工单 */
|
||||||
private Boolean is_has_workder;
|
private Boolean is_has_workder;
|
||||||
|
|
||||||
|
/** 车间 */
|
||||||
private String workshop_code;
|
private String workshop_code;
|
||||||
|
|
||||||
|
/** 备注 */
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
/** 创建id */
|
||||||
private String create_id;
|
private String create_id;
|
||||||
|
|
||||||
|
/** 创建名 */
|
||||||
private String create_name;
|
private String create_name;
|
||||||
|
|
||||||
|
/** 创建时间 */
|
||||||
private String create_time;
|
private String create_time;
|
||||||
|
|
||||||
|
/** 修改人 */
|
||||||
private String update_optid;
|
private String update_optid;
|
||||||
|
|
||||||
|
/** 修改名 */
|
||||||
private String update_optname;
|
private String update_optname;
|
||||||
|
|
||||||
|
/** 修改时间 */
|
||||||
private String update_time;
|
private String update_time;
|
||||||
|
|
||||||
|
/** 序号 */
|
||||||
private Integer order_seq;
|
private Integer order_seq;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.nl.wms.sch.region.service.impl;
|
package org.nl.wms.sch.region.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
@@ -54,7 +55,6 @@ public class SchBaseRegionServiceImpl extends ServiceImpl<SchBaseRegionMapper, S
|
|||||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||||
String nickName = SecurityUtils.getCurrentNickName();
|
String nickName = SecurityUtils.getCurrentNickName();
|
||||||
String now = DateUtil.now();
|
String now = DateUtil.now();
|
||||||
|
|
||||||
entity.setCreate_id(currentUserId);
|
entity.setCreate_id(currentUserId);
|
||||||
entity.setCreate_name(nickName);
|
entity.setCreate_name(nickName);
|
||||||
entity.setCreate_time(now);
|
entity.setCreate_time(now);
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import org.nl.config.SpringContextHolder;
|
|||||||
import org.nl.config.language.LangProcess;
|
import org.nl.config.language.LangProcess;
|
||||||
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||||
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
|
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
|
||||||
|
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||||
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
||||||
|
|||||||
@@ -224,6 +224,7 @@ public class AcsUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String url = acs_url + api;
|
String url = acs_url + api;
|
||||||
|
log.info("下发的ACS地址:{}", url);
|
||||||
try {
|
try {
|
||||||
String resultMsg = HttpRequest.post(url)
|
String resultMsg = HttpRequest.post(url)
|
||||||
.body(String.valueOf(list))
|
.body(String.valueOf(list))
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class GeneralDefinition {
|
|||||||
public static final String ACS_CREATION = "2";
|
public static final String ACS_CREATION = "2";
|
||||||
/** 手持创建 */
|
/** 手持创建 */
|
||||||
public static final String PDA_CREATION = "3";
|
public static final String PDA_CREATION = "3";
|
||||||
/** 任务完成追加创建 */
|
/** 任务完成创建 */
|
||||||
public static final String TASK_CREATION = "4";
|
public static final String TASK_CREATION = "4";
|
||||||
// 请求方向
|
// 请求方向
|
||||||
/**ACS->LMS**/
|
/**ACS->LMS**/
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public class InHotTrussTask extends AbstractTask {
|
|||||||
String orderCode = requestObj.getString("order_code");
|
String orderCode = requestObj.getString("order_code");
|
||||||
String flag = "0";
|
String flag = "0";
|
||||||
PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode);
|
PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode);
|
||||||
if ("1".equals(order.getIs_baking())) {
|
if (GeneralDefinition.YES.equals(order.getIs_baking())) {
|
||||||
String bakingTemperature = order.getBaking_temperature();
|
String bakingTemperature = order.getBaking_temperature();
|
||||||
requestObj.put("temperature", bakingTemperature);
|
requestObj.put("temperature", bakingTemperature);
|
||||||
requestObj.put("time", order.getBaking_time());
|
requestObj.put("time", order.getBaking_time());
|
||||||
@@ -154,7 +154,7 @@ public class InHotTrussTask extends AbstractTask {
|
|||||||
// 此字段存放工单号
|
// 此字段存放工单号
|
||||||
hotDjwPoint.setSource_id(order.getWorkorder_id());
|
hotDjwPoint.setSource_id(order.getWorkorder_id());
|
||||||
setUpdateByType(hotDjwPoint, taskFinishedType);
|
setUpdateByType(hotDjwPoint, taskFinishedType);
|
||||||
pointService.update(hotDjwPoint);
|
pointService.updateById(hotDjwPoint);
|
||||||
} else {
|
} else {
|
||||||
// 如果是烘箱位, 需要判断是做为暂存,还是说进行暂存,则状态为03:暂存中
|
// 如果是烘箱位, 需要判断是做为暂存,还是说进行暂存,则状态为03:暂存中
|
||||||
hotpointivt.setContainer_name(order.getContainer_name());
|
hotpointivt.setContainer_name(order.getContainer_name());
|
||||||
|
|||||||
@@ -48,7 +48,8 @@ public class OutHotTrussTask extends AbstractTask {
|
|||||||
@Override
|
@Override
|
||||||
public void createCompletion(SchBaseTask task) {
|
public void createCompletion(SchBaseTask task) {
|
||||||
// 从烘箱暂存位找一个空位
|
// 从烘箱暂存位找一个空位
|
||||||
List<SchBasePoint> hotDjwList = pointService.getHotNotTaskPoint("A1", "A1-HXZC", "4", "1");
|
List<SchBasePoint> hotDjwList = pointService.getHotNotTaskPoint("A1", "A1-HXZC",
|
||||||
|
"4", "1");
|
||||||
if (hotDjwList.size() == 0) {
|
if (hotDjwList.size() == 0) {
|
||||||
throw new BadRequestException("烘箱烘烤完毕的暂存位不够!");
|
throw new BadRequestException("烘箱烘烤完毕的暂存位不够!");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,10 +88,10 @@ public class SendShaftAGVTask extends AbstractTask {
|
|||||||
String endPointCode = taskObj.getPoint_code2();
|
String endPointCode = taskObj.getPoint_code2();
|
||||||
BstIvtCutpointivt startPoint = bcutpointivtService.getPintByAgvCode(startPointCode, false);
|
BstIvtCutpointivt startPoint = bcutpointivtService.getPintByAgvCode(startPointCode, false);
|
||||||
StIvtCutpointivt endPoint = stIvtCutpointivtService.getOneByCode(endPointCode);
|
StIvtCutpointivt endPoint = stIvtCutpointivtService.getOneByCode(endPointCode);
|
||||||
// 分切计划修改状态:02->03
|
// 分切计划修改状态:02->05
|
||||||
List<String> qzzNos = Stream.of(startPoint.getQzz_no1(), startPoint.getQzz_no2()).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
|
List<String> qzzNos = Stream.of(startPoint.getQzz_no1(), startPoint.getQzz_no2()).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
|
||||||
LambdaUpdateWrapper<PdmBiSlittingproductionplan> planLam = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<PdmBiSlittingproductionplan> planLam = new LambdaUpdateWrapper<>();
|
||||||
planLam.set(PdmBiSlittingproductionplan::getStatus, "03")
|
planLam.set(PdmBiSlittingproductionplan::getStatus, "05")
|
||||||
.set(PdmBiSlittingproductionplan::getUpdate_time, DateUtil.now())
|
.set(PdmBiSlittingproductionplan::getUpdate_time, DateUtil.now())
|
||||||
.in(PdmBiSlittingproductionplan::getQzzno, qzzNos);
|
.in(PdmBiSlittingproductionplan::getQzzno, qzzNos);
|
||||||
slittingproductionplanService.update(planLam);
|
slittingproductionplanService.update(planLam);
|
||||||
@@ -102,6 +102,7 @@ public class SendShaftAGVTask extends AbstractTask {
|
|||||||
startPoint.setUp_gx2("");
|
startPoint.setUp_gx2("");
|
||||||
startPoint.setDown_gx1("");
|
startPoint.setDown_gx1("");
|
||||||
startPoint.setDown_gx2("");
|
startPoint.setDown_gx2("");
|
||||||
|
startPoint.setPoint_status("1");
|
||||||
PointUtils.setBCutUpdateByType(startPoint, taskFinishedType);
|
PointUtils.setBCutUpdateByType(startPoint, taskFinishedType);
|
||||||
bcutpointivtService.updateById(startPoint);
|
bcutpointivtService.updateById(startPoint);
|
||||||
// 终点赋值气胀轴编码
|
// 终点赋值气胀轴编码
|
||||||
@@ -109,6 +110,11 @@ public class SendShaftAGVTask extends AbstractTask {
|
|||||||
endPoint.setDown_qzzno(taskObj.getVehicle_code2());
|
endPoint.setDown_qzzno(taskObj.getVehicle_code2());
|
||||||
PointUtils.setCutUpdateByType(endPoint, taskFinishedType);
|
PointUtils.setCutUpdateByType(endPoint, taskFinishedType);
|
||||||
stIvtCutpointivtService.updateById(endPoint);
|
stIvtCutpointivtService.updateById(endPoint);
|
||||||
|
// 任务完成
|
||||||
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
|
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||||
|
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||||
|
taskService.updateById(taskObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class SubRollDownAGVTask extends AbstractTask {
|
|||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
@Override
|
@Override
|
||||||
public void createCompletion(SchBaseTask task) {
|
public void createCompletion(SchBaseTask task) {
|
||||||
// 查找空位没任务的货梯
|
// update: 查找空位没任务的货梯 -> 查找一楼暂存位空位
|
||||||
List<SchBasePoint> lifts = pointService.getAllBusinessNotTaskPoint("A1", "A1-LIFT-AREA",
|
List<SchBasePoint> lifts = pointService.getAllBusinessNotTaskPoint("A1", "A1-LIFT-AREA",
|
||||||
"1", "1", null, null);
|
"1", "1", null, null);
|
||||||
if (lifts.size() == 0) {
|
if (lifts.size() == 0) {
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ package org.nl.wms.sch.task_manage.tasks.raw;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
|
import org.nl.wms.pdm.ivt.raw.service.IstIvtSbpointivtService;
|
||||||
|
import org.nl.wms.pdm.ivt.raw.service.dao.StIvtSbpointivt;
|
||||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||||
@@ -14,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import static org.nl.wms.util.PointUtils.setSbUpdateByType;
|
||||||
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
|
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
|
||||||
import static org.nl.wms.util.TaskUtils.setUpdateByPC;
|
import static org.nl.wms.util.TaskUtils.setUpdateByPC;
|
||||||
|
|
||||||
@@ -29,6 +32,8 @@ public class RawCallRollAGVTask extends AbstractTask {
|
|||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISchBaseTaskService taskService;
|
private ISchBaseTaskService taskService;
|
||||||
|
@Autowired
|
||||||
|
private IstIvtSbpointivtService sbpointivtService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void create() throws BadRequestException {
|
public void create() throws BadRequestException {
|
||||||
@@ -37,7 +42,6 @@ public class RawCallRollAGVTask extends AbstractTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createCompletion(SchBaseTask task) {
|
public void createCompletion(SchBaseTask task) {
|
||||||
// 需要校验是两点任务还是四点任务
|
|
||||||
// up_task_code:上一个任务code
|
// up_task_code:上一个任务code
|
||||||
// start_point_code:收卷辊库桁架出口
|
// start_point_code:收卷辊库桁架出口
|
||||||
String requestParam = task.getRequest_param();
|
String requestParam = task.getRequest_param();
|
||||||
@@ -45,6 +49,7 @@ public class RawCallRollAGVTask extends AbstractTask {
|
|||||||
String startPointCode = requestObj.getString("start_point_code");
|
String startPointCode = requestObj.getString("start_point_code");
|
||||||
// 创建任务
|
// 创建任务
|
||||||
task.setPoint_code1(startPointCode);
|
task.setPoint_code1(startPointCode);
|
||||||
|
task.setPoint_code2(task.getPoint_code2() + "_K");
|
||||||
task.setHandle_class(THIS_CLASS);
|
task.setHandle_class(THIS_CLASS);
|
||||||
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
||||||
setUpdateByPC(task);
|
setUpdateByPC(task);
|
||||||
@@ -55,6 +60,11 @@ public class RawCallRollAGVTask extends AbstractTask {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||||
checkTaskOptionStatus(taskObj);
|
checkTaskOptionStatus(taskObj);
|
||||||
|
String pointCode2 = taskObj.getPoint_code2();
|
||||||
|
StIvtSbpointivt sbPoint = sbpointivtService.getByPointCode(pointCode2.substring(0, pointCode2.length() - 2), false);
|
||||||
|
sbPoint.setVehicle_code(taskObj.getVehicle_code());
|
||||||
|
setSbUpdateByType(sbPoint, taskFinishedType);
|
||||||
|
sbpointivtService.updateById(sbPoint);
|
||||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import org.redisson.api.RLock;
|
|||||||
import org.redisson.api.RedissonClient;
|
import org.redisson.api.RedissonClient;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
@@ -56,6 +57,7 @@ public class RawDownAGVTask extends AbstractTask {
|
|||||||
|
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||||
public void createCompletion(SchBaseTask task) {
|
public void createCompletion(SchBaseTask task) {
|
||||||
String requestParam = task.getRequest_param();
|
String requestParam = task.getRequest_param();
|
||||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||||
@@ -64,26 +66,26 @@ public class RawDownAGVTask extends AbstractTask {
|
|||||||
String deviceCode = requestObj.getString("device_code");
|
String deviceCode = requestObj.getString("device_code");
|
||||||
// 收卷辊库出口
|
// 收卷辊库出口
|
||||||
String startPointCode = requestObj.getString("start_point_code");
|
String startPointCode = requestObj.getString("start_point_code");
|
||||||
// 查找烘箱可用的位置(没货、没锁、没任务、没禁用)
|
RLock lock = redissonClient.getLock(HX_REGION);
|
||||||
|
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
|
||||||
|
try {
|
||||||
|
if (tryLock) {
|
||||||
|
// 查找烘箱对接位可用的位置(没货、没任务、没禁用)
|
||||||
List<SchBasePoint> hxPoints = pointService.getHotNotTaskPoint("A1", HX_REGION,
|
List<SchBasePoint> hxPoints = pointService.getHotNotTaskPoint("A1", HX_REGION,
|
||||||
"1", "1");
|
"1", "1");
|
||||||
if (hxPoints.size() == 0) {
|
if (hxPoints.size() == 0) {
|
||||||
throw new BadRequestException("烘箱没有可以用的对接位!");
|
throw new BadRequestException("烘箱没有可以用的对接位!");
|
||||||
}
|
}
|
||||||
SchBasePoint hxPoint = hxPoints.get(0);
|
SchBasePoint hxPoint = hxPoints.get(0);
|
||||||
RLock lock = redissonClient.getLock(hxPoint.getPoint_code());
|
|
||||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
|
||||||
try {
|
|
||||||
if (tryLock) {
|
|
||||||
if ("1".equals(flag)) {
|
if ("1".equals(flag)) {
|
||||||
// 创建四点任务:先去收卷辊出口在到生箔位,在从生箔到烘箱对接位
|
// 创建四点任务:先去收卷辊出口在到生箔位,在从生箔到烘箱对接位
|
||||||
task.setPoint_code1(startPointCode);
|
task.setPoint_code1(startPointCode);
|
||||||
task.setPoint_code2(deviceCode);
|
task.setPoint_code2(deviceCode + "_K");
|
||||||
task.setPoint_code3(deviceCode);
|
task.setPoint_code3(deviceCode + "_M");
|
||||||
task.setPoint_code4(hxPoint.getPoint_code());
|
task.setPoint_code4(hxPoint.getPoint_code());
|
||||||
} else {
|
} else {
|
||||||
// 创建两点任务: 搬运到烘箱位置
|
// 创建两点任务: 搬运到烘箱位置
|
||||||
task.setPoint_code1(deviceCode);
|
task.setPoint_code1(deviceCode + "_M");
|
||||||
task.setPoint_code2(hxPoint.getPoint_code());
|
task.setPoint_code2(hxPoint.getPoint_code());
|
||||||
}
|
}
|
||||||
// 保存任务参数
|
// 保存任务参数
|
||||||
@@ -129,28 +131,36 @@ public class RawDownAGVTask extends AbstractTask {
|
|||||||
// 校验任务
|
// 校验任务
|
||||||
SchBaseTask taskObj = taskService.getByCode(taskCode);
|
SchBaseTask taskObj = taskService.getByCode(taskCode);
|
||||||
BigDecimal weight = task.getBigDecimal("weight");
|
BigDecimal weight = task.getBigDecimal("weight");
|
||||||
if (ObjectUtil.isNotEmpty(weight)) {
|
|
||||||
// 更新生箔重量
|
|
||||||
JSONObject requestObj = JSONObject.parseObject(taskObj.getRequest_param());
|
JSONObject requestObj = JSONObject.parseObject(taskObj.getRequest_param());
|
||||||
String orderCode = requestObj.getString("order_code");
|
String orderCode = requestObj.getString("order_code");
|
||||||
|
if (ObjectUtil.isNotEmpty(weight)) {
|
||||||
|
// 更新生箔重量
|
||||||
PdmBiRawfoilworkorder rawOrder = rawfoilworkorderService.getByContainerName(orderCode);
|
PdmBiRawfoilworkorder rawOrder = rawfoilworkorderService.getByContainerName(orderCode);
|
||||||
rawOrder.setProductin_qty(weight);
|
rawOrder.setProductin_qty(weight);
|
||||||
TaskUtils.setRawOrderCreateByDefault(rawOrder);
|
TaskUtils.setRawOrderCreateByDefault(rawOrder);
|
||||||
rawfoilworkorderService.getById(rawOrder);
|
rawfoilworkorderService.updateById(rawOrder);
|
||||||
log.info("ACS请求更新生箔母卷: [{}]重量: [{}]", orderCode, weight);
|
log.info("ACS请求更新生箔母卷: [{}]重量: [{}]", orderCode, weight);
|
||||||
}
|
}
|
||||||
|
String carNo = task.getString("car_no");
|
||||||
// 根据传来的类型去对任务进行操作
|
// 根据传来的类型去对任务进行操作
|
||||||
if (status.equals(TaskStatus.EXECUTING)) {
|
if (TaskStatus.FINISHED.equals(status)) {
|
||||||
|
finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
|
||||||
|
} else if (TaskStatus.CANCELED.equals(status)) {
|
||||||
|
cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
|
||||||
|
} else if (TaskStatus.EXECUTING.equals(status) || ObjectUtil.isNotEmpty(carNo)) {
|
||||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||||
taskObj.setCar_no(task.getString("car_no"));
|
taskObj.setCar_no(carNo);
|
||||||
TaskUtils.setUpdateByAcs(taskObj);
|
TaskUtils.setUpdateByAcs(taskObj);
|
||||||
taskService.updateById(taskObj);
|
taskService.updateById(taskObj);
|
||||||
}
|
if (ObjectUtil.isNotEmpty(carNo)) {
|
||||||
if (status.equals(TaskStatus.FINISHED)) {
|
// 更新车号到生箔工单
|
||||||
finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
|
PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode);
|
||||||
}
|
order.setAgvno(carNo);
|
||||||
if (status.equals(TaskStatus.CANCELED)) {
|
TaskUtils.setRawOrderCreateByDefault(order);
|
||||||
cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
|
rawfoilworkorderService.updateById(order);
|
||||||
|
log.info("ACS请求更新生箔母卷: [{}]车号: [{}]", orderCode, carNo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -144,6 +144,7 @@ public class SlitterDownAGVTask extends AbstractTask {
|
|||||||
BstIvtCutpointivt endPoint = bstIvtCutpointivtService.getPintByAgvCode(endPointCode, false);
|
BstIvtCutpointivt endPoint = bstIvtCutpointivtService.getPintByAgvCode(endPointCode, false);
|
||||||
endPoint.setQzz_no1(taskObj.getVehicle_code());
|
endPoint.setQzz_no1(taskObj.getVehicle_code());
|
||||||
endPoint.setQzz_no2(taskObj.getVehicle_code2());
|
endPoint.setQzz_no2(taskObj.getVehicle_code2());
|
||||||
|
endPoint.setPoint_status("3");
|
||||||
// 设置管芯编码
|
// 设置管芯编码
|
||||||
setGxMaterialInfoToPoint(list, endPoint);
|
setGxMaterialInfoToPoint(list, endPoint);
|
||||||
setBCutUpdateByType(endPoint, taskFinishedType);
|
setBCutUpdateByType(endPoint, taskFinishedType);
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ public class SlitterSendRollAGVTask extends AbstractTask {
|
|||||||
String startPointCode = taskObj.getPoint_code1();
|
String startPointCode = taskObj.getPoint_code1();
|
||||||
StIvtCutpointivt startPoint = cutpointivtService.getOneByCode(startPointCode);
|
StIvtCutpointivt startPoint = cutpointivtService.getOneByCode(startPointCode);
|
||||||
// todo: 是否改成取货完成上报
|
// todo: 是否改成取货完成上报
|
||||||
if (ObjectUtil.isEmpty(startPoint)
|
if (ObjectUtil.isNotEmpty(startPoint)
|
||||||
&& ObjectUtil.isNotEmpty(requestObj.getString("is_flag"))
|
&& ObjectUtil.isNotEmpty(requestObj.getString("is_flag"))
|
||||||
&& "1".equals(requestObj.getString("is_flag"))) {
|
&& "1".equals(requestObj.getString("is_flag"))) {
|
||||||
// 如果是生箔就不做操作,只有分切上料位才需要清空数据
|
// 如果是生箔就不做操作,只有分切上料位才需要清空数据
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ public class SlitterUpAGVTask extends AbstractTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createCompletion(SchBaseTask task) {
|
public void createCompletion(SchBaseTask task) {
|
||||||
|
TaskUtils.createTask("A1-SJGK", () -> {
|
||||||
String requestParam = task.getRequest_param();
|
String requestParam = task.getRequest_param();
|
||||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||||
String isFlag = requestObj.getString("is_flag");
|
String isFlag = requestObj.getString("is_flag");
|
||||||
@@ -84,6 +85,8 @@ public class SlitterUpAGVTask extends AbstractTask {
|
|||||||
setUpdateByPC(task);
|
setUpdateByPC(task);
|
||||||
taskService.save(task);
|
taskService.save(task);
|
||||||
log.info("任务创建成功:{}", task);
|
log.info("任务创建成功:{}", task);
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.nl.wms.sch.task_manage.tasks.slitter;
|
package org.nl.wms.sch.task_manage.tasks.slitter;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||||
@@ -14,11 +15,15 @@ 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.constant.GeneralDefinition;
|
||||||
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
||||||
import org.nl.wms.util.TaskUtils;
|
import org.nl.wms.util.TaskUtils;
|
||||||
|
import org.redisson.api.RLock;
|
||||||
|
import org.redisson.api.RedissonClient;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import static org.nl.wms.util.PointUtils.clearPoint;
|
import static org.nl.wms.util.PointUtils.clearPoint;
|
||||||
import static org.nl.wms.util.TaskUtils.*;
|
import static org.nl.wms.util.TaskUtils.*;
|
||||||
@@ -40,22 +45,30 @@ public class SlitterUpTrussTask extends AbstractTask {
|
|||||||
private SlitterUpAGVTask slitterUpAGVTask;
|
private SlitterUpAGVTask slitterUpAGVTask;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IpdmBiRawfoilworkorderService rawfoilworkorderService;
|
private IpdmBiRawfoilworkorderService rawfoilworkorderService;
|
||||||
|
@Autowired
|
||||||
|
private RedissonClient redissonClient;
|
||||||
@Override
|
@Override
|
||||||
public void create() throws BadRequestException {
|
public void create() throws BadRequestException {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SneakyThrows
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
|
||||||
public void createCompletion(SchBaseTask task) {
|
public void createCompletion(SchBaseTask task) {
|
||||||
// 桁架任务,到对接位
|
// 桁架任务,到对接位
|
||||||
String requestParam = task.getRequest_param();
|
String requestParam = task.getRequest_param();
|
||||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||||
String pointCode = requestObj.getString("zc_point");
|
String pointCode = requestObj.getString("zc_point");
|
||||||
// 终点为出口,不校验是否占用
|
RLock lock = redissonClient.getLock("A1-HXZC");
|
||||||
List<SchBasePoint> endPoints = pointService.getPointByConditions("A1", "A1-HXZC",
|
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
|
||||||
"1", null, null, true);
|
try {
|
||||||
|
if (tryLock) {
|
||||||
|
// 终点为出口
|
||||||
|
List<SchBasePoint> endPoints = pointService.getHotNotTaskPoint("A1", "A1-HXZC",
|
||||||
|
"1", "1");
|
||||||
if (endPoints.size() == 0) {
|
if (endPoints.size() == 0) {
|
||||||
throw new BadRequestException("烘箱出口查询失败!");
|
throw new BadRequestException("烘箱没有可以用的对接位!");
|
||||||
}
|
}
|
||||||
SchBasePoint point = endPoints.get(0);
|
SchBasePoint point = endPoints.get(0);
|
||||||
task.setPoint_code1(pointCode);
|
task.setPoint_code1(pointCode);
|
||||||
@@ -67,6 +80,13 @@ public class SlitterUpTrussTask extends AbstractTask {
|
|||||||
taskService.save(task);
|
taskService.save(task);
|
||||||
log.info("任务创建成功:{}", task);
|
log.info("任务创建成功:{}", task);
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
|
if (lock.isHeldByCurrentThread() && lock.isLocked()) {
|
||||||
|
lock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
@@ -92,7 +112,8 @@ public class SlitterUpTrussTask extends AbstractTask {
|
|||||||
taskParam.put("is_flag", isFlag);
|
taskParam.put("is_flag", isFlag);
|
||||||
// 空轴的编码
|
// 空轴的编码
|
||||||
taskParam.put("vehicle_code", taskObj.getVehicle_code());
|
taskParam.put("vehicle_code", taskObj.getVehicle_code());
|
||||||
taskParam.put("vehicle_code2", order.getWind_roll());
|
// 满轴的载具号
|
||||||
|
taskParam.put("vehicle_code2", order.getResource_name());
|
||||||
taskParam.put("workorder_id", workorderId);
|
taskParam.put("workorder_id", workorderId);
|
||||||
taskParam.put("config_code", "SlitterUpAGVTask");
|
taskParam.put("config_code", "SlitterUpAGVTask");
|
||||||
taskParam.put("up_task_code", taskObj.getTask_code());
|
taskParam.put("up_task_code", taskObj.getTask_code());
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import org.nl.wms.pdm.ivt.cut.service.dao.StIvtCutpointivt;
|
|||||||
import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt;
|
import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt;
|
||||||
import org.nl.wms.pdm.ivt.hot.service.IstIvtHotpointivtService;
|
import org.nl.wms.pdm.ivt.hot.service.IstIvtHotpointivtService;
|
||||||
import org.nl.wms.pdm.ivt.hot.service.impl.StIvtHotpointivtServiceImpl;
|
import org.nl.wms.pdm.ivt.hot.service.impl.StIvtHotpointivtServiceImpl;
|
||||||
|
import org.nl.wms.pdm.ivt.raw.service.dao.StIvtSbpointivt;
|
||||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||||
import org.nl.wms.sch.point.service.impl.SchBasePointServiceImpl;
|
import org.nl.wms.sch.point.service.impl.SchBasePointServiceImpl;
|
||||||
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
||||||
@@ -248,4 +249,35 @@ public class PointUtils {
|
|||||||
setCutUpdateByPC(pointObj);
|
setCutUpdateByPC(pointObj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生箔点位修改更新信息
|
||||||
|
**/
|
||||||
|
public static void setSbUpdateByAcs(StIvtSbpointivt pointObj) {
|
||||||
|
pointObj.setUpdate_optid(GeneralDefinition.ACS_ID);
|
||||||
|
pointObj.setUpdate_optname(GeneralDefinition.ACS_NAME);
|
||||||
|
pointObj.setUpdate_time(DateUtil.now());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生箔位修改更新信息
|
||||||
|
**/
|
||||||
|
public static void setSbUpdateByPC(StIvtSbpointivt pointObj) {
|
||||||
|
pointObj.setUpdate_optid(SecurityUtils.getCurrentUserId());
|
||||||
|
pointObj.setUpdate_optname(SecurityUtils.getCurrentNickName());
|
||||||
|
pointObj.setUpdate_time(DateUtil.now());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生箔赋值点位修改信息,只做赋值不做更新!!!
|
||||||
|
* @param pointObj 点位
|
||||||
|
* @param taskFinishedType 操作类型
|
||||||
|
*/
|
||||||
|
public static void setSbUpdateByType(StIvtSbpointivt pointObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||||
|
if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) {
|
||||||
|
setSbUpdateByAcs(pointObj);
|
||||||
|
} else {
|
||||||
|
setSbUpdateByPC(pointObj);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
|
|||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
import org.nl.common.utils.SecurityUtils;
|
import org.nl.common.utils.SecurityUtils;
|
||||||
@@ -17,10 +18,17 @@ 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.core.constant.GeneralDefinition;
|
||||||
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
||||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||||
|
import org.redisson.api.RLock;
|
||||||
|
import org.redisson.api.RedissonClient;
|
||||||
|
import org.springframework.transaction.PlatformTransactionManager;
|
||||||
|
import org.springframework.transaction.TransactionDefinition;
|
||||||
|
import org.springframework.transaction.TransactionStatus;
|
||||||
|
import org.springframework.transaction.support.DefaultTransactionDefinition;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: lyd
|
* @Author: lyd
|
||||||
@@ -30,6 +38,38 @@ import java.util.List;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class TaskUtils {
|
public class TaskUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建任务
|
||||||
|
* @param region 区域编码
|
||||||
|
* @param function
|
||||||
|
*/
|
||||||
|
@SneakyThrows
|
||||||
|
public static void createTask(String region, Runnable function){
|
||||||
|
RedissonClient redissonClient = SpringContextHolder.getBean(RedissonClient.class);
|
||||||
|
RLock lock = redissonClient.getLock(region);
|
||||||
|
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
|
||||||
|
try {
|
||||||
|
if (tryLock) {
|
||||||
|
PlatformTransactionManager txManager = SpringContextHolder.getBean(PlatformTransactionManager.class);
|
||||||
|
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
|
||||||
|
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
|
||||||
|
TransactionStatus status = txManager.getTransaction(def);
|
||||||
|
|
||||||
|
//执行目标方法
|
||||||
|
function.run();
|
||||||
|
|
||||||
|
txManager.commit(status);
|
||||||
|
} else {
|
||||||
|
throw new BadRequestException("其他设备占用锁,等待结束!");
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
if (tryLock) {
|
||||||
|
lock.unlock();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public static void setCreateByAcs(SchBaseTask taskObj) {
|
public static void setCreateByAcs(SchBaseTask taskObj) {
|
||||||
taskObj.setCreate_id(GeneralDefinition.ACS_ID);
|
taskObj.setCreate_id(GeneralDefinition.ACS_ID);
|
||||||
taskObj.setCreate_name(GeneralDefinition.ACS_NAME);
|
taskObj.setCreate_name(GeneralDefinition.ACS_NAME);
|
||||||
@@ -337,4 +377,14 @@ public class TaskUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 赋值任务的修改时间、人等信息
|
||||||
|
* @param point 任务
|
||||||
|
*/
|
||||||
|
public static void updateOptMessageByBCutPoint(BstIvtCutpointivt point) {
|
||||||
|
point.setUpdate_optid(SecurityUtils.getCurrentUserId());
|
||||||
|
point.setUpdate_optname(SecurityUtils.getCurrentUsername());
|
||||||
|
point.setUpdate_time(DateUtil.now());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user