Merge remote-tracking branch 'origin/b_lms' into master_merge

This commit is contained in:
2024-07-02 22:45:29 +08:00
56 changed files with 1031 additions and 345 deletions

View File

@@ -23,7 +23,9 @@ public interface BstIvtShafttubeivtMapper extends BaseMapper<BstIvtShafttubeivt>
* @param location 位置(上下)
* @return /
*/
List<BstIvtShafttubeivt> getNotTaskShaftCache(String qzzSize, String specification, String location);
List<BstIvtShafttubeivt> getNotTaskShaftCache(@Param("qzzSize") String qzzSize,
@Param("specification") String specification,
@Param("location") String location);
/**
* 获取空气胀轴的气胀轴暂存位

View File

@@ -29,7 +29,9 @@
WHERE b.have_qzz = '1'
AND b.point_type = '6'
AND b.qzz_size = #{qzzSize}
AND b.qzz_generation = #{specification}
<if test="qzzSize != 6">
AND b.qzz_generation = #{specification}
</if>
AND b.point_location = #{location}
AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.task_status <![CDATA[ < ]]> '07' AND t.point_code1 = b.point_code)
ORDER BY b.sort_seq DESC

View File

@@ -81,7 +81,7 @@ public class SlitterPdaController {
}
@PostMapping("/toCleanCutCacheInventory")
@Log("清理分切缓存到内包间")
@Log("清理分切缓存")
@SaIgnore
public ResponseEntity<Object> toCleanCutCacheInventory(@RequestBody JSONObject param) {
return new ResponseEntity<>(slitterDevices.toCleanCutCacheInventory(param), HttpStatus.OK);

View File

@@ -1,5 +1,6 @@
package org.nl.b_lms.pdm.bi.slittingproductionplan.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.SlitterPlanDistinctDto;
import org.nl.common.domain.query.PageQuery;
@@ -77,4 +78,10 @@ public interface IPdmBiSlittingproductionplanService extends IService<PdmBiSlitt
* @return /
*/
PdmBiSlittingproductionplan getByContainerName(String containerName);
/**
* 设置气胀轴方向
* @param whereJson /
*/
void setDirection(JSONObject whereJson);
}

View File

@@ -2,6 +2,9 @@ package org.nl.b_lms.pdm.bi.slittingproductionplan.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -12,8 +15,10 @@ import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproducti
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.mapper.PdmBiSlittingproductionplanMapper;
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.SlitterPlanDistinctDto;
import org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -21,6 +26,7 @@ import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* @description 服务实现
@@ -111,5 +117,29 @@ public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl<PdmBiSli
return pdmBiSlittingproductionplanMapper.selectOne(lam);
}
@Override
public void setDirection(JSONObject whereJson) {
JSONArray data = whereJson.getJSONArray("data");
String upOrDown = whereJson.getString("up_or_down");
String leftOrRight = whereJson.getString("left_or_right");
List<String> workorderId = SlitterTaskUtil.getAllStringByName(data, "workorder_id");
if (ObjectUtil.isNotEmpty(upOrDown)) {
// 设置上下轴
PdmBiSlittingproductionplan demo = new PdmBiSlittingproductionplan();
demo.setUp_or_down(upOrDown);
TaskUtils.updateOptMessageBySlitterPlan(demo);
this.saveOrUpdate(demo, new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.in(PdmBiSlittingproductionplan::getWorkorder_id, workorderId));
}
if (ObjectUtil.isNotEmpty(leftOrRight)) {
// 设置上下轴
PdmBiSlittingproductionplan demo = new PdmBiSlittingproductionplan();
demo.setLeft_or_right(leftOrRight);
TaskUtils.updateOptMessageBySlitterPlan(demo);
this.saveOrUpdate(demo, new LambdaQueryWrapper<PdmBiSlittingproductionplan>()
.in(PdmBiSlittingproductionplan::getWorkorder_id, workorderId));
}
}
}

View File

@@ -84,7 +84,7 @@
WHERE b.point_status = '3'
AND b.ivt_status = '3'
AND a.sale_order_name = #{sale_order_name}
ORDER BY box_group DESC
ORDER BY box_group
</select>

View File

@@ -295,8 +295,11 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
Set<String> containerNameList = packagerelationList.stream()
.map(PdmBiSubpackagerelation::getContainer_name)
.collect(Collectors.toSet());
BigDecimal totalWeight;
List<PdmBiSlittingproductionplan> planList = iPdmBiSlittingproductionplanService.list(new LambdaQueryWrapper<PdmBiSlittingproductionplan>().in(PdmBiSlittingproductionplan::getContainer_name, containerNameList));
if (CollectionUtils.isEmpty(planList)) {
throw new BadRequestException("该箱号不存在分切计划");
}
BigDecimal totalWeight;
totalWeight = planList.stream()
.map(PdmBiSlittingproductionplan::getWeight)
.filter(Objects::nonNull)

View File

@@ -1,21 +1,25 @@
package org.nl.b_lms.sch.point.controller;
import java.util.Set;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.modules.common.exception.BadRequestException;
import org.springframework.web.bind.annotation.*;
import lombok.RequiredArgsConstructor;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.logging.annotation.Log;
import org.nl.wms.pdm.ivt.service.dto.DeliveryPointIvtDto;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
import java.util.Set;
/**
@@ -35,6 +39,19 @@ public class BstIvtPackageinfoivtController {
private IbstIvtPackageinfoivtService bstIvtPackageinfoivtService;
/**
* 分页查询
*
* @param whereJson 查询条件
* @param page 分页参数
*/
@GetMapping
@Log("查询点位库存")
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(bstIvtPackageinfoivtService.queryAll(whereJson, page)), HttpStatus.OK);
}
/**
* 一楼装箱区点位二次分配
*
@@ -53,10 +70,7 @@ public class BstIvtPackageinfoivtController {
return new ResponseEntity<>(bstIvtPackageinfoivtService.secondaryAllocationPoint(taskCode, actionType), HttpStatus.OK);
}
/**
* agv二次分配类型1、普通任务 2、取货二次分配 3、防货二次分配 4、取放货二次分配
*/
private String agv_action_type;
/**
* 新增数据
@@ -65,12 +79,28 @@ public class BstIvtPackageinfoivtController {
* @return 新增结果
*/
@PostMapping
@Log("修改点位库存")
public ResponseEntity<Object> create(@RequestBody BstIvtPackageinfoivt params) {
bstIvtPackageinfoivtService.create(params);
return new ResponseEntity<>(HttpStatus.OK);
}
/**
* 修改数据
* @param params 实体对象
* @return 修改结果
*/
@PutMapping
@Log("修改点位库存")
//@SaCheckPermission("@el.check('deliverypointivt:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody BstIvtPackageinfoivt params) {
bstIvtPackageinfoivtService.update(params);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
/**
* 删除数据
*

View File

@@ -75,6 +75,15 @@ public interface IbstIvtPackageinfoivtService extends IService<BstIvtPackageinfo
/**
* 编辑
*
* @param params 实体对象
*/
void update(BstIvtPackageinfoivt params);
/**
* 手持子卷质检
*
* @param whereJson /
*/
JSONObject update(JSONObject whereJson);

View File

@@ -1,34 +1,35 @@
package org.nl.b_lms.sch.point.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.dao.mapper.BstIvtPackageinfoivtMapper;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import cn.hutool.core.date.DateUtil;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.BeanUtils;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@@ -38,8 +39,6 @@ import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static java.util.Collections.emptyList;
/**
* {@code @Description:} 装箱区点位库存表(BstIvtPackageInfoIvt)服务实现层
@@ -69,8 +68,24 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
*/
@Override
public IPage<BstIvtPackageinfoivt> queryAll(Map whereJson, PageQuery page) {
return bstIvtPackageinfoivtMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), new QueryWrapper<BstIvtPackageinfoivt>()
.lambda());
LambdaQueryWrapper<BstIvtPackageinfoivt> queryWrapper = new QueryWrapper<BstIvtPackageinfoivt>().lambda();
String isUsed = MapUtil.getStr(whereJson, "is_used");
String pointCode = MapUtil.getStr(whereJson, "point_code");
String packageInfoArea = MapUtil.getStr(whereJson, "packageinfo_area");
String ivtStatus = MapUtil.getStr(whereJson, "ivt_status");
if (StringUtils.isNotEmpty(isUsed)) {
queryWrapper.eq(BstIvtPackageinfoivt::getIs_used, isUsed);
}
if (StringUtils.isNotEmpty(pointCode)) {
queryWrapper.like(BstIvtPackageinfoivt::getPoint_code, pointCode);
}
if (StringUtils.isNotEmpty(packageInfoArea)) {
queryWrapper.eq(BstIvtPackageinfoivt::getPoint_status, packageInfoArea);
}
if (StringUtils.isNotEmpty(ivtStatus)) {
queryWrapper.eq(BstIvtPackageinfoivt::getIvt_status, ivtStatus);
}
return bstIvtPackageinfoivtMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), queryWrapper);
}
@Override
@@ -82,6 +97,9 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
if (CollectionUtils.isEmpty(pointIds)) {
return Collections.emptyList();
}
if (pointCode == null) {
return packageinfoivtList;
}
List<SchBaseTask> taskList;
Set<String> pointSets;
if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务")) || pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货任务"))) {
@@ -90,9 +108,9 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, null);
} else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("放货分配"))) {
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, null, pointIds);
} else if(pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务取货分配"))){
} else if (pointCode.equals(PackageInfoIvtEnum.TASK_POINT_TYPE.code("取货任务取货分配"))) {
taskList = bstIvtPackageinfoivtMapper.getTaskList(pointIds, pointIds, pointIds, pointIds);
}else{
} else {
return packageinfoivtList;
}
// 过滤未完成任务的任务
@@ -222,7 +240,6 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
result.put("status", HttpStatus.OK.value());
result.put("message", "操作成功!");
result.put("data", pointCode);
log.info("一楼装箱区点位二次分配接口请求返回结果:---------------------------------------------" + result);
} else {
log.info("一楼装箱区点位二次分配接口异常,正在分配中!");
result.put("status", HttpStatus.BAD_REQUEST.value());
@@ -233,6 +250,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
lock.unlock();
}
}
log.info("一楼装箱区点位二次分配接口请求返回结果:---------------------------------------------" + result);
return result;
}
@@ -247,6 +265,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
//执行中的任务
SchBaseTask baseTask = taskService.getOne(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_code, taskCode)
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_SEND.code(""))
.eq(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()));
if (baseTask == null) {
throw new BadRequestException("该任务未执行或不存在!");
@@ -277,9 +296,13 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
)));
if (CollectionUtils.isNotEmpty(taskList)) {
if (taskList.get(0).getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("输送线四个点任务"))) {
newPoint.setPoint_code(taskList.get(0).getPoint_code3());
if (!checkIvtSBlock(taskList.get(0).getPoint_code3())) {
newPoint.setPoint_code(taskList.get(0).getPoint_code3());
}
} else {
newPoint.setPoint_code(taskList.get(0).getPoint_code1());
if (!checkIvtSBlock(taskList.get(0).getPoint_code1())) {
newPoint.setPoint_code(taskList.get(0).getPoint_code1());
}
}
} else {
//newPoint = getBstIvtPackageinfoivt(actionType, taskPointType, baseTask);
@@ -307,6 +330,18 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
}
}
/**
* 实时判断点位外层是否有空载具
*/
private boolean checkIvtSBlock(String pointCode) {
List<BstIvtPackageinfoivt> kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), null, null, PackageInfoIvtEnum.SORT_TYPE.code("降序"), "");
BigDecimal sortSeq = kzjIvtList.stream().filter(r -> r.getPoint_code().equals(pointCode)).collect(Collectors.toList()).get(0).getSort_seq();
return kzjIvtList.stream()
.anyMatch(r -> r.getSort_seq().compareTo(sortSeq) < 0 &&
r.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("空载具")));
}
private BstIvtPackageinfoivt getBstIvtPackageinfoivt(String actionType, String taskPointType, SchBaseTask baseTask) {
BstIvtPackageinfoivt newPoint;
//1取货任务2放货任务
@@ -350,6 +385,7 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
r.getIvt_status().equals(PackageInfoIvtEnum.IVT_STATUS.code("空载具")));
}
if (hasEmptyVehicle) {
//有阻挡,无可以放货空位
return newPoint;
}
return emptyList.get();
@@ -479,12 +515,27 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
*/
@Override
public void create(BstIvtPackageinfoivt entity) {
bstIvtPackageinfoivtMapper.insert(getBasicInfo(entity, true));
bstIvtPackageinfoivtMapper.insert(getBasicInfo(entity, null, true));
}
/**
* 编辑
*
* @param params 实体对象
*/
@Override
public void update(BstIvtPackageinfoivt params) {
BstIvtPackageinfoivt dto = bstIvtPackageinfoivtMapper.selectById(params.getIvt_id());
if (dto == null) {
throw new BadRequestException("不存在该数据!");
}
bstIvtPackageinfoivtMapper.updateById(getBasicInfo(params, dto, false));
}
/**
* 手持子卷质检
*/
@Override
public JSONObject update(JSONObject whereJson) {
@@ -502,7 +553,10 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
return result;
}
dto.setIvt_status(whereJson.getString("ivt_status"));
bstIvtPackageinfoivtMapper.updateById(getBasicInfo(dto, false));
dto.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
dto.setUpdate_optname(SecurityUtils.getCurrentNickName());
dto.setUpdate_time(DateUtil.now());
bstIvtPackageinfoivtMapper.updateById(dto);
result.put("status", org.springframework.http.HttpStatus.OK.value());
result.put("message", "检验成功!");
return result;
@@ -527,16 +581,18 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
* @param entity 对象实体
* @param isCreate 是否创建
*/
private BstIvtPackageinfoivt getBasicInfo(BstIvtPackageinfoivt entity, boolean isCreate) {
private BstIvtPackageinfoivt getBasicInfo(BstIvtPackageinfoivt entity, BstIvtPackageinfoivt dto, boolean isCreate) {
if (isCreate) {
entity.setCreate_id(Long.valueOf(SecurityUtils.getCurrentUserId()));
entity.setCreate_name(SecurityUtils.getCurrentNickName());
entity.setCreate_time(DateUtil.now());
} else {
BeanUtils.copyProperties(entity, dto);
}
entity.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
entity.setUpdate_optname(SecurityUtils.getCurrentNickName());
entity.setUpdate_time(DateUtil.now());
return entity;
return dto;
}

View File

@@ -117,7 +117,7 @@ public class TwoInBoxTask extends AbstractAcsTask {
jsonVeExt.put("update_time", DateUtil.now());
veExtTab.insert(jsonVeExt);
}else {
ext_jo.put("pcsn", jsonTask.getString("vehicle_code2"));
ext_jo.put("pcsn", jsonTask.getString("vehicle_code"));
ext_jo.put("device_uuid", org.nl.common.utils.IdUtil.getLongId());
ext_jo.put("update_time", DateUtil.now());
veExtTab.update(ext_jo);

View File

@@ -106,10 +106,20 @@ public class TwoLashTask extends AbstractAcsTask {
interaction_json.put("weight", dao.get(0).getBox_width());
interaction_json.put("height", dao.get(0).getBox_high());
// 捆扎模版
if (ObjectUtil.isEmpty(boxTypeDao.getLash_num())) {
throw new BadRequestException("捆扎模版不能为空!");
}
interaction_json.put("template", boxTypeDao.getLash_num());
// 第二次捆扎次数
if (ObjectUtil.isEmpty(boxTypeDao.getLash_num_tow())) {
throw new BadRequestException("第二次捆扎数不能为空!");
}
interaction_json.put("bindingTimes", boxTypeDao.getLash_num_tow());
// 是否二次捆扎
if (ObjectUtil.isEmpty(boxTypeDao.getNeed_lash_two())) {
throw new BadRequestException("是否第二次捆扎不能为空!");
}
interaction_json.put("isBinding", boxTypeDao.getNeed_lash_two());
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);
AcsTaskDto dto = AcsTaskDto.builder()

View File

@@ -49,7 +49,7 @@ public class TwoMoveBoxTask extends AbstractAcsTask {
.start_device_code(json.getString("point_code1"))
.next_device_code(json.getString("point_code2"))
.route_plan_code(getRoutePlanCode(json.getString("point_code2")))
.vehicle_code(json.getString("vehicle_code"))
.vehicle_code(json.getString("vehicle_code2"))
.priority(json.getString("priority"))
.class_type(json.getString("task_type"))
.dtl_type(String.valueOf(dtl_type))
@@ -163,6 +163,7 @@ public class TwoMoveBoxTask extends AbstractAcsTask {
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_type", form.getString("task_type"));
json.put("vehicle_code", form.getString("vehicle_code"));
json.put("vehicle_code2", form.getString("vehicle_code2"));
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
json.put("task_group_id", form.getLongValue("task_group_id"));
json.put("point_code1", form.getString("start_device_code"));

View File

@@ -64,7 +64,7 @@ public class TwoOutBoxTask extends AbstractAcsTask {
.task_type(json.getString("acs_task_type"))
.start_device_code(json.getString("point_code1"))
.next_device_code(json.getString("point_code2"))
.vehicle_code(json.getString("vehicle_code"))
.vehicle_code(json.getString("vehicle_code2"))
.interaction_json(json.getJSONObject("request_param"))
.priority(json.getString("priority"))
.class_type(json.getString("task_type"))
@@ -176,6 +176,7 @@ public class TwoOutBoxTask extends AbstractAcsTask {
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_type", form.getString("task_type"));
json.put("vehicle_code", form.getString("vehicle_code"));
json.put("vehicle_code2", form.getString("vehicle_code2"));
json.put("vehicle_type", form.getString("vehicle_type"));
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
json.put("task_group_id", form.getLongValue("task_group_id"));

View File

@@ -2,6 +2,7 @@ package org.nl.b_lms.sch.tasks;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -49,7 +50,7 @@ public class TwoOutExceptionalTask extends AbstractAcsTask {
.task_type(json.getString("acs_task_type"))
.start_device_code(json.getString("point_code1"))
.next_device_code(json.getString("point_code2"))
.vehicle_code(json.getString("vehicle_code"))
.vehicle_code(json.getString("vehicle_code2"))
.priority(json.getString("priority"))
.class_type(json.getString("task_type"))
.route_plan_code(getRoutePlanCode(json.getString("point_code1")))
@@ -70,6 +71,8 @@ public class TwoOutExceptionalTask extends AbstractAcsTask {
WQLObject disTab = WQLObject.getWQLObject("st_ivt_iostorinvdis");
// 点位表
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point");
// 载具扩展属性表
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
JSONObject jsonTask = taskTab.query("task_id = '" + taskObj.getString("task_id") + "'").uniqueResult(0);
@@ -97,11 +100,19 @@ public class TwoOutExceptionalTask extends AbstractAcsTask {
JSONObject jsonPoint = pointTab.query("region_id = '" + RegionTypeEnum.TWO_OUT01.getId() + "' and is_delete = '0' and is_used = '1'").uniqueResult(0);
// 查询木箱对应的载具
JSONObject jsonVeExt = extTab.query("pcsn = '" + jsonTask.getString("vehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!"+jsonTask.getString("vehicle_code"));
}
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010711");
jsonTaskParam.put("point_code1", jsonTask.getString("point_code2"));
jsonTaskParam.put("point_code2", jsonPoint.getString("point_code"));
jsonTaskParam.put("vehicle_code", jsonTask.getString("vehicle_code"));
jsonTaskParam.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code"));
jsonTaskParam.put("task_group_id", jsonDis.getString("task_id"));
jsonTaskParam.put("is_auto_issue", IOSEnum.IS_SEND.code(""));
jsonTaskParam.put("table_fk", jsonTask.getString("table_fk"));
@@ -171,6 +182,7 @@ public class TwoOutExceptionalTask extends AbstractAcsTask {
json.put("task_code", IdUtil.getSnowflake(1, 1).nextId());
json.put("task_type", form.getString("task_type"));
json.put("vehicle_code", form.getString("vehicle_code"));
json.put("vehicle_code2", form.getString("vehicle_code2"));
json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode());
json.put("point_code1", form.getString("start_device_code"));
json.put("point_code2", form.getString("next_device_code"));

View File

@@ -54,7 +54,7 @@ public class TwoOutHeapTask extends AbstractAcsTask {
.task_type(json.getString("acs_task_type"))
.start_device_code(json.getString("point_code1"))
.next_device_code(json.getString("point_code2"))
.vehicle_code(json.getString("vehicle_code"))
.vehicle_code(json.getString("vehicle_code2"))
.interaction_json(json.getJSONObject("request_param"))
.priority(json.getString("priority"))
.class_type(json.getString("task_type"))

View File

@@ -101,7 +101,7 @@ public class TwoOutTask extends AbstractAcsTask {
.task_type(json.getString("acs_task_type"))
.start_device_code(json.getString("point_code1"))
.next_device_code(json.getString("point_code2"))
.vehicle_code(json.getString("vehicle_code"))
.vehicle_code(json.getString("vehicle_code2"))
.interaction_json(json.getJSONObject("request_param"))
.route_plan_code(getRoutePlanCode(json.getString("point_code1")))
.priority(json.getString("priority"))

View File

@@ -84,6 +84,9 @@ public class TwoSendOutTask extends AbstractAcsTask {
if (ObjectUtil.isEmpty(boxTypeDao)) {
throw new BadRequestException("木箱类型信息不存在!木箱料号为:"+boxDao.getMaterial_code());
}
if (ObjectUtil.isEmpty(boxTypeDao.getExpend_width())) {
throw new BadRequestException("货叉放货宽度不能为空!");
}
param.put("expandWidthLength",boxTypeDao.getExpend_width());
char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1);

View File

@@ -6,13 +6,11 @@ import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
@@ -22,6 +20,7 @@ import org.nl.b_lms.sch.tasks.first_floor_area.auto.TaskQueueManager;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
@@ -91,12 +90,14 @@ public class DjqTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskUtil.checkParams(schBaseTask, THIS_CLASS)) return;
TaskUtils.updateOptMessageByTask(schBaseTask);
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
log.info("任务编号为:" + schBaseTask.getTask_code() + "的任务完成接口在" + schBaseTask.getUpdate_time() + "被调用---------------------------------------------");
//1.更改任务状态为完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//2.改变起点点位状态,二次分配,取货完成就改起点库存
@@ -106,24 +107,21 @@ public class DjqTask extends AbstractAcsTask {
//清除首次分配目标点位
schBaseTask.setPoint_code3("");
//4.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
//确定起点未下发
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())
.eq(SchBaseTask::getPoint_code1, "NBJ1002")
.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
);
if (CollectionUtils.isNotEmpty(taskList)) {
SchBaseTask task = taskList.get(0);
task.setPoint_code2(schBaseTask.getPoint_code1());
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
task.setUpdate_time(DateUtil.now());
task.setUpdate_optid(SecurityUtils.getCurrentUserId());
task.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(task);
//任务下发
mzhcwTask.immediateNotifyAcs(task.getTask_id().toString());
}
// List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
// //确定起点未下发
// .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())
// .eq(SchBaseTask::getPoint_code1, "NBJ1002")
// .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))
// .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
// );
// if (CollectionUtils.isNotEmpty(taskList)) {
// SchBaseTask task = taskList.get(0);
// task.setPoint_code2(schBaseTask.getPoint_code1());
// task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
// taskService.update(task);
// //任务下发
// mzhcwTask.immediateNotifyAcs(task.getTask_id().toString());
// }
//5搬运装箱区
//sendDjqToZxq(schBaseTask);
}
@@ -134,10 +132,9 @@ public class DjqTask extends AbstractAcsTask {
}
//任务被标记为取消
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被ACS在:" + schBaseTask.getUpdate_time() + "调用接口强制取消。");
}
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(schBaseTask);
}
@@ -225,11 +222,10 @@ public class DjqTask extends AbstractAcsTask {
if (schBaseTask == null) {
throw new BadRequestException("满轴缓存位 -> 待检区取消接口任务号为空!");
}
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
TaskUtils.updateOptMessageByTask(schBaseTask);
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
taskService.update(schBaseTask);
}

View File

@@ -6,13 +6,10 @@ import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
@@ -21,6 +18,7 @@ import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
@@ -33,7 +31,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
@@ -92,11 +89,13 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
TaskUtils.updateOptMessageByTask(schBaseTask);
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
log.info("任务编号为:"+schBaseTask.getTask_code()+"的任务完成接口在"+schBaseTask.getUpdate_time()+"被调用---------------------------------------------");
//1.更改任务状态为完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//2.改变起点点位状态
@@ -106,23 +105,20 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
//更新库存记录
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).eq("point_code", schBaseTask.getPoint_code2()));
//3.待检区或管制区搬运空载具到空载具缓存位完毕,判断是否存在确定终点的空载具缓存位->输送线任务,存在就下发任务
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
//确定终点未下发
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_END.getCode())
.eq(SchBaseTask::getPoint_code2, "NBJ1002")
.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
);
if (CollectionUtils.isNotEmpty(taskList)) {
SchBaseTask task = taskList.get(0);
task.setPoint_code1(schBaseTask.getPoint_code2());
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
task.setUpdate_time(DateUtil.now());
task.setUpdate_optid(SecurityUtils.getCurrentUserId());
task.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(task);
//任务下发
ssxDjwTask.immediateNotifyAcs(task.getTask_id().toString());
}
// List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
// //确定终点未下发
// .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_END.getCode())
// .eq(SchBaseTask::getPoint_code2, "NBJ1002")
// .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
// );
// if (CollectionUtils.isNotEmpty(taskList)) {
// SchBaseTask task = taskList.get(0);
// task.setPoint_code1(schBaseTask.getPoint_code2());
// task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
// taskService.update(task);
// //任务下发
// ssxDjwTask.immediateNotifyAcs(task.getTask_id().toString());
// }
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {
@@ -130,12 +126,10 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
throw new BadRequestException("任务已执行不能取消");
}
//任务被标记为取消
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被ACS在:" + schBaseTask.getUpdate_time() + "调用接口强制取消。");
}
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(schBaseTask);
}
@@ -207,11 +201,10 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
if (schBaseTask == null) {
throw new BadRequestException("待检区->空载具缓存位取消接口任务号为空!");
}
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
TaskUtils.updateOptMessageByTask(schBaseTask);
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
taskService.update(schBaseTask);
}

View File

@@ -6,12 +6,10 @@ import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
@@ -20,6 +18,7 @@ import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
@@ -88,11 +87,13 @@ public class GzqTask extends AbstractAcsTask {
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
TaskUtils.updateOptMessageByTask(schBaseTask);
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
log.info("任务编号为:"+schBaseTask.getTask_code()+"的任务完成接口在"+schBaseTask.getUpdate_time()+"被调用---------------------------------------------");
//1.更改任务状态为完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//2.改变起点点位状态
@@ -100,24 +101,21 @@ public class GzqTask extends AbstractAcsTask {
//更新库存记录
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("有子卷")).set("container_name", schBaseTask.getVehicle_code()).eq("point_code", schBaseTask.getPoint_code2()));
//3.判断是否存在确定起点的输送线->满轴缓存位任务,存在就下发任务
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
//确定起点未下发
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())
.eq(SchBaseTask::getPoint_code1, "NBJ1002")
.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))
.eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
);
if (CollectionUtils.isNotEmpty(taskList)) {
SchBaseTask task = taskList.get(0);
task.setPoint_code2(schBaseTask.getPoint_code1());
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
task.setUpdate_time(DateUtil.now());
task.setUpdate_optid(SecurityUtils.getCurrentUserId());
task.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(task);
//任务下发
mzhcwTask.immediateNotifyAcs(task.getTask_id().toString());
}
// List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
// //确定起点未下发
// .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_START.getCode())
// .eq(SchBaseTask::getPoint_code1, "NBJ1002")
// .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("输送线->满轴缓存位"))
// .eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
// );
// if (CollectionUtils.isNotEmpty(taskList)) {
// SchBaseTask task = taskList.get(0);
// task.setPoint_code2(schBaseTask.getPoint_code1());
// task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
// taskService.update(task);
// //任务下发
// mzhcwTask.immediateNotifyAcs(task.getTask_id().toString());
// }
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {
@@ -125,12 +123,10 @@ public class GzqTask extends AbstractAcsTask {
throw new BadRequestException("任务已执行不能取消");
}
//任务被标记为取消
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被ACS在:" + schBaseTask.getUpdate_time() + "调用接口强制取消。");
}
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(schBaseTask);
}
@@ -201,11 +197,10 @@ public class GzqTask extends AbstractAcsTask {
if (schBaseTask == null) {
throw new BadRequestException("满轴缓存位 -> 管制区取消接口任务号为空!");
}
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
TaskUtils.updateOptMessageByTask(schBaseTask);
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
taskService.update(schBaseTask);
}
}

View File

@@ -6,13 +6,10 @@ import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
@@ -21,6 +18,7 @@ import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
@@ -33,7 +31,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
@@ -91,12 +88,14 @@ public class GzqToKzjhcwTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskUtil.checkParams(schBaseTask, THIS_CLASS)) return;
TaskUtils.updateOptMessageByTask(schBaseTask);
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
log.info("任务编号为:"+schBaseTask.getTask_code()+"的任务完成接口在"+schBaseTask.getUpdate_time()+"被调用---------------------------------------------");
//1.更改任务状态为完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//2.改变起点点位状态
@@ -106,23 +105,20 @@ public class GzqToKzjhcwTask extends AbstractAcsTask {
//更新库存记录
packageinfoivtService.update(new UpdateWrapper<BstIvtPackageinfoivt>().set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).eq("point_code", schBaseTask.getPoint_code2()));
//3.待检区或管制区搬运空载具到空载具缓存位完毕,判断是否存在确定终点的空载具缓存位->输送线任务,存在就下发任务
List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
//确定终点未下发
.eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_END.getCode())
.eq(SchBaseTask::getPoint_code2, "NBJ1002")
.eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
);
if (CollectionUtils.isNotEmpty(taskList)) {
SchBaseTask task = taskList.get(0);
task.setPoint_code1(schBaseTask.getPoint_code2());
task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
task.setUpdate_time(DateUtil.now());
task.setUpdate_optid(SecurityUtils.getCurrentUserId());
task.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(task);
//任务下发
ssxDjwTask.immediateNotifyAcs(task.getTask_id().toString());
}
// List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
// //确定终点未下发
// .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_END.getCode())
// .eq(SchBaseTask::getPoint_code2, "NBJ1002")
// .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
// );
// if (CollectionUtils.isNotEmpty(taskList)) {
// SchBaseTask task = taskList.get(0);
// task.setPoint_code1(schBaseTask.getPoint_code2());
// task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
// taskService.update(task);
// //任务下发
// ssxDjwTask.immediateNotifyAcs(task.getTask_id().toString());
// }
}
// 取消
if (status.equals(IOSEnum.IS_NOTANDYES.code(""))) {
@@ -130,12 +126,10 @@ public class GzqToKzjhcwTask extends AbstractAcsTask {
throw new BadRequestException("任务已执行不能取消");
}
//任务被标记为取消
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被ACS在:" + schBaseTask.getUpdate_time() + "调用接口强制取消。");
}
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(schBaseTask);
}
@@ -207,11 +201,10 @@ public class GzqToKzjhcwTask extends AbstractAcsTask {
if (schBaseTask == null) {
throw new BadRequestException("管制区->空载具缓存位取消接口任务号为空!");
}
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
TaskUtils.updateOptMessageByTask(schBaseTask);
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
taskService.update(schBaseTask);
}

View File

@@ -23,6 +23,7 @@ import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.ContainerLevelEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
@@ -109,13 +110,15 @@ public class MzhcwTask extends AbstractAcsTask {
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
TaskUtils.updateOptMessageByTask(schBaseTask);
// 执行中
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
}
// 完成
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
log.info("任务编号为:"+schBaseTask.getTask_code()+"的任务完成接口在"+schBaseTask.getUpdate_time()+"被调用---------------------------------------------");
//1.更改任务状态为完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//2.更新库存记录
@@ -135,15 +138,13 @@ public class MzhcwTask extends AbstractAcsTask {
toSsxTask.put("acs_task_type", PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
toSsxTask.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)"));
toSsxTask.put("vehicle_code", schBaseTask.getVehicle_code());
//判断空载具缓存位是否有空载具库存,有就叫桁架去任一位置搬空载具
//判断空载具缓存位是否有空载具库存,有就叫桁架去任一位置搬空载具,如果暂时没有空载具,定时任务会不断判断是否有空载具
if (CollectionUtils.isNotEmpty(kzjPointList)) {
//直接创建搬运空载具任务
toSsxTask.put("point_code1", kzjPointList.get(0).getPoint_code());
//终点为输送线点位
toSsxTask.put("point_code2", schBaseTask.getPoint_code1());
ssxDjwTask.createTask(toSsxTask);
} else {
//sendVehicle(schBaseTask);
}
} else {
//四个点任务改变pointCode3点位状态
@@ -156,12 +157,11 @@ public class MzhcwTask extends AbstractAcsTask {
throw new BadRequestException("任务已执行不能取消");
}
// 更新任务表删除字段
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被ACS在:" + schBaseTask.getUpdate_time() + "调用接口强制取消。");
}
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(schBaseTask);
}
@@ -357,11 +357,10 @@ public class MzhcwTask extends AbstractAcsTask {
if (schBaseTask == null) {
throw new BadRequestException("输送线点位 -> 满轴缓存位取消接口任务号为空!");
}
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
TaskUtils.updateOptMessageByTask(schBaseTask);
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
taskService.update(schBaseTask);
}

View File

@@ -18,6 +18,7 @@ import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
@@ -82,11 +83,13 @@ public class SendDjqKzjTask extends AbstractAcsTask {
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
TaskUtils.updateOptMessageByTask(schBaseTask);
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
log.info("任务编号为:"+schBaseTask.getTask_code()+"的任务完成接口在"+schBaseTask.getUpdate_time()+"被调用---------------------------------------------");
//1.更改任务状态为完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//2.改变起点点位状态
@@ -100,12 +103,10 @@ public class SendDjqKzjTask extends AbstractAcsTask {
throw new BadRequestException("任务已执行不能取消");
}
//任务被标记为取消
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被ACS在:" + schBaseTask.getUpdate_time() + "调用接口强制取消。");
}
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(schBaseTask);
}
@@ -177,11 +178,10 @@ public class SendDjqKzjTask extends AbstractAcsTask {
if (schBaseTask == null) {
throw new BadRequestException("装箱区->待检区送空载具取消接口任务号为空!");
}
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
TaskUtils.updateOptMessageByTask(schBaseTask);
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
taskService.update(schBaseTask);
}

View File

@@ -18,6 +18,7 @@ import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
@@ -81,12 +82,14 @@ public class SendGzqKzjTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskUtil.checkParams(schBaseTask, THIS_CLASS)) return;
TaskUtils.updateOptMessageByTask(schBaseTask);
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
log.info("任务编号为:"+schBaseTask.getTask_code()+"的任务完成接口在"+schBaseTask.getUpdate_time()+"被调用---------------------------------------------");
//1.更改任务状态为完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//2.改变起点点位状态
@@ -100,12 +103,10 @@ public class SendGzqKzjTask extends AbstractAcsTask {
throw new BadRequestException("任务已执行不能取消");
}
//任务被标记为取消
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被ACS在:" + schBaseTask.getUpdate_time() + "调用接口强制取消。");
}
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(schBaseTask);
}
@@ -177,11 +178,10 @@ public class SendGzqKzjTask extends AbstractAcsTask {
if (schBaseTask == null) {
throw new BadRequestException("装箱区->管制区送空载具取消接口任务号为空!");
}
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
TaskUtils.updateOptMessageByTask(schBaseTask);
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
taskService.update(schBaseTask);
}

View File

@@ -18,6 +18,7 @@ import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
@@ -85,11 +86,13 @@ public class SsxDjwTask extends AbstractAcsTask {
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
TaskUtils.updateOptMessageByTask(schBaseTask);
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
log.info("任务编号为:"+schBaseTask.getTask_code()+"的任务完成接口在"+schBaseTask.getUpdate_time()+"被调用---------------------------------------------");
//1.更改任务状态为完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//2.改变起点点位状态
@@ -117,14 +120,10 @@ public class SsxDjwTask extends AbstractAcsTask {
throw new BadRequestException("任务已执行不能取消");
}
//任务被标记为取消
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setRemark("任务被ACS在:" + schBaseTask.getUpdate_time() + "调用接口强制取消。");
}
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(schBaseTask);
}
@@ -194,11 +193,10 @@ public class SsxDjwTask extends AbstractAcsTask {
if (schBaseTask == null) {
throw new BadRequestException("空载具缓存位 -> 输送线取消接口任务号为空!");
}
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
TaskUtils.updateOptMessageByTask(schBaseTask);
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
taskService.update(schBaseTask);
}
}

View File

@@ -26,6 +26,7 @@ import org.nl.b_lms.storage_manage.database.service.dao.mapper.BstIvtBoxinfoMapp
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.sch.AcsTaskDto;
import org.nl.wms.sch.manage.AbstractAcsTask;
@@ -103,11 +104,13 @@ public class ZxDjwTask extends AbstractAcsTask {
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
TaskUtils.updateOptMessageByTask(schBaseTask);
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
log.info("任务编号为:"+schBaseTask.getTask_code()+"的任务完成接口在"+schBaseTask.getUpdate_time()+"被调用---------------------------------------------");
PdmBiSlittingproductionplan containerInfo = productionPlanService.getOne(new LambdaUpdateWrapper<PdmBiSlittingproductionplan>()
.eq(PdmBiSlittingproductionplan::getContainer_name, schBaseTask.getVehicle_code()));
if (containerInfo == null) {
@@ -149,13 +152,10 @@ public class ZxDjwTask extends AbstractAcsTask {
throw new BadRequestException("任务已执行不能取消");
}
//任务被标记为取消
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setRemark("任务被强制取消,不执行任何逻辑!");
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被ACS在:" + schBaseTask.getUpdate_time() + "调用接口强制取消。");
}
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(schBaseTask);
}
@@ -228,12 +228,10 @@ public class ZxDjwTask extends AbstractAcsTask {
if (schBaseTask == null) {
throw new BadRequestException("装箱区 -> 装箱对接位取消接口任务号为空!");
}
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
TaskUtils.updateOptMessageByTask(schBaseTask);
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
schBaseTask.setRemark("任务被强制取消,不执行任何逻辑!");
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
taskService.update(schBaseTask);
}
}

View File

@@ -26,6 +26,7 @@ import org.nl.b_lms.storage_manage.database.service.dao.mapper.BstIvtBoxinfoMapp
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.TaskUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.system.service.param.ISysParamService;
import org.nl.wms.sch.AcsTaskDto;
@@ -33,7 +34,6 @@ import org.nl.wms.sch.manage.AbstractAcsTask;
import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.util.TaskUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -114,19 +114,21 @@ public class ZxqTask extends AbstractAcsTask {
@Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject taskObj, String status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>().eq(SchBaseTask::getTask_id, taskObj.getString("task_id")), false);
if (TaskUtil.checkParams(schBaseTask,THIS_CLASS)) return;
if (TaskUtil.checkParams(schBaseTask, THIS_CLASS)) return;
TaskUtils.updateOptMessageByTask(schBaseTask);
if (TaskStatusEnum.EXECUTING.getCode().equals(status)) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatusEnum.EXECUTING.getCode());
}
if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) {
// PdmBiSlittingproductionplan containerInfo = productionPlanService.getOne(new LambdaUpdateWrapper<PdmBiSlittingproductionplan>()
// .eq(PdmBiSlittingproductionplan::getContainer_name, schBaseTask.getVehicle_code()));
// if (containerInfo == null) {
// throw new BadRequestException("该子卷信息不存在!");
// } else if (StrUtil.isEmpty(containerInfo.getContainer_name())) {
// throw new BadRequestException("子卷号不能为空!");
// }
log.info("任务编号为:" + schBaseTask.getTask_code() + "的任务完成接口在" + schBaseTask.getUpdate_time() + "被调用---------------------------------------------");
// PdmBiSlittingproductionplan containerInfo = productionPlanService.getOne(new LambdaUpdateWrapper<PdmBiSlittingproductionplan>()
// .eq(PdmBiSlittingproductionplan::getContainer_name, schBaseTask.getVehicle_code()));
// if (containerInfo == null) {
// throw new BadRequestException("该子卷信息不存在!");
// } else if (StrUtil.isEmpty(containerInfo.getContainer_name())) {
// throw new BadRequestException("子卷号不能为空!");
// }
//1.更改任务状态为完成
schBaseTask.setTask_status(TaskStatusEnum.FINISHED.getCode());
//2.改变起点点位状态
@@ -142,12 +144,10 @@ public class ZxqTask extends AbstractAcsTask {
throw new BadRequestException("任务已执行不能取消");
}
//任务被标记为取消
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被ACS在:" + schBaseTask.getUpdate_time() + "调用接口强制取消。");
}
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
taskService.update(schBaseTask);
}
@@ -300,11 +300,10 @@ public class ZxqTask extends AbstractAcsTask {
if (schBaseTask == null) {
throw new BadRequestException("待检区 -> 装箱区取消接口任务号为空!");
}
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
TaskUtils.updateOptMessageByTask(schBaseTask);
schBaseTask.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
schBaseTask.setUpdate_time(DateUtil.now());
schBaseTask.setUpdate_optid(SecurityUtils.getCurrentUserId());
schBaseTask.setUpdate_optname(SecurityUtils.getCurrentNickName());
schBaseTask.setTask_status(TaskStatusEnum.CANCEL.getCode());
schBaseTask.setRemark("任务被用户:" + schBaseTask.getUpdate_optname() + "在:" + schBaseTask.getUpdate_time() + "强制取消。");
taskService.update(schBaseTask);
}

View File

@@ -1,6 +1,5 @@
package org.nl.b_lms.sch.tasks.first_floor_area.auto;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.RequiredArgsConstructor;
@@ -10,7 +9,6 @@ import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
import org.nl.b_lms.sch.point.service.IbstIvtPackageinfoivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
import org.nl.b_lms.sch.tasks.first_floor_area.DjqTask;
import org.nl.b_lms.sch.tasks.first_floor_area.MzhcwTask;
import org.nl.b_lms.sch.tasks.first_floor_area.SsxDjwTask;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
@@ -22,9 +20,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j

View File

@@ -301,30 +301,37 @@ public class AutoCallAirShaftTask {
throw new BadRequestException("气胀轴库找不到[" + qzzSize + "]规格的气涨轴");
}
BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0);
// todo: 访问acs判断有无气涨轴
JSONArray acsParam = new JSONArray();
JSONObject acsQzz = new JSONObject();
acsQzz.put("device_code", shafttubeivt.getPoint_code());
acsQzz.put("code", "to_command");
acsQzz.put("value", "1");
acsQzz.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
acsParam.add(acsQzz);
wmsToAcsService.action(acsParam);
// 访问acs判断有无气涨轴
JSONArray array = new JSONArray();
JSONObject device = new JSONObject();
device.put("device_code", shafttubeivt.getPoint_code());
array.add(device);
JSONObject pointStatus = wmsToAcsService.getPointStatus(array);
if (pointStatus.getInteger("qty") == 0) {
// 没有货
toCreatShaftCacheTask(qzzSize, location, empty);
} else {
JSONArray acsParam = new JSONArray();
JSONObject acsQzz = new JSONObject();
acsQzz.put("device_code", shafttubeivt.getPoint_code());
acsQzz.put("code", "to_command");
acsQzz.put("value", "1");
acsQzz.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
acsParam.add(acsQzz);
wmsToAcsService.action(acsParam);
}
}
/**
* todo: 预留
* 创建气涨轴缓存的桁架任务
*
* @param qzzSize 气涨轴尺寸
* @param specification 标箔、锂电(1,2)
* @param location 位置:上半部分还是下半部分
* @param empty 套拔轴点位
*/
@Deprecated
private void toCreatShaftCacheTask(String qzzSize, String specification, String location, BstIvtShafttubeivt empty) {
private void toCreatShaftCacheTask(String qzzSize, String location, BstIvtShafttubeivt empty) {
// 获取气涨轴缓存没有任务的点位
List<BstIvtShafttubeivt> shafttubeivts = bstIvtShafttubeivtService.getNotTaskShaftCache(qzzSize, specification, location);
List<BstIvtShafttubeivt> shafttubeivts = bstIvtShafttubeivtService.getNotTaskShaftCache(qzzSize, empty.getQzz_generation(), location);
if (shafttubeivts.size() == 0) {
throw new BadRequestException("未找到气涨轴规格「" + qzzSize + "」的暂存位");
}

View File

@@ -44,6 +44,13 @@ public interface SlitterService {
*/
JSONObject acsSendShaftToCache(JSONObject param);
/**
* ACS申请从气涨轴暂存位呼叫气胀轴
* @param param /
* @return /
*/
JSONObject acsCallShaftFromCache(JSONObject param);
/**
* 分切机下料
* @param param
@@ -142,7 +149,7 @@ public interface SlitterService {
JSONArray getCutCacheAgvPoints();
/**
* 清理分切缓存到内包间
* 清理分切缓
* @param param /
* @return /
*/

View File

@@ -26,6 +26,8 @@ import org.nl.b_lms.bst.ivt.stockingivt.service.IBstIvtStockingivtService;
import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.sch.point.dao.StIvtCutpointivt;
import org.nl.b_lms.sch.point.service.IstIvtCutpointivtService;
import org.nl.b_lms.sch.task.dao.SchBaseTask;
@@ -111,6 +113,8 @@ public class SlitterServiceImpl implements SlitterService {
private ISysParamService paramService;
@Autowired
private SendNBJExceptionPointTask sendNBJExceptionPointTask;
@Autowired
private IpdmBiSubpackagerelationService subpackagerelationService;
@Override
@@ -395,6 +399,40 @@ public class SlitterServiceImpl implements SlitterService {
return res;
}
@Override
public JSONObject acsCallShaftFromCache(JSONObject param) {
log.info("ACS申请从气涨轴暂存位呼叫气胀轴的输入参数为{}", param);
JSONObject res = new JSONObject();
String deviceCode = param.getString("device_code");
String qzzSize = param.getString("size");
// 判断是否有未完成的任务
List<SchBaseTask> list = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getPoint_code1, deviceCode)
.lt(SchBaseTask::getTask_status, "07"));
if (list.size() > 0) {
throw new BadRequestException("点位[" + deviceCode + "]存在未完成得任务!");
}
BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false);
// 获取气涨轴缓存没有任务的点位
List<BstIvtShafttubeivt> shafttubeivts = shafttubeivtService.getNotTaskShaftCache(qzzSize,
startPoint.getQzz_generation(), startPoint.getPoint_location());
if (shafttubeivts.size() == 0) {
throw new BadRequestException("未找到气涨轴规格「" + qzzSize + "」的暂存位");
}
BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0);
JSONObject taskParam = new JSONObject();
taskParam.put("point_code1", shafttubeivt.getPoint_code());
taskParam.put("point_code2", startPoint.getPoint_code());
taskParam.put("is_bushing", SlitterConstant.SLITTER_YES);
taskParam.put("task_type", SlitterEnum.TASK_TYPE.code("穿拔轴位<>气胀轴缓存位"));
taskParam.put("product_area", SlitterConstant.SLITTER_TASK_AREA);
taskParam.put("qzz_size", qzzSize);
trussCallShaftCacheTask.createTask(taskParam);
res.put("status", HttpStatus.HTTP_OK);
res.put("message", "请求成功");
return res;
}
@SneakyThrows
@Override
// @Transactional(rollbackFor = Exception.class)
@@ -691,6 +729,7 @@ public class SlitterServiceImpl implements SlitterService {
if (ObjectUtil.isEmpty(plan.getLevel())) {
throw new BadRequestException("子卷[" + plan.getContainer_name() + "]对应的级别不能为空");
}
plan.setLevel("4");
String point_type = "5".equals(plan.getLevel()) ? "5" : "4";
// 查找终点 确认是废箔还是成品: 根据分切计划的子卷等级来区分5为报废
BstIvtShafttubeivt one = shafttubeivtService.getOne(new LambdaQueryWrapper<BstIvtShafttubeivt>()
@@ -999,10 +1038,16 @@ public class SlitterServiceImpl implements SlitterService {
}
try {
if (openLock) {
BstIvtCutpointivt agvCode = bcutpointivtService.getPintByAgvCode(pointCode, false);
agvCode.setQzz_no1("");
agvCode.setQzz_no2("");
agvCode.setPoint_status("1");
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);
} else {
@@ -1036,12 +1081,19 @@ public class SlitterServiceImpl implements SlitterService {
TaskUtils.updateOptMessageBySlitterPlan(outPlan);
List<PdmBiSlittingproductionplan> collect = Stream.of(outPlan, inPlan).collect(Collectors.toList());
slittingproductionplanService.updateBatchById(collect);
// 删除子卷包装关系
subpackagerelationService.remove(new LambdaQueryWrapper<PdmBiSubpackagerelation>()
.eq(PdmBiSubpackagerelation::getContainer_name, insideContainerName));
if (SlitterConstant.SLITTER_YES.equals(carrierStatus)) {
List<String> cons = Stream.of(outPlan.getQzzno()).collect(Collectors.toList());
// 调接口创建任务
JSONObject taskParam = new JSONObject();
taskParam.put("container", cons);
mesSlittingMachineSendMaterial(taskParam);
try {
mesSlittingMachineSendMaterial(taskParam);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
return null;
}

View File

@@ -2,12 +2,14 @@ package org.nl.b_lms.sch.tasks.slitter.util;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.nl.b_lms.bst.ivt.papervehicle.service.dao.MdPbPapervehicle;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.dao.PdmBiSlittingproductionplan;
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
import org.nl.modules.common.exception.BadRequestException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -243,4 +245,19 @@ public class SlitterTaskUtil {
param.put("to_qty", String.join(",", qtysStr));
param.put("device_code", material_specs);
}
/**
* 传入JSONArray返回筛选字符串
* @param array /
* @param name /
* @return /
*/
public static List<String> getAllStringByName(JSONArray array, String name) {
List<String> res = new ArrayList<>();
for (int i = 0; i < array.size(); i++) {
JSONObject jsonObject = array.getJSONObject(i);
res.add(jsonObject.getString(name));
}
return res;
}
}

View File

@@ -1102,6 +1102,8 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
// 任务表
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
// 载具扩展属性表
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
JSONObject result = new JSONObject();
@@ -1187,12 +1189,20 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
moveParam.put("material_id", disDao.getMaterial_id());
JSONObject jsonMove = inBussManageService.getOneStruct(moveParam);
// 查询木箱对应的载具
JSONObject jsonVeExt = extTab.query("pcsn = '" + jsonLow.getString("storagevehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!"+jsonLow.getString("storagevehicle_code"));
}
// 生成任务
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010709");
jsonTaskParam.put("start_device_code", jsonLow.getString("struct_code"));
jsonTaskParam.put("next_device_code", jsonMove.getString("struct_code"));
jsonTaskParam.put("vehicle_code", jsonLow.getString("storagevehicle_code"));
jsonTaskParam.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code"));
jsonTaskParam.put("table_fk", iostorinv_id);
TwoOutExceptionalTask taskBean = new TwoOutExceptionalTask();
@@ -1293,7 +1303,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
}
// 查询木箱对应的载具
JSONObject jsonExt = extTab.query("storagevehicle_code = '" + json.getString("storagevehicle_code") + "'").uniqueResult(0);
JSONObject jsonVeExt = extTab.query("pcsn = '" + json.getString("storagevehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!"+json.getString("storagevehicle_code"));
}
// 生成任务
JSONObject jsonTaskParam = new JSONObject();
@@ -1301,10 +1315,8 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
jsonTaskParam.put("point_code1", start_device_code);
jsonTaskParam.put("point_code2", end_device_code);
jsonTaskParam.put("vehicle_code", json.getString("storagevehicle_code"));
jsonTaskParam.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code"));
jsonTaskParam.put("containerType", json.getString("storagevehicle_type"));
if (ObjectUtil.isNotEmpty(jsonExt)) {
jsonTaskParam.put("vehicle_code2", jsonExt.getString("storagevehicle_code"));
}
jsonTaskParam.put("task_group_id", task_group_id);
jsonTaskParam.put("is_auto_issue", is_auto_issue);
JSONObject request_param = new JSONObject();

View File

@@ -501,6 +501,8 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
@Override
@Transactional
public String setPoint(Map whereJson) {
// 载具扩展属性表
WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
// 分配明细集合
ArrayList<HashMap> list = (ArrayList<HashMap>) whereJson.get("tableMater");
@@ -520,13 +522,20 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
// 主表实体类
StIvtIostorinv mstDao = this.getById(jsonDis.getString("iostorinv_id"));
// 查询木箱对应的绑定关系
JSONObject jsonVeExt = veExtTab.query("pcsn = '" + whereJson.get("vehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!"+whereJson.get("vehicle_code"));
}
// 创建任务
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010703");
jsonTaskParam.put("start_device_code", pointDto.getPoint_code());
jsonTaskParam.put("next_device_code", jsonDis.getString("struct_code"));
jsonTaskParam.put("vehicle_code", whereJson.get("vehicle_code"));
jsonTaskParam.put("vehicle_code2", whereJson.get("vehicle_code2"));
jsonTaskParam.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code"));
jsonTaskParam.put("inv_type", mstDao.getBill_type());
jsonTaskParam.put("inv_id", mstDao.getIostorinv_id());
jsonTaskParam.put("inv_code", mstDao.getBill_code());

View File

@@ -203,6 +203,9 @@ public class LashManageServiceImpl implements LashManageService {
@Override
public void createHeapTask(JSONObject whereJson) {
// 载具扩展属性表
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
// 比较两行架点位的任务个数
List<JSONObject> executeArr = WQLObject.getWQLObject("SCH_BASE_Task")
.query("handle_class = '" + TwoOutHeapTask.class.getName() + "' and task_status IN ('05','06') and is_delete = '0' " )
@@ -223,6 +226,13 @@ public class LashManageServiceImpl implements LashManageService {
next_device_code = IOSEnum.OUT_HANGER.code("行架位2");
}
// 查询木箱对应的载具
JSONObject jsonVeExt = extTab.query("pcsn = '" + whereJson.getString("vehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!"+whereJson.getString("vehicle_code"));
}
// 创建任务并下发
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010720");
@@ -231,6 +241,7 @@ public class LashManageServiceImpl implements LashManageService {
jsonTaskParam.put("task_group_id", whereJson.getString("task_group_id"));
jsonTaskParam.put("point_code2", next_device_code);
jsonTaskParam.put("vehicle_code", whereJson.getString("vehicle_code"));
jsonTaskParam.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code"));
jsonTaskParam.put("request_param", whereJson);
TwoOutHeapTask bean = SpringContextHolder.getBean(TwoOutHeapTask.class);
@@ -264,18 +275,27 @@ public class LashManageServiceImpl implements LashManageService {
result.put("height", boxDao.getBox_high());
result.put("case", boxDao.getMaterial_code());
// 是否捆扎
if (ObjectUtil.isEmpty(boxTypeDao.getNeed_lash_one())) {
throw new BadRequestException("第一次是否捆扎不能为空!");
}
result.put("isBinding", boxTypeDao.getNeed_lash_one());
// TODO 是否贴标
result.put("isLabeling", IOSEnum.IS_SEND.code(""));
// TODO 贴标模版
result.put("labelingTemplate", boxDao.getLash_num());
// 捆扎模板
if (ObjectUtil.isEmpty(boxTypeDao.getLash_num())) {
throw new BadRequestException("捆扎模版不能为空!");
}
result.put("bindingTemplate", boxTypeDao.getLash_num());
// TODO 打印机
result.put("printDevice", "1");
// TODO 贴标数量
result.put("printQty", "1");
// 第一次捆扎次数
if (ObjectUtil.isEmpty(boxTypeDao.getLash_num_one())) {
throw new BadRequestException("第一次捆扎数量不能为空!");
}
result.put("bundleTimes", boxTypeDao.getLash_num_one());
return result;

View File

@@ -71,6 +71,9 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
WQLObject schBasePointService = WQLObject.getWQLObject("sch_base_point");
// 仓位表
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
// 载具扩展属性表
WQLObject veExtTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
whereJson.put("stor_id", IOSEnum.STOR_ID.code("二期"));
whereJson.put("sect_id", RegionTypeEnum.TWO_BZC01.getId());
@@ -92,13 +95,20 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
throw new BadRequestException("没有符合规格的木箱!");
}
// 查询木箱对应的托盘号
JSONObject jsonVeExt = veExtTab.query("pcsn = '" + jsonAttr.getString("storagevehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!"+jsonAttr.getString("storagevehicle_code"));
}
// 生成任务
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010704");
jsonTaskParam.put("start_device_code", jsonAttr.getString("struct_code"));
jsonTaskParam.put("next_device_code", whereJson.getString("device_code"));
jsonTaskParam.put("vehicle_code", jsonAttr.getString("storagevehicle_code"));
jsonTaskParam.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code"));
jsonTaskParam.put("task_group_id", jsonAttr.getString("task_group_id"));
JSONObject request_param = new JSONObject();
request_param.put("containerType", jsonAttr.getString("storagevehicle_type"));
@@ -534,6 +544,8 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
*/
private String createBoxMove(JSONObject jsonObject) {
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
// 载具扩展属性表
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
// 找一个空的仓位
JSONObject paramIn = new JSONObject();
@@ -557,12 +569,20 @@ public class OutBoxManageServiceImpl implements OutBoxManageService {
jsonAttr.put("lock_type", IOSEnum.LOCK_TYPE.code("移入锁"));
attrTab.update(jsonAttr);
// 查询木箱对应的载具
JSONObject jsonVeExt = extTab.query("pcsn = '" + jsonObject.getString("storagevehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!"+jsonObject.getString("storagevehicle_code"));
}
// 生成任务
JSONObject jsonTaskParam = new JSONObject();
jsonTaskParam.put("task_type", "010505");
jsonTaskParam.put("task_type", "010709");
jsonTaskParam.put("start_device_code", jsonObject.getString("struct_code"));
jsonTaskParam.put("next_device_code", jsonAttr.getString("struct_code"));
jsonTaskParam.put("vehicle_code", jsonObject.getString("storagevehicle_code"));
jsonTaskParam.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code"));
jsonTaskParam.put("task_group_id", IdUtil.getLongId());
TwoMoveBoxTask taskBan = new TwoMoveBoxTask();

View File

@@ -341,6 +341,8 @@ public class OutBussManageServiceImpl implements OutBussManageService {
//物料表
WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase");
// 载具扩展属性表
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
// 获取子卷包装集合
String vehilcle_in = list.stream()
@@ -445,10 +447,18 @@ public class OutBussManageServiceImpl implements OutBussManageService {
jsonMoveDtl.put("turnin_struct_code", jsonMove.getString("struct_code"));
jsonMoveDtl.put("turnin_struct_name", jsonMove.getString("struct_name"));
// 查询木箱对应的载具
JSONObject jsonVeExt = extTab.query("pcsn = '" + json.getString("storagevehicle_code") + "'")
.uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVeExt)) {
throw new BadRequestException("此木箱没有绑定托盘号!"+json.getString("storagevehicle_code"));
}
// 生成任务
JSONObject param2 = new JSONObject();
param2.put("task_type", "010709");
param2.put("vehicle_code", json.getString("storagevehicle_code"));
param2.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code"));
param2.put("point_code1", json.getString("struct_code"));
param2.put("point_code2", jsonMove.getString("struct_code"));

View File

@@ -46,6 +46,13 @@ public interface InBoxManageService {
*/
JSONObject taskExceptional(JSONObject jsonObject);
/**
* 成品退货入库
* @param whereJson {
* box_no 木箱号
* vehicle_code 载具号
* }
*/
void returnIn(JSONObject whereJson);
}

View File

@@ -20,6 +20,7 @@ public interface OutBoxManageService {
* box_width
* box_high
* num: 子卷数
* @return String:木箱号
* }
*/
String outBox(JSONObject whereJson);

View File

@@ -63,7 +63,7 @@ public enum PackageInfoIvtEnum {
POINT_LOCATION(MapOf.of("", "0", "", "1")),
//库存状态
IVT_STATUS(MapOf.of("", "0", "空载具", "1", "有子卷", "2", "合格品", "3", "管制品", "4"));
IVT_STATUS(MapOf.of("", "0", "空载具", "1", "有子卷", "2", "合格品", "3", "管制品", "4"));
private Map<String, String> code;

View File

@@ -47,8 +47,6 @@ public class TaskUtils {
/**
* 根据任务维护分切点位库存
* @param taskObj 任务
* @param endPointObj 点位
* @param status 状态
*/
public static void pointMaintenanceInventory(SchBaseTask task, BstIvtCutpointivt target, String status) {

View File

@@ -495,7 +495,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
roleTree.add(row);
}
res.put("sonTree", roleTree);
result.put("rf_menu" + i, res);
result.put("rf_menu" + ("188".equals(res.getString("menu_id"))?1:0), res);
}
returnjo.put("code", "1");

View File

@@ -1796,7 +1796,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 如果满轴位没有可用的空点位,先创建一个桁架任务但是不下发,等这边空出来点位,判断是否有这种桁架任务然后补发;
// 这个情况是有agv任务在搬去待检区或管制区的路上还没有更新任务状态需要查询是否有这种任务等这个任务更新完后
// 再补发之前创建的输送线到满轴缓存位任务;
log.info("二楼到一楼,成品子卷到达一楼输送线sendProductToFirstFloor--------------------------" + whereJson.toString());
log.info("二楼到一楼,成品子卷到达一楼输送线接口sendProductToFirstFloor被调用--------------------------" + whereJson.toString());
if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) {
throw new BadRequestException("接口sendProductToFirstFloor目标站点或子卷号参数为空");
}
@@ -1859,15 +1859,16 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
result.put("message", "满轴缓存位暂无空位!");
}
} else {
log.info("二楼到一楼成品子卷到达一楼输送线,异常,任务正在创建");
log.info("二楼到一楼成品子卷到达一楼输送线任务正在创建被锁住。");
result.put("status", HttpStatus.BAD_REQUEST.value());
result.put("message", "任务正在创建中!");
result.put("message", "二楼到一楼成品子卷到达一楼输送线任务正在创建被锁住。");
}
} finally {
if (tryLock) {
lock.unlock();
}
}
log.info("二楼到一楼成品子卷到达一楼输送线接口sendProductToFirstFloor调用成功--------------------------" + result.toString());
return result;
}

View File

@@ -46,7 +46,6 @@ public class DeliveryPointIvtController {
@PutMapping
@Log("修改分切输送线")
//@SaCheckPermission("@el.check('deliverypointivt:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody DeliveryPointIvtDto dto) {
deliverypointivtService.update(dto);

View File

@@ -4,6 +4,7 @@ package org.nl.wms.pdm.rest;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.pdm.bi.slittingproductionplan.service.IPdmBiSlittingproductionplanService;
import org.nl.modules.logging.annotation.Log;
import org.nl.wms.pdm.service.SlittingproductionplanService;
import org.nl.wms.pdm.service.dto.SlittingproductionplanDto;
@@ -28,6 +29,8 @@ public class SlittingproductionplanController {
private final SlittingproductionplanService slittingproductionplanService;
private final IPdmBiSlittingproductionplanService biSlittingproductionplanService;
@GetMapping
@Log("查询分切计划")
@@ -102,4 +105,10 @@ public class SlittingproductionplanController {
slittingproductionplanService.compelFinish(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("修改子卷放置方向")
@PostMapping("/setDirection")
public ResponseEntity<Object> setDirection(@RequestBody JSONObject whereJson) {
biSlittingproductionplanService.setDirection(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -134,7 +134,7 @@ public class TaskServiceImpl implements TaskService {
taskObj.put("update_optid", SecurityUtils.getCurrentUserId());
taskObj.put("update_optname", SecurityUtils.getCurrentUsername());
taskObj.put("update_time", DateUtil.now());
taskObj.put("remark", "任务被强制完成,不执行任何逻辑!");
taskObj.put("remark", "任务被用户:" + SecurityUtils.getCurrentUsername() + "在:" + DateUtil.now() + "强制完成。");
WQLObject.getWQLObject("SCH_BASE_Task").update(taskObj);
} else {
// 任务处理类

View File

@@ -60,6 +60,12 @@ public class HandMoveStorAcsTask extends AbstractAcsTask {
.dtl_type(String.valueOf(dtl_type))
.remark(json.getString("remark"))
.build();
// 如果是二期转库任务则下发托盘
if (json.getString("task_type").equals("010709")) {
dto.setVehicle_code(json.getString("vehicle_code2"));
}
resultList.add(dto);
json.put("task_status", TaskStatusEnum.ISSUE.getCode());
WQLObject.getWQLObject("SCH_BASE_Task").update(json);
@@ -130,6 +136,7 @@ public class HandMoveStorAcsTask extends AbstractAcsTask {
json.put("task_type", form.getString("task_type"));
json.put("vehicle_code", form.getString("vehicle_code"));
json.put("vehicle_code2", form.getString("vehicle_code2"));
json.put("task_name", form.getString("task_name"));
json.put("point_code1", form.getString("point_code1"));
json.put("point_code2", form.getString("point_code2"));

View File

@@ -1,5 +1,5 @@
server:
port: 8010
port: 9999
#配置数据源
spring:
datasource:
@@ -7,10 +7,10 @@ spring:
db-type: com.alibaba.druid.pool.DruidDataSource
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
# url: jdbc:log4jdbc:mysql://${DB_HOST:10.1.3.91}:${DB_PORT:3306}/${DB_NAME:lzhl_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:lms_xc}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_two_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
username: ${DB_USER:root}
# password: ${DB_PWD:NLABC&hl123}
password: ${DB_PWD:root}
password: ${DB_PWD:12356}
# 初始连接数
initial-size: 5
# 最小连接数

View File

@@ -9,6 +9,8 @@ import org.apache.commons.lang3.StringUtils;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt;
import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.mapper.BstIvtShafttubeivtMapper;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper;
import org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt;
@@ -19,6 +21,7 @@ import org.nl.common.enums.ContainerLevelEnum;
import org.nl.common.enums.PackageInfoIvtEnum;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.system.service.param.ISysParamService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@@ -29,8 +32,8 @@ import java.util.stream.Stream;
@Slf4j
@ExtendWith(SpringExtension.class)
@SpringBootTest
@DisplayName("event test")
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class EventTest {
@Resource
@@ -57,6 +60,14 @@ public class EventTest {
@Resource
private PdmBiSubpackagerelationMapper pdmBiSubpackagerelationMapper;
@Autowired
private BstIvtShafttubeivtMapper bstIvtShafttubeivtMapper;
@Test
public void sl() {
List<BstIvtShafttubeivt> notTaskShaftCache = bstIvtShafttubeivtMapper.getNotTaskShaftCache("3", "4", "0");
System.out.println(notTaskShaftCache);
}
/**
* 装箱区->空载具缓存位补空