feat: 混碾缺空、满料
This commit is contained in:
@@ -23,6 +23,7 @@ import org.nl.system.service.notice.ISysNoticeService;
|
|||||||
import org.nl.system.service.notice.dao.SysNotice;
|
import org.nl.system.service.notice.dao.SysNotice;
|
||||||
import org.nl.system.service.notice.dao.mapper.SysNoticeMapper;
|
import org.nl.system.service.notice.dao.mapper.SysNoticeMapper;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@@ -158,6 +159,7 @@ public class SysNoticeServiceImpl extends ServiceImpl<SysNoticeMapper, SysNotice
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Async
|
||||||
public void createNotice(String msg, String title, String type) {
|
public void createNotice(String msg, String title, String type) {
|
||||||
List<SysNotice> sysNotices = sysNoticeMapper.selectList(new LambdaQueryWrapper<SysNotice>()
|
List<SysNotice> sysNotices = sysNoticeMapper.selectList(new LambdaQueryWrapper<SysNotice>()
|
||||||
.eq(SysNotice::getNotice_title, title)
|
.eq(SysNotice::getNotice_title, title)
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public class AcsResponse extends BaseResponse {
|
|||||||
|
|
||||||
public static AcsResponse requestRefuse(String message) {
|
public static AcsResponse requestRefuse(String message) {
|
||||||
AcsResponse result = new AcsResponse();
|
AcsResponse result = new AcsResponse();
|
||||||
result.setCode(HttpStatus.HTTP_BAD_REQUEST);
|
result.setCode(HttpStatus.HTTP_OK);
|
||||||
result.setMessage(message);
|
result.setMessage(message);
|
||||||
result.setResponseDate(DateUtil.now());
|
result.setResponseDate(DateUtil.now());
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -154,8 +154,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
result.setMessage(message);
|
result.setMessage(message);
|
||||||
result.setRequestNo(requestNo);
|
result.setRequestNo(requestNo);
|
||||||
// 消息通知
|
// 消息通知
|
||||||
noticeService.createNotice("异常信息:" + message, "acsApply: " + param.getString("request_medthod_code"),
|
// noticeService.createNotice(message, "ACS请求" + param.getString("request_medthod_code") + "出错",
|
||||||
NoticeTypeEnum.EXCEPTION.getCode());
|
// NoticeTypeEnum.EXCEPTION.getCode());
|
||||||
}
|
}
|
||||||
// acs对接记录
|
// acs对接记录
|
||||||
interactRecordService.saveRecord(requestMethodName, param, result, GeneralDefinition.ACS_LMS);
|
interactRecordService.saveRecord(requestMethodName, param, result, GeneralDefinition.ACS_LMS);
|
||||||
|
|||||||
@@ -106,6 +106,20 @@ public class PdmBdWorkorder implements Serializable {
|
|||||||
private Integer unqualified_qty;
|
private Integer unqualified_qty;
|
||||||
private Integer priority;
|
private Integer priority;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实际新料重量
|
||||||
|
*/
|
||||||
|
private BigDecimal real_new_weight;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 实际旧料重量
|
||||||
|
*/
|
||||||
|
private BigDecimal real_old_weight;
|
||||||
|
/**
|
||||||
|
* 比例
|
||||||
|
*/
|
||||||
|
private Integer material_ratio;
|
||||||
|
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String material_name;
|
private String material_name;
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update(SchBaseTask entity) {
|
public void update(SchBaseTask entity) {
|
||||||
SchBaseTask dto = schBaseTaskMapper.selectById(entity.getTask_code());
|
SchBaseTask dto = schBaseTaskMapper.selectById(entity.getTask_id());
|
||||||
if (dto == null) {
|
if (dto == null) {
|
||||||
throw new BadRequestException("被删除或无权限,操作失败!");
|
throw new BadRequestException("被删除或无权限,操作失败!");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -45,14 +46,13 @@ import java.util.stream.Collectors;
|
|||||||
* @author ldjun
|
* @author ldjun
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
* @date 2023年05月16日 16:44
|
* @date 2023年05月16日 16:44
|
||||||
* @desc 混碾满料任务: 混碾机 -> 困料输送线
|
* @desc 混碾满料任务: 混碾机 -> 困料货架
|
||||||
* 混碾没有工单,也可能获取不到压机工单(统一用获取不到压机工单,全部由要料记录表)
|
* 混碾有工单
|
||||||
*/
|
*/
|
||||||
@Component(value = "HLMLTask")
|
@Component(value = "HNMLTask")
|
||||||
@TaskType("HLMLTask")
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class HNMLTask extends AbstractTask {
|
public class HNMLTask extends AbstractTask {
|
||||||
private static final String TASK_CONFIG_CODE = "HLMLTask";
|
private static final String TASK_CONFIG_CODE = "HNMLTask";
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISchBasePointService pointService;
|
private ISchBasePointService pointService;
|
||||||
@Autowired
|
@Autowired
|
||||||
@@ -115,32 +115,17 @@ public class HNMLTask extends AbstractTask {
|
|||||||
// 找终点
|
// 找终点
|
||||||
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
||||||
if (ObjectUtil.isEmpty(point)) {
|
if (ObjectUtil.isEmpty(point)) {
|
||||||
task.setRemark("未存在生产该料的压机!");
|
task.setRemark("未存在可用的睏料货架!");
|
||||||
taskService.updateById(task);
|
taskService.updateById(task);
|
||||||
// 消息通知
|
// 消息通知
|
||||||
noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getPoint_code1(), NoticeTypeEnum.WARN.getCode());
|
noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getPoint_code1(), NoticeTypeEnum.WARN.getCode());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (ObjectUtil.isNotEmpty(point.getTask_warn())) {
|
|
||||||
task.setRemark(point.getTask_warn());
|
|
||||||
taskService.updateById(task);
|
|
||||||
// 消息通知
|
|
||||||
noticeService.createNotice("找不到困料点", TASK_CONFIG_CODE + task.getPoint_code1(), NoticeTypeEnum.WARN.getCode());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
log.info("任务【" + task.getTask_code() + "】叫料标识:{}", point.getRecord_id());
|
|
||||||
// 叫料完成
|
|
||||||
requestMaterialRecordService.callMaterialFinish(point.getRecord_id(), jsonObject.getBigDecimal("weight"));
|
|
||||||
// 要料记录
|
|
||||||
jsonObject.put("record_id", point.getRecord_id());
|
|
||||||
// 设置终点并修改创建成功状态
|
// 设置终点并修改创建成功状态
|
||||||
task.setPoint_code2(point.getPoint_code());
|
task.setPoint_code2(point.getPoint_code());
|
||||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||||
task.setRemark("");
|
task.setRemark("");
|
||||||
task.setVehicle_type(GeneralDefinition.MATERIAL_CUP);
|
task.setVehicle_type(point.getVehicle_type());
|
||||||
// 告知acs去左边右边
|
|
||||||
int number = getNumber(point);
|
|
||||||
task.setResponse_param(new JSONObject().fluentPut("direction", number).toJSONString());
|
|
||||||
task.setRequest_param(jsonObject.toString());
|
task.setRequest_param(jsonObject.toString());
|
||||||
taskService.updateById(task);
|
taskService.updateById(task);
|
||||||
|
|
||||||
@@ -151,17 +136,39 @@ public class HNMLTask extends AbstractTask {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int getNumber(SchBasePoint point) {
|
@Override
|
||||||
// 获取设备编码
|
@Transactional(rollbackFor = Exception.class)
|
||||||
String deviceCode = point.getDevice_code();
|
public void createCompletion(SchBaseTask task) {
|
||||||
int number = Integer.parseInt(deviceCode.replaceAll("[^0-9]", ""));
|
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||||
// 1左边2右边
|
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||||
number = (number % 2) == 0 ? 2 : (number % 2);
|
TaskUtils.setUpdateByAcs(task);
|
||||||
return number;
|
List<String> nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(","))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
String requestParam = task.getRequest_param();
|
||||||
|
JSONObject jsonObject = JSONObject.parseObject(requestParam);
|
||||||
|
// 找终点
|
||||||
|
SchBasePoint point = findNextPoint(nextRegionStr, jsonObject);
|
||||||
|
if (ObjectUtil.isEmpty(point)) {
|
||||||
|
task.setRemark("未存在可用的睏料货架!");
|
||||||
|
throw new BadRequestException("未存在可用的睏料货架!");
|
||||||
|
|
||||||
|
}
|
||||||
|
// 设置组盘 - 需要的话由子类自行实现
|
||||||
|
task.setGroup_id(setGroupPlate(jsonObject));
|
||||||
|
// 设置终点并修改创建成功状态
|
||||||
|
task.setPoint_code2(point.getPoint_code());
|
||||||
|
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||||
|
task.setRemark("");
|
||||||
|
task.setVehicle_type(point.getVehicle_type());
|
||||||
|
task.setRequest_param(jsonObject.toString());
|
||||||
|
taskService.save(task);
|
||||||
|
|
||||||
|
point.setIng_task_code(task.getTask_code());
|
||||||
|
PointUtils.setUpdateByAcs(point);
|
||||||
|
pointService.updateById(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据压机工单的原料编码以及点位的更新时间
|
|
||||||
*
|
*
|
||||||
* @param nextRegionStr
|
* @param nextRegionStr
|
||||||
* @param requestParam
|
* @param requestParam
|
||||||
@@ -170,28 +177,29 @@ public class HNMLTask extends AbstractTask {
|
|||||||
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject requestParam) {
|
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject requestParam) {
|
||||||
String materialCode = requestParam.getString("material_code");
|
String materialCode = requestParam.getString("material_code");
|
||||||
Assert.notNull(materialCode, "物料编码不能为空!");
|
Assert.notNull(materialCode, "物料编码不能为空!");
|
||||||
materialCode = materialCode.substring(0, 12);
|
// 工单
|
||||||
// 获取要料表中的数据,获取对应物料(要料表存的是泥料) update: 先工单优先级后时间
|
String workorderCode = requestParam.getString("workorder_code");
|
||||||
List<PdmBdRequestMaterialRecord> list = requestMaterialRecordService.getLeftJoinWorkOrderList(materialCode);
|
PdmBdWorkorder order = workorderService.getByCode(workorderCode);
|
||||||
if (list.size() == 0) {
|
if (order.getStanding_time() == 0) {
|
||||||
SchBasePoint point = new SchBasePoint();
|
// 不需要静置,直接往布料机上。先判断困料货架没有这个物料且没任务往对应布料机送才可以
|
||||||
point.setTask_warn("压机要料表找不到数据,请排查泥料号:[" + materialCode + "]");
|
// 查找公共睏料货架是否存在相同泥料的物料
|
||||||
return point;
|
List<SchBasePoint> checkPoints = hnMapper.getCommonHjPoint(order.getRaw_material_code(), order.getVehicle_type());
|
||||||
|
if (checkPoints.size() == 0) {
|
||||||
|
// 查找可以放的布料机
|
||||||
|
checkPoints = hnMapper.getCanUseBlj(order.getRaw_material_code(), order.getVehicle_type());
|
||||||
|
if (checkPoints.size() > 0) {
|
||||||
|
// 往布料机送
|
||||||
|
SchBasePoint point = checkPoints.get(0);
|
||||||
|
return point;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 要料数据
|
// 先判断专属货架是否有空位
|
||||||
PdmBdRequestMaterialRecord requestMaterialRecord = list.get(0);
|
List<SchBasePoint> points = hnMapper.findEmptyPointForHNML(order.getRaw_material_code(), order.getVehicle_type());
|
||||||
// 根据设备号查找对应的工单点位
|
|
||||||
LambdaQueryWrapper<SchBasePoint> lam = new QueryWrapper<SchBasePoint>().lambda();
|
|
||||||
lam.eq(SchBasePoint::getRegion_code, "LZKLX")
|
|
||||||
.eq(SchBasePoint::getPoint_type, "5")
|
|
||||||
.like(SchBasePoint::getParent_point_code, requestMaterialRecord.getDevice_code());
|
|
||||||
List<SchBasePoint> points = pointService.list(lam);
|
|
||||||
if (points.size() == 0) {
|
if (points.size() == 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
SchBasePoint point = points.get(0);
|
SchBasePoint point = points.get(0);
|
||||||
point.setDevice_code(requestMaterialRecord.getDevice_code());
|
|
||||||
point.setRecord_id(requestMaterialRecord.getRecord_id());
|
|
||||||
return point;
|
return point;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,62 +225,57 @@ public class HNMLTask extends AbstractTask {
|
|||||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||||
// 获取参数
|
// 获取参数
|
||||||
String endPoint = taskObj.getPoint_code2();
|
String endPoint = taskObj.getPoint_code2();
|
||||||
|
String startPoint = taskObj.getPoint_code1();
|
||||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||||
String responseParam = taskObj.getResponse_param();
|
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||||
String requestParam = taskObj.getRequest_param();
|
|
||||||
JSONObject responseObj = JSONObject.parseObject(responseParam);
|
|
||||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
|
||||||
// 要把数据存到组盘表。压制工单放进去,
|
|
||||||
SchBaseVehiclematerialgroup groupEntity = vehiclematerialgroupService.getOne(
|
SchBaseVehiclematerialgroup groupEntity = vehiclematerialgroupService.getOne(
|
||||||
new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
|
new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
|
||||||
.eq(SchBaseVehiclematerialgroup::getGroup_id, taskObj.getGroup_id())
|
.eq(SchBaseVehiclematerialgroup::getGroup_id, taskObj.getGroup_id()));
|
||||||
.last("FOR UPDATE"));
|
// Assert.notNull(groupEntity, ExceptionConstant.GROUP_INFORMATION_NOT_FOUND);
|
||||||
if (ObjectUtil.isEmpty(groupEntity)) {
|
|
||||||
// 找不到组盘信息
|
|
||||||
throw new BadRequestException("找不到组盘信息");
|
|
||||||
}
|
|
||||||
// 终点去除正在执行的任务, 设置载具编码、载具类型、载具数量
|
// 终点去除正在执行的任务, 设置载具编码、载具类型、载具数量
|
||||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||||
endPointObj.setIng_task_code("");
|
endPointObj.setIng_task_code("");
|
||||||
|
endPointObj.setPoint_status(PointStatusEnum.FULL_POINT.getCode());
|
||||||
endPointObj.setVehicle_qty(1);
|
endPointObj.setVehicle_qty(1);
|
||||||
|
endPointObj.setVehicle_code(taskObj.getVehicle_code());
|
||||||
|
endPointObj.setVehicle_type(taskObj.getVehicle_type());
|
||||||
PointUtils.setUpdateByType(endPointObj, taskFinishedType);
|
PointUtils.setUpdateByType(endPointObj, taskFinishedType);
|
||||||
pointService.updateById(endPointObj);
|
pointService.updateById(endPointObj);
|
||||||
// 终点为公用点位,需要获取左右方向
|
// 更新工单上的实际重量
|
||||||
String parentPointCode = endPointObj.getParent_point_code();
|
// 更新混碾工单
|
||||||
String[] split = parentPointCode.split(",");
|
PdmBdWorkorder workOrderObj = workorderService.getByCode(groupEntity.getWorkorder_code());
|
||||||
if (split.length > 1) {
|
workOrderObj.setReal_weight(workOrderObj.getReal_weight().add(groupEntity.getMaterial_weight()));
|
||||||
parentPointCode = split[responseObj.getInteger("direction") - 1];
|
TaskUtils.setWorkOrderUpdateByType(workOrderObj, taskFinishedType);
|
||||||
}
|
workorderService.updateById(workOrderObj);
|
||||||
// 找到父点位
|
// 更新组盘数据
|
||||||
SchBasePoint yjDevice = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
groupEntity.setPoint_code(endPointObj.getPoint_code());
|
||||||
.eq(SchBasePoint::getPoint_code, parentPointCode));
|
groupEntity.setPoint_name(endPointObj.getPoint_name());
|
||||||
// 父点位(设备)需要切换成非空状态
|
groupEntity.setMove_way(groupEntity.getMove_way() + " -> " + endPointObj.getPoint_code());
|
||||||
PointUtils.setUpdateByType(yjDevice, taskFinishedType);
|
groupEntity.setTask_code(taskObj.getTask_code());
|
||||||
yjDevice.setPoint_status(PointStatusEnum.FULL_POINT.getCode());
|
TaskUtils.setGroupUpdateByType(groupEntity, taskFinishedType);
|
||||||
pointService.updateById(yjDevice);
|
vehiclematerialgroupService.updateById(groupEntity);
|
||||||
PdmBdRequestMaterialRecord materialRecord = requestMaterialRecordService
|
// 如果终点是布料机,那就是需要将压机工单对应(大小)料的真实值相加
|
||||||
.getById(requestObj.getString("record_id"));
|
if ("YZ".equals(endPointObj.getRegion_code())) {
|
||||||
// 找压机工单 -> 根据压机要料表对应的工单
|
PdmBdWorkorder productionTask = workorderService.getDeviceDockingProductionTask(endPoint);
|
||||||
PdmBdWorkorder one = workorderService.getByCode(materialRecord.getWorkorder_id());
|
switch (taskObj.getVehicle_type()) {
|
||||||
if (ObjectUtil.isNotEmpty(one)) {
|
case "DLZ":
|
||||||
// remove: 给组盘数据设置批次:压制工单+混砂机号+碾次
|
productionTask.setReal_new_weight(productionTask.getReal_new_weight()
|
||||||
groupEntity.setWorkorder_code(one.getWorkorder_code());
|
.add(groupEntity.getMaterial_weight()));
|
||||||
groupEntity.setPoint_code(endPointObj.getPoint_code());
|
break;
|
||||||
groupEntity.setPoint_name(endPointObj.getPoint_name());
|
case "XLZ":
|
||||||
groupEntity.setMove_way(groupEntity.getMove_way() + " -> " + endPointObj.getPoint_code());
|
productionTask.setReal_old_weight(productionTask.getReal_old_weight()
|
||||||
groupEntity.setMaterial_id(one.getMaterial_id());
|
.add(groupEntity.getMaterial_weight()));
|
||||||
// mark: *根据压机的工单物料标识查找静置时间, 先根据工单,在根据物料信息
|
break;
|
||||||
MdBaseMaterial mdBaseMaterial = materialService.getById(one.getMaterial_id());
|
default:
|
||||||
groupEntity.setStanding_time(one.getStanding_time() == 0
|
throw new BadRequestException("点位区域配置错误!");
|
||||||
? mdBaseMaterial.getStanding_time() : one.getStanding_time());
|
}
|
||||||
|
TaskUtils.setWorkOrderUpdateByType(productionTask, taskFinishedType);
|
||||||
|
workorderService.updateById(productionTask);
|
||||||
}
|
}
|
||||||
|
// 清空起点
|
||||||
|
PointUtils.setUpdateByType(startPointObj, taskFinishedType);
|
||||||
|
PointUtils.clearPoint(startPointObj);
|
||||||
}
|
}
|
||||||
// 更新组盘数据
|
|
||||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue());
|
|
||||||
groupEntity.setTask_code(taskObj.getTask_code());
|
|
||||||
TaskUtils.setGroupUpdateByType(groupEntity, taskFinishedType);
|
|
||||||
vehiclematerialgroupService.updateById(groupEntity);
|
|
||||||
// 起点清空 - 由ACS请求修改
|
|
||||||
taskObj.setRemark(GeneralDefinition.TASK_FINISH);
|
taskObj.setRemark(GeneralDefinition.TASK_FINISH);
|
||||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||||
@@ -310,18 +313,9 @@ public class HNMLTask extends AbstractTask {
|
|||||||
// 吨袋号(泥料号+2位年+月日时分+设备号+碾次)
|
// 吨袋号(泥料号+2位年+月日时分+设备号+碾次)
|
||||||
// LMS组盘时生成混料批次:压制工单+混砂机号+碾次
|
// LMS组盘时生成混料批次:压制工单+混砂机号+碾次
|
||||||
String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code"));
|
String vehicleCode = TaskUtils.defaultVehicleCode(param.getString("vehicle_code"));
|
||||||
String vehicleType = param.getString("vehicle_type");
|
|
||||||
// 泥料物料对应不出物料标识
|
// 泥料物料对应不出物料标识
|
||||||
// 泥料编码: 吨袋号,泥料前
|
// 泥料编码: 吨袋号,泥料前
|
||||||
String packNo = param.getString("material_code");
|
String materialCode = param.getString("material_code");
|
||||||
String materialCode = packNo.substring(0, 12);
|
|
||||||
// todo: 如果没找到就报错,就不创建组盘信息
|
|
||||||
// 碾次
|
|
||||||
String mixTimes = packNo.substring(18, packNo.length());
|
|
||||||
// 载具类型默认料盅
|
|
||||||
if (vehicleType == null || vehicleType.equals(GeneralDefinition.NO)) {
|
|
||||||
vehicleType = GeneralDefinition.MATERIAL_CUP;
|
|
||||||
}
|
|
||||||
String deviceCode = param.getString("device_code");
|
String deviceCode = param.getString("device_code");
|
||||||
BigDecimal weight = param.getBigDecimal("weight");
|
BigDecimal weight = param.getBigDecimal("weight");
|
||||||
SchBasePoint basePoint = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
SchBasePoint basePoint = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||||
@@ -333,15 +327,22 @@ public class HNMLTask extends AbstractTask {
|
|||||||
if (vehicleCode == null || vehicleCode.equals(GeneralDefinition.NO)) {
|
if (vehicleCode == null || vehicleCode.equals(GeneralDefinition.NO)) {
|
||||||
throw new BadRequestException("载具编码不能为空");
|
throw new BadRequestException("载具编码不能为空");
|
||||||
}
|
}
|
||||||
// 找到相同组盘信息就直接返回id,避免任务取消组盘信息还存在,重复插入
|
String vehicleType = basePoint.getVehicle_type();
|
||||||
// 找到不直接返回,用那条数据进行修改
|
String workorderCode = param.getString("workorder_code");
|
||||||
// 解绑同载具的信息
|
PdmBdWorkorder order = workorderService.getByCode(workorderCode);
|
||||||
vehiclematerialgroupService.unBindingSameVehicleMaterialToMes(vehicleCode, vehicleType);
|
|
||||||
|
// 找到相同组盘信息就修改,避免任务取消组盘信息还存在,重复插入
|
||||||
|
SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService
|
||||||
|
.getGroupInfo(vehicleCode, vehicleType, GroupBindMaterialStatusEnum.BOUND.getValue());
|
||||||
|
if (ObjectUtil.isNotEmpty(groupInfo)) {
|
||||||
|
throw new BadRequestException("载具号[" + vehicleCode + "]组盘信息已存在");
|
||||||
|
}
|
||||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
// 要把数据存到组盘表
|
// 要把数据存到组盘表
|
||||||
// 物料标识等任务完成后赋值
|
// 物料标识等任务完成后赋值
|
||||||
groupEntity.setMaterial_id(GeneralDefinition.UNKNOWN);
|
groupEntity.setWorkorder_code(workorderCode);
|
||||||
|
groupEntity.setMaterial_id(order.getMaterial_id());
|
||||||
groupEntity.setRedundance_material_code(materialCode);
|
groupEntity.setRedundance_material_code(materialCode);
|
||||||
groupEntity.setCreate_id(GeneralDefinition.ACS_ID);
|
groupEntity.setCreate_id(GeneralDefinition.ACS_ID);
|
||||||
groupEntity.setCreate_name(GeneralDefinition.ACS_NAME);
|
groupEntity.setCreate_name(GeneralDefinition.ACS_NAME);
|
||||||
@@ -352,10 +353,11 @@ public class HNMLTask extends AbstractTask {
|
|||||||
groupEntity.setPoint_code(basePoint.getPoint_code());
|
groupEntity.setPoint_code(basePoint.getPoint_code());
|
||||||
groupEntity.setPoint_name(basePoint.getPoint_name());
|
groupEntity.setPoint_name(basePoint.getPoint_name());
|
||||||
groupEntity.setMove_way(basePoint.getPoint_code());
|
groupEntity.setMove_way(basePoint.getPoint_code());
|
||||||
groupEntity.setMix_times(mixTimes);
|
// groupEntity.setMix_times(mixTimes);
|
||||||
groupEntity.setInstorage_time(DateUtil.now());
|
groupEntity.setInstorage_time(DateUtil.now());
|
||||||
|
groupEntity.setStanding_time(order.getStanding_time());
|
||||||
// update: 11/15批次修改成吨袋号
|
// update: 11/15批次修改成吨袋号
|
||||||
groupEntity.setPcsn(packNo);
|
groupEntity.setPcsn(DateUtil.format(new Date(), "yyyyMMdd"));
|
||||||
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(weight)
|
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(weight)
|
||||||
? weight
|
? weight
|
||||||
: BigDecimal.valueOf(0));
|
: BigDecimal.valueOf(0));
|
||||||
@@ -363,7 +365,7 @@ public class HNMLTask extends AbstractTask {
|
|||||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType());
|
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType());
|
||||||
groupEntity.setIs_delete(false);
|
groupEntity.setIs_delete(false);
|
||||||
// 对于混碾的组盘 暂时存吨袋号
|
// 对于混碾的组盘 暂时存吨袋号
|
||||||
groupEntity.setExt_data(packNo);
|
// groupEntity.setExt_data(packNo);
|
||||||
vehiclematerialgroupService.save(groupEntity);
|
vehiclematerialgroupService.save(groupEntity);
|
||||||
return groupEntity.getGroup_id();
|
return groupEntity.getGroup_id();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,166 +1,204 @@
|
|||||||
//package org.nl.wms.sch.task_manage.task.tasks.hn;
|
package org.nl.wms.sch.task_manage.task.tasks.hn;
|
||||||
//
|
|
||||||
//import cn.hutool.core.date.DateUtil;
|
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 org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
//import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
import org.nl.system.service.notice.ISysNoticeService;
|
||||||
//import org.nl.wms.sch.point.service.ISchBasePointService;
|
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
||||||
//import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||||
//import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||||
//import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||||
//import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||||
//import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
||||||
//import org.nl.wms.sch.task_manage.AbstractTask;
|
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||||
//import org.nl.wms.sch.task_manage.GeneralDefinition;
|
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||||
//import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||||
//import org.nl.wms.sch.task_manage.task.TaskType;
|
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||||
//import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
|
||||||
//import org.nl.wms.util.PointUtils;
|
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||||
//import org.springframework.beans.factory.annotation.Autowired;
|
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||||
//import org.springframework.stereotype.Component;
|
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||||
//import org.springframework.transaction.annotation.Transactional;
|
import org.nl.wms.util.PointUtils;
|
||||||
//
|
import org.nl.wms.util.TaskUtils;
|
||||||
//import java.util.Arrays;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
//import java.util.List;
|
import org.springframework.stereotype.Component;
|
||||||
//import java.util.stream.Collectors;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
//
|
|
||||||
///**
|
import java.util.Arrays;
|
||||||
// * @Author: lyd
|
import java.util.List;
|
||||||
// * @Description: 混料缺空:呼叫空载具
|
import java.util.stream.Collectors;
|
||||||
// * @Date: 2023/5/19
|
|
||||||
// */
|
/**
|
||||||
//@Deprecated
|
* @Author: lyd
|
||||||
//@Component
|
* @Description: 混料缺空:混料呼叫空盅
|
||||||
//@TaskType("--")
|
* 根据工单指定的料盅类型来申请
|
||||||
//public class HNQKTask extends AbstractTask {
|
* @Date: 2023/5/19
|
||||||
// private static String TASK_CONFIG_CODE = "--";
|
*/
|
||||||
// private static String EMPTY_ZHONG = "1";
|
@Component(value = "HNQKTask")
|
||||||
//
|
@TaskType("HNQKTask")
|
||||||
// @Autowired
|
public class HNQKTask extends AbstractTask {
|
||||||
// private ISchBasePointService pointService;
|
private static String TASK_CONFIG_CODE = "HNQKTask";
|
||||||
// @Autowired
|
|
||||||
// private ISchBaseTaskService taskService;
|
@Autowired
|
||||||
// @Autowired
|
private ISchBasePointService pointService;
|
||||||
// private ISchBaseTaskconfigService taskConfigService;
|
@Autowired
|
||||||
// @Autowired
|
private ISchBaseTaskService taskService;
|
||||||
// private IPdmBdWorkorderService workorderService;
|
@Autowired
|
||||||
//
|
private ISchBaseTaskconfigService taskConfigService;
|
||||||
// /**
|
@Autowired
|
||||||
// * 具体业务
|
private IPdmBdWorkorderService workorderService;
|
||||||
// */
|
@Autowired
|
||||||
// @Override
|
private ISysNoticeService noticeService;
|
||||||
// @Transactional(rollbackFor = Exception.class)
|
|
||||||
// public void create() {
|
/**
|
||||||
// // 获取任务
|
* 具体业务
|
||||||
// List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
*/
|
||||||
// // 配置信息
|
@Override
|
||||||
// SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
@Transactional(rollbackFor = Exception.class)
|
||||||
// .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
public void create() {
|
||||||
// for (SchBaseTask task : tasks) {
|
// 获取任务
|
||||||
// List<String> startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList());
|
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||||
// // 找起点
|
// 配置信息
|
||||||
// String extGroupData = task.getExt_group_data();
|
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||||
// JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||||
// SchBasePoint point = findStartPoint(startRegionStr, jsonObject);
|
for (SchBaseTask task : tasks) {
|
||||||
// if (ObjectUtil.isEmpty(point)) {
|
List<String> startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList());
|
||||||
// task.setRemark("未找到所需点位!");
|
// 找起点
|
||||||
// taskService.update(task);
|
String extGroupData = task.getExt_group_data();
|
||||||
// // 消息通知
|
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
||||||
// continue;
|
SchBasePoint point = findStartPoint(startRegionStr, jsonObject);
|
||||||
// }
|
if (ObjectUtil.isEmpty(point)) {
|
||||||
// // 设置终点并修改创建成功状态
|
task.setRemark("睏料货架没有所需的空盅!");
|
||||||
// task.setPoint_code1(point.getPoint_code());
|
taskService.update(task);
|
||||||
// task.setRemark("");
|
// 消息通知
|
||||||
// task.setTask_status(TaskStatus.CREATED.getCode());
|
continue;
|
||||||
// taskService.update(task);
|
}
|
||||||
//
|
// 设置终点并修改创建成功状态
|
||||||
// point.setIng_task_code(task.getTask_code());
|
task.setPoint_code1(point.getPoint_code());
|
||||||
// pointService.update(point);
|
task.setRemark("");
|
||||||
//
|
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||||
// //下发
|
taskService.update(task);
|
||||||
//// this.renotifyAcs(task);
|
|
||||||
// }
|
point.setIng_task_code(task.getTask_code());
|
||||||
// }
|
pointService.update(point);
|
||||||
//
|
}
|
||||||
// /**
|
}
|
||||||
// * 找起点, 通过料盅睏料线区域的空盅位置找到空盅
|
|
||||||
// *
|
@Override
|
||||||
// * @param startRegionStr
|
@Transactional(rollbackFor = Exception.class)
|
||||||
// * @param extGroupData
|
public void createCompletion(SchBaseTask task) {
|
||||||
// * @return
|
// 配置信息
|
||||||
// */
|
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||||
// private SchBasePoint findStartPoint(List<String> startRegionStr, JSONObject extGroupData) {
|
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||||
// LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
TaskUtils.setUpdateByAcs(task);
|
||||||
// lam.in(SchBasePoint::getRegion_code, startRegionStr)
|
List<String> startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(","))
|
||||||
// .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
.collect(Collectors.toList());
|
||||||
// .eq(SchBasePoint::getPoint_type, EMPTY_ZHONG)
|
// 找起点
|
||||||
// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
String requestParam = task.getRequest_param();
|
||||||
// .or()
|
JSONObject jsonObject = JSONObject.parseObject(requestParam);
|
||||||
// .eq(SchBasePoint::getIng_task_code, ""))
|
SchBasePoint point = findStartPoint(startRegionStr, jsonObject);
|
||||||
// .orderByAsc(SchBasePoint::getIn_order_seq)
|
if (ObjectUtil.isEmpty(point)) {
|
||||||
// .orderByAsc(SchBasePoint::getPoint_code);
|
// 消息通知
|
||||||
// List<SchBasePoint> schBasePoints = pointService.list(lam);
|
noticeService.createNotice("睏料货架没有所需的空盅!", task.getPoint_code2() + "混碾呼叫空盅任务失败",
|
||||||
// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
NoticeTypeEnum.WARN.getCode());
|
||||||
// }
|
throw new BadRequestException("睏料货架没有所需的空盅, " + task.getPoint_code2() + "混碾呼叫空盅任务失败, 未找到所需点位!");
|
||||||
//
|
}
|
||||||
// @Override
|
// 设置终点并修改创建成功状态
|
||||||
// @Transactional(rollbackFor = Exception.class)
|
task.setPoint_code1(point.getPoint_code());
|
||||||
// protected void updateStatus(String task_code, TaskStatus status) {
|
task.setVehicle_code(point.getVehicle_code());
|
||||||
// // 校验任务
|
task.setRemark("");
|
||||||
// SchBaseTask taskObj = taskService.getByCode(task_code);
|
task.setVehicle_type(point.getVehicle_type());
|
||||||
// if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||||
// throw new BadRequestException("该任务已完成!");
|
taskService.save(task);
|
||||||
// }
|
|
||||||
// if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
point.setIng_task_code(task.getTask_code());
|
||||||
// throw new BadRequestException("该任务已取消!");
|
PointUtils.setUpdateByAcs(point);
|
||||||
// }
|
pointService.updateById(point);
|
||||||
// // 获取参数
|
}
|
||||||
// String startPoint = taskObj.getPoint_code1();
|
|
||||||
// String endPoint = taskObj.getPoint_code2();
|
/**
|
||||||
// SchBasePoint startPointObj = pointService.getById(startPoint);
|
* 找起点, 通过料盅睏料线区域的空盅位置找到空盅
|
||||||
// SchBasePoint endPointObj = pointService.getById(endPoint);
|
*
|
||||||
// // 根据传来的类型去对任务进行操作
|
* @param startRegionStr
|
||||||
// if (status.equals(TaskStatus.EXECUTING)) {
|
* @param extGroupData
|
||||||
// taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
* @return
|
||||||
// taskObj.setRemark("执行中");
|
*/
|
||||||
// }
|
private SchBasePoint findStartPoint(List<String> startRegionStr, JSONObject extGroupData) {
|
||||||
// if (status.equals(TaskStatus.FINISHED)) {
|
// workorder_code
|
||||||
// // 起点清空
|
String workorderCode = extGroupData.getString("workorder_code");
|
||||||
// if (ObjectUtil.isNotEmpty(startPointObj)) {
|
PdmBdWorkorder order = workorderService.getByCode(workorderCode);
|
||||||
// PointUtils.clearPoint(startPointObj);
|
// 先找专属货架再找公共货架
|
||||||
// taskObj.setVehicle_code(startPointObj.getVehicle_code());
|
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||||
// endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode());
|
lam.in(SchBasePoint::getRegion_code, startRegionStr)
|
||||||
// endPointObj.setVehicle_type("1");
|
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
||||||
// endPointObj.setVehicle_code(startPointObj.getVehicle_code());
|
.eq(SchBasePoint::getVehicle_type, order.getVehicle_type())
|
||||||
// endPointObj.setVehicle_qty(1);
|
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||||
// endPointObj.setUpdate_time(DateUtil.now());
|
.or()
|
||||||
// pointService.updateById(endPointObj);
|
.eq(SchBasePoint::getIng_task_code, ""))
|
||||||
// }
|
.orderByAsc(SchBasePoint::getPoint_type)
|
||||||
// // 任务完成
|
.orderByAsc(SchBasePoint::getPoint_code);
|
||||||
// taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||||
// taskObj.setRemark(GeneralDefinition.TASK_FINISH);
|
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||||
// }
|
}
|
||||||
// if (status.equals(TaskStatus.CANCELED)) {
|
|
||||||
// // 起点解锁
|
@Override
|
||||||
// if (ObjectUtil.isNotEmpty(startPointObj)) {
|
@Transactional(rollbackFor = Exception.class)
|
||||||
// startPointObj.setIng_task_code("");
|
protected void updateStatus(String task_code, TaskStatus status) {
|
||||||
// pointService.update(startPointObj);
|
// 校验任务
|
||||||
// }
|
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||||
// taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||||
// }
|
throw new BadRequestException("该任务已完成!");
|
||||||
// taskService.update(taskObj);
|
}
|
||||||
// }
|
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||||
//
|
throw new BadRequestException("该任务已取消!");
|
||||||
// @Override
|
}
|
||||||
// public void forceFinish(String task_code) {
|
// 获取参数
|
||||||
// this.updateStatus(task_code, TaskStatus.FINISHED);
|
String startPoint = taskObj.getPoint_code1();
|
||||||
// }
|
String endPoint = taskObj.getPoint_code2();
|
||||||
//
|
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||||
// @Override
|
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||||
// public void cancel(String task_code) {
|
// 根据传来的类型去对任务进行操作
|
||||||
// this.updateStatus(task_code, TaskStatus.CANCELED);
|
if (status.equals(TaskStatus.EXECUTING)) {
|
||||||
// }
|
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||||
//}
|
taskObj.setRemark("执行中");
|
||||||
//
|
}
|
||||||
|
if (status.equals(TaskStatus.FINISHED)) {
|
||||||
|
// 起点清空
|
||||||
|
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||||
|
PointUtils.clearPoint(startPointObj);
|
||||||
|
taskObj.setVehicle_code(startPointObj.getVehicle_code());
|
||||||
|
endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode());
|
||||||
|
endPointObj.setVehicle_type(taskObj.getVehicle_type());
|
||||||
|
endPointObj.setVehicle_code(taskObj.getVehicle_code());
|
||||||
|
endPointObj.setVehicle_qty(1);
|
||||||
|
endPointObj.setUpdate_time(DateUtil.now());
|
||||||
|
pointService.updateById(endPointObj);
|
||||||
|
}
|
||||||
|
// 任务完成
|
||||||
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
|
taskObj.setRemark(GeneralDefinition.TASK_FINISH);
|
||||||
|
}
|
||||||
|
if (status.equals(TaskStatus.CANCELED)) {
|
||||||
|
// 起点解锁
|
||||||
|
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||||
|
startPointObj.setIng_task_code("");
|
||||||
|
pointService.update(startPointObj);
|
||||||
|
}
|
||||||
|
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||||
|
}
|
||||||
|
taskService.update(taskObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void forceFinish(String task_code) {
|
||||||
|
this.updateStatus(task_code, TaskStatus.FINISHED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void cancel(String task_code) {
|
||||||
|
this.updateStatus(task_code, TaskStatus.CANCELED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,4 +17,16 @@ public interface HNMapper extends BaseMapper<JSONObject> {
|
|||||||
|
|
||||||
// 通过工单与点位更新
|
// 通过工单与点位更新
|
||||||
List<SchBasePoint> findPointForHNMLAndWorkOrder(List<String> regionCode, String materialCode);
|
List<SchBasePoint> findPointForHNMLAndWorkOrder(List<String> regionCode, String materialCode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据泥料和料盅类型获取空点位
|
||||||
|
* @param rawMaterialCode
|
||||||
|
* @param vehicleType
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<SchBasePoint> findEmptyPointForHNML(String rawMaterialCode, String vehicleType);
|
||||||
|
|
||||||
|
List<SchBasePoint> getCommonHjPoint(String rawMaterialCode, String vehicleType);
|
||||||
|
|
||||||
|
List<SchBasePoint> getCanUseBlj(String rawMaterialCode, String vehicleType);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,4 +50,79 @@
|
|||||||
</foreach>
|
</foreach>
|
||||||
AND p2.point_code IS NOT NULL
|
AND p2.point_code IS NOT NULL
|
||||||
</select>
|
</select>
|
||||||
|
<select id="findEmptyPointForHNML" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
|
||||||
|
SELECT *
|
||||||
|
FROM (SELECT *
|
||||||
|
FROM `sch_base_point` p
|
||||||
|
WHERE p.region_code = 'KLHJ'
|
||||||
|
AND p.point_type = '1'
|
||||||
|
AND p.point_status = '1'
|
||||||
|
AND p.is_used = TRUE
|
||||||
|
AND p.can_vehicle_type LIKE '%${vehicleType}%'
|
||||||
|
AND 0 = (SELECT COUNT(*)
|
||||||
|
FROM sch_base_task t
|
||||||
|
WHERE t.point_code2 = p.point_code
|
||||||
|
AND t.task_status <![CDATA[<]]> '5'
|
||||||
|
AND t.is_delete = FALSE)
|
||||||
|
AND 0 <![CDATA[<]]> (SELECT COUNT(*)
|
||||||
|
FROM pdm_bd_workorder w
|
||||||
|
WHERE w.point_code = p.parent_point_code
|
||||||
|
AND w.workorder_status = '3'
|
||||||
|
AND w.raw_material_code = #{rawMaterialCode})
|
||||||
|
UNION
|
||||||
|
SELECT *
|
||||||
|
FROM `sch_base_point` p2
|
||||||
|
WHERE p2.region_code = 'KLHJ'
|
||||||
|
AND p2.point_type = '2'
|
||||||
|
AND p2.point_status = '1'
|
||||||
|
AND p2.is_used = TRUE
|
||||||
|
AND p2.can_vehicle_type LIKE '%${vehicleType}%'
|
||||||
|
AND 0 = (SELECT COUNT(*)
|
||||||
|
FROM sch_base_task t
|
||||||
|
WHERE t.point_code2 = p2.point_code
|
||||||
|
AND t.task_status <![CDATA[<]]> '5'
|
||||||
|
AND t.is_delete = FALSE)) AS combined_result
|
||||||
|
ORDER BY point_type;
|
||||||
|
</select>
|
||||||
|
<select id="getCommonHjPoint" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
|
||||||
|
SELECT
|
||||||
|
p.*
|
||||||
|
FROM
|
||||||
|
sch_base_point p
|
||||||
|
LEFT JOIN sch_base_vehiclematerialgroup g ON g.vehicle_code = p.vehicle_code
|
||||||
|
AND g.vehicle_type = p.vehicle_type
|
||||||
|
AND g.group_bind_material_status = '2'
|
||||||
|
WHERE
|
||||||
|
p.region_code = 'KLHJ'
|
||||||
|
AND p.point_type = '2'
|
||||||
|
AND p.point_status = '3'
|
||||||
|
AND p.is_used = TRUE
|
||||||
|
AND IFNULL( g.group_id, '' ) <![CDATA[<>]]> ''
|
||||||
|
AND g.redundance_material_code = #{rawMaterialCode}
|
||||||
|
AND p.vehicle_type = #{vehicleType}
|
||||||
|
</select>
|
||||||
|
<select id="getCanUseBlj" resultType="org.nl.wms.sch.point.service.dao.SchBasePoint">
|
||||||
|
SELECT *
|
||||||
|
FROM sch_base_point p
|
||||||
|
WHERE p.region_code = 'YZ'
|
||||||
|
AND p.point_type = '2'
|
||||||
|
AND p.is_used = TRUE
|
||||||
|
AND p.can_vehicle_type LIKE '%${vehicleType}%'
|
||||||
|
AND 0 <![CDATA[<]]> (SELECT COUNT(*)
|
||||||
|
FROM pdm_bd_workorder w
|
||||||
|
WHERE w.point_code = p.parent_point_code
|
||||||
|
AND w.workorder_status = '3'
|
||||||
|
AND w.raw_material_code = #{rawMaterialCode})
|
||||||
|
AND 0 = (SELECT COUNT(*)
|
||||||
|
FROM sch_base_point p2
|
||||||
|
WHERE p2.is_used = TRUE
|
||||||
|
AND p2.region_code = 'KLHJ'
|
||||||
|
AND p2.parent_point_code = p.parent_point_code
|
||||||
|
AND p2.vehicle_type = #{vehicleType})
|
||||||
|
AND 0 = (SELECT COUNT(*)
|
||||||
|
FROM sch_base_task t
|
||||||
|
WHERE t.point_code2 = p.point_code
|
||||||
|
AND t.task_status <![CDATA[<]]> '5'
|
||||||
|
AND t.is_delete = FALSE)
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ spring:
|
|||||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:10.93.41.198}:${DB_PORT:3306}/${DB_NAME:rl_mg_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
# url: jdbc:log4jdbc:mysql://${DB_HOST:10.93.41.198}:${DB_PORT:3306}/${DB_NAME:rl_mg_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||||
# username: ${DB_USER:root}
|
# username: ${DB_USER:root}
|
||||||
# password: ${DB_PWD:123456}
|
# password: ${DB_PWD:123456}
|
||||||
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:rtmg_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lnhx_lms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
|
||||||
username: ${DB_USER:root}
|
username: ${DB_USER:root}
|
||||||
password: ${DB_PWD:12356}
|
password: ${DB_PWD:12356}
|
||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
|
|||||||
@@ -271,7 +271,14 @@
|
|||||||
style="width: 240px;"
|
style="width: 240px;"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="crud.status.edit && form.region_code === 'YZ'" label="计划重量">
|
<el-form-item v-if="form.region_code === 'YZ'" label="小料盅比例">
|
||||||
|
<el-input-number
|
||||||
|
v-model.number="form.material_ratio"
|
||||||
|
:min="0"
|
||||||
|
style="width: 240px;"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item v-if="form.region_code === 'YZ'" label="计划重量">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model.number="form.plan_weight"
|
v-model.number="form.plan_weight"
|
||||||
:min="0"
|
:min="0"
|
||||||
@@ -542,6 +549,7 @@ const defaultForm = {
|
|||||||
plan_weight: 0,
|
plan_weight: 0,
|
||||||
guadansum: 0,
|
guadansum: 0,
|
||||||
ext_data: 0,
|
ext_data: 0,
|
||||||
|
material_ratio: 0,
|
||||||
priority: 1,
|
priority: 1,
|
||||||
show: false
|
show: false
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user