add:增加分切前的5个工序任务

This commit is contained in:
2024-04-17 09:17:23 +08:00
parent eb08f3f43f
commit 92cea2d06f
35 changed files with 2499 additions and 148 deletions

View File

@@ -22,7 +22,10 @@ public enum WorkOrderStatusEnum {
//生箔工序工单状态
PRODUCT_STATUS(MapOf.of("开始", "01", "空轴搬出", "02", "确认下卷", "03", "下卷完成",
"04", "结束", "09"));
"04", "结束", "09")),
//完成方式
FINISH_TYPE(MapOf.of("自动", "01", "手动", "02"));
private Map<String, String> code;

View File

@@ -1,5 +1,6 @@
package org.nl.wms.ext.acs.service.dto.to.wms;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
import org.nl.wms.ext.acs.service.dto.to.BaseRequest;
@@ -22,7 +23,7 @@ public class FeedBackTaskStatusRequest extends BaseRequest {
/**
* 任务code
*/
private String task_code;
private JSONObject task_info;
/**
* 任务状态

View File

@@ -115,13 +115,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// todo: action暂未维护
String requestNo = param.getString("requestNo");
FeedBackTaskStatusRequest taskStatusRequest = param.toJavaObject(FeedBackTaskStatusRequest.class);
String taskCode = taskStatusRequest.getTask_code();
if (ObjectUtil.isEmpty(taskCode)) {
throw new BadRequestException("任务编码不能为空!");
JSONObject taskInfo = taskStatusRequest.getTask_info();
if (ObjectUtil.isEmpty(taskInfo)) {
throw new BadRequestException("任务信息不能为空!");
}
SchBaseTask taskObj = taskService.getByCode(taskCode);
SchBaseTask taskObj = taskService.getByCode(taskInfo.getString("task_code"));
if (ObjectUtil.isEmpty(taskObj)) {
throw new BadRequestException("未找到任务编码为 [" + taskCode + "] 的任务");
throw new BadRequestException("未找到任务编码为 [" + taskInfo.getString("task_code") + "] 的任务");
}
// 任务处理类
String processingClass = taskObj.getConfig_code();
@@ -146,10 +146,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
AbstractTask abstractTask = taskFactory.getTask(processingClass);
// 更新任务
try {
abstractTask.updateTaskStatus(taskCode, status);
abstractTask.updateTaskStatus(taskInfo, status);
} catch (Exception e) {
log.error("任务状态更新失败: {}", message);
return BaseResponse.responseError(requestNo, "任务:[" + taskCode + "]状态更新失败," + message);
return BaseResponse.responseError(requestNo, "任务:[" + taskInfo.getString("task_code") + "]状态更新失败," + message);
}
return BaseResponse.responseOk(requestNo, "任务状态反馈成功!");
}

View File

@@ -0,0 +1,111 @@
package org.nl.wms.md.controller;
import java.util.Set;
import java.util.Map;
import org.nl.common.base.TableDataInfo;
import org.springframework.web.bind.annotation.*;
import lombok.RequiredArgsConstructor;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.domain.query.PageQuery;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.md.dto.MdPbInterfacebackParam;
import org.nl.wms.md.service.ImdPbInterfacebackService;
/**
* {@code @Description:} 接口回传设置表(MdPbInterfaceback)控制层
* {@code @Author:} gbx
*
* @since 2024-04-16
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/mdPbInterfaceback")
@Slf4j
public class MdPbInterfacebackController {
@Resource
private ImdPbInterfacebackService mdPbInterfacebackService;
/**
* 分页查询
*
* @param whereJson 查询条件
* @param page 分页参数
*/
@GetMapping
@Log("查询接口回传设置表")
//@SaCheckPermission("@el.check(MdPbInterfaceback:list")
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(mdPbInterfacebackService.query(whereJson, page)), HttpStatus.OK);
}
/**
* 条件查询
*
* @param params 查询条件
*/
@PostMapping("/selectList")
@Log("条件查询接口回传设置表")
//@SaCheckPermission("@el.check(MdPbInterfaceback:list")
public ResponseEntity<Object> selectList(@RequestBody MdPbInterfacebackParam params) {
return new ResponseEntity<>(mdPbInterfacebackService.selectList(params), HttpStatus.OK);
}
/**
* 新增数据
*
* @param params 实体对象
* @return 新增结果
*/
@PostMapping
@Log("新增接口回传设置表")
//@SaCheckPermission("@el.check(MdPbInterfaceback:add")
public ResponseEntity<Object> create(@RequestBody MdPbInterfacebackParam params) {
mdPbInterfacebackService.create(params);
return new ResponseEntity<>(HttpStatus.OK);
}
/**
* 修改数据
*
* @param params 实体对象
* @return 修改结果
*/
@PutMapping
@Log("修改接口回传设置表")
//@SaCheckPermission("@el.check(MdPbInterfaceback:edit')")
public ResponseEntity<Object> update(@RequestBody MdPbInterfacebackParam params) {
mdPbInterfacebackService.update(params);
return new ResponseEntity<>(HttpStatus.OK);
}
/**
* 删除数据
*
* @param ids 多个主键Id
* @return 删除结果
*/
@Log("删除接口回传设置表")
//@SaCheckPermission("@el.check(MdPbInterfaceback:del')")
@DeleteMapping
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
mdPbInterfacebackService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -0,0 +1,82 @@
package org.nl.wms.md.dao;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
/**
* {@code @Description:} 接口回传设置表(MdPbInterfaceback)实体类
* {@code @Author:} gbx
*
* @since 2024-04-16
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("md_pb_interfaceback")
public class MdPbInterfaceback extends Model<MdPbInterfaceback> {
private static final long serialVersionUID = -7739291296662381393L;
//@TableId(type = IdType.ASSIGN_ID)
/**
* 标识
*/
private Long interface_id;
/**
* 类型
*/
private String interface_type;
/**
* 接口名称
*/
private String interface_name;
/**
* 接口描述
*/
private String remark;
/**
* 是否回传
*/
private String is_back;
/**
* 业务说明
*/
private String business_comment;
/**
* 回传区域
*/
private String product_area;
/**
* 获取主键值
*
* @return 主键值
*/
@Override
protected Serializable pkVal() {
return this.interface_id;
}
}

View File

@@ -0,0 +1,15 @@
package org.nl.wms.md.dao.mapper;
import org.nl.wms.md.dao.MdPbInterfaceback;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* {@code @Description:} 接口回传设置表(MdPbInterfaceback)数据持久层
* {@code @Author:} gbx
*
* @since 2024-04-16
*/
public interface MdPbInterfacebackMapper extends BaseMapper<MdPbInterfaceback> {
}

View File

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

View File

@@ -0,0 +1,57 @@
package org.nl.wms.md.dto;
import java.io.Serializable;
import lombok.*;
import lombok.Data;
import lombok.Builder;
/**
* {@code @Description:} 接口回传设置表(MdPbInterfaceback)数据传输类
* {@code @Author:} gbx
*
* @since 2024-04-16
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MdPbInterfacebackDto implements Serializable {
private static final long serialVersionUID = -7739291296662381396L;
/**
* 标识
*/
private Long interface_id;
/**
* 类型
*/
private String interface_type;
/**
* 接口名称
*/
private String interface_name;
/**
* 接口描述
*/
private String remark;
/**
* 是否回传
*/
private String is_back;
/**
* 业务说明
*/
private String business_comment;
/**
* 回传区域
*/
private String product_area;
}

View File

@@ -0,0 +1,51 @@
package org.nl.wms.md.dto;
import lombok.Data;
import lombok.*;
import lombok.EqualsAndHashCode;
import org.nl.common.domain.query.BaseQuery;
import org.nl.wms.md.dao.MdPbInterfaceback;
/**
* {@code @Description:} 接口回传设置表(MdPbInterfaceback)查询参数类
* {@code @Author:} gbx
*
* @since 2024-04-16
*/
@Data
@Builder
@ToString
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class MdPbInterfacebackParam extends BaseQuery<MdPbInterfaceback> {
/**
* 标识
*/
private Long interface_id;
/**
* 类型
*/
private String interface_type;
/**
* 接口名称
*/
private String interface_name;
/**
* 接口描述
*/
private String remark;
/**
* 是否回传
*/
private String is_back;
/**
* 业务说明
*/
private String business_comment;
/**
* 回传区域
*/
private String product_area;
}

View File

@@ -0,0 +1,65 @@
package org.nl.wms.md.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.md.dao.MdPbInterfaceback;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.md.dto.MdPbInterfacebackParam;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* {@code @Description:} 接口回传设置表(MdPbInterfaceback)服务接口层
* {@code @Author:} gbx
*
* @since 2024-04-16
*/
public interface ImdPbInterfacebackService extends IService<MdPbInterfaceback> {
/**
* 分页查询
*
* @param whereJson 查询条件
* @return IPage<MdPbInterfaceback>
*/
IPage<MdPbInterfaceback> query(Map whereJson, PageQuery page);
/**
* 条件查询
*
* @param params 查询条件
* @return List<MdPbInterfaceback>
*/
List<MdPbInterfaceback> selectList(MdPbInterfacebackParam params);
/**
* 创建
*
* @param params 对象实体
*/
void create(MdPbInterfacebackParam params);
/**
* 编辑
*
* @param params 对象实体
*/
void update(MdPbInterfacebackParam params);
/**
* 多选删除
*
* @param ids /
*/
void deleteAll(Set<String> ids);
}

View File

@@ -0,0 +1,144 @@
package org.nl.wms.md.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.wms.md.dao.MdPbInterfaceback;
import org.nl.wms.md.dto.MdPbInterfacebackParam;
import org.nl.wms.md.dao.mapper.MdPbInterfacebackMapper;
import cn.hutool.core.util.ObjectUtil;
import org.nl.wms.md.service.ImdPbInterfacebackService;
import cn.hutool.core.date.DateUtil;
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
import org.springframework.beans.BeanUtils;
import org.nl.common.utils.SecurityUtils;
import org.nl.common.utils.IdUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery;
import javax.annotation.Resource;
import java.util.Map;
import java.util.Set;
import java.util.List;
/**
* {@code @Description:} 接口回传设置表(MdPbInterfaceback)服务实现层
* {@code @Author:} gbx
*
* @since 2024-04-16
*/
@Service("mdPbInterfacebackService")
public class MdPbInterfacebackServiceImpl extends ServiceImpl<MdPbInterfacebackMapper, MdPbInterfaceback> implements ImdPbInterfacebackService {
@Resource
private MdPbInterfacebackMapper mdPbInterfacebackMapper;
/**
* 查询数据分页
*
* @param whereJson 查询条件
* @param page 分页参数
*/
@Override
public IPage<MdPbInterfaceback> query(Map whereJson, PageQuery page) {
IPage<MdPbInterfaceback> resultPage = new Page<>(page.getPage(), page.getSize());
LambdaQueryWrapper<MdPbInterfaceback> queryWrapper = new LambdaQueryWrapper<>();
// if (whereJson.containsKey("name")) {
// queryWrapper.like(MdPbInterfaceback::getName, whereJson.get("name"));
// }
//queryWrapper.eq(MdPbInterfaceback::getIs_delete,IOSEnum.IS_NOTANDYES.code("否"));
//queryWrapper.orderByDesc(MdPbInterfaceback::getName);
return mdPbInterfacebackMapper.selectPage(resultPage, queryWrapper);
}
/**
* 根据条件查询
*
* @param params 查询条件
*/
@Override
public List<MdPbInterfaceback> selectList(MdPbInterfacebackParam params) {
return mdPbInterfacebackMapper.selectList(new QueryWrapper<MdPbInterfaceback>()
.lambda()
//.eq(ObjectUtil.isNotEmpty(params), MdPbInterfaceback::getId, params.getFuzzy())
//.or()
//.eq(ObjectUtil.isNotEmpty(params), MdPbInterfaceback::getDjid, params.getFuzzy())
);
}
/**
* 创建
*
* @param params 对象实体
*/
@Override
public void create(MdPbInterfacebackParam params) {
mdPbInterfacebackMapper.insert(getBasicInfo(params, true));
}
/**
* 编辑
*
* @param params 对象实体
*/
@Override
public void update(MdPbInterfacebackParam params) {
// MdPbInterfaceback dto = mdPbInterfacebackMapper.selectById(params.getId());
// if (dto == null) {
// throw new BadRequestException("不存在该数据!");
// }
mdPbInterfacebackMapper.updateById(getBasicInfo(params, false));
}
/**
* 多选删除
*
* @param ids 多个Id主键
*/
@Override
public void deleteAll(Set<String> ids) {
UpdateWrapper<MdPbInterfaceback> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("is_delete", IOSEnum.IS_NOTANDYES.code(""))
//.set("update_optid", SecurityUtils.getCurrentUserId())
//.set("update_optname", SecurityUtils.getCurrentNickName())
//.set("update_time", DateUtil.now())
.in("id", ids);
mdPbInterfacebackMapper.update(null, updateWrapper);
//mdPbInterfacebackMapper.deleteBatchIds(ids);
}
/**
* 获取实体基础信息
*
* @param params 对象实体
* @param isCreate 是否创建
*/
private MdPbInterfaceback getBasicInfo(MdPbInterfacebackParam params, boolean isCreate) {
// if (isCreate) {
// params.setId(IdUtil.getStringId());
// params.setCreate_id(Long.valueOf(SecurityUtils.getCurrentUserId()));
// params.setCreate_name(SecurityUtils.getCurrentNickName());
// params.setCreate_time(DateUtil.now());
// params.setIs_delete(IOSEnum.IS_NOTANDYES.code("否"));
// }
// params.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
// params.setUpdate_optname(SecurityUtils.getCurrentNickName());
// params.setUpdate_time(DateUtil.now());
MdPbInterfaceback mdPbInterfaceback = new MdPbInterfaceback();
BeanUtils.copyProperties(params, mdPbInterfaceback);
return mdPbInterfaceback;
}
}

View File

@@ -3,6 +3,7 @@ package org.nl.wms.pdm.bi.controller;
import java.util.Set;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import org.nl.common.base.TableDataInfo;
import org.springframework.web.bind.annotation.*;
import lombok.RequiredArgsConstructor;
@@ -104,5 +105,45 @@ public class PdmBiSlittingproductionplanController {
}
@Log("上料完成")
@PostMapping("/upMaterFinish")
public ResponseEntity<Object> upMaterFinish(@RequestBody JSONObject whereJson) {
pdmBiSlittingproductionplanService.upMaterFinish(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("套管完成")
@PostMapping("/caseFinish")
public ResponseEntity<Object> caseFinish(@RequestBody JSONObject whereJson) {
pdmBiSlittingproductionplanService.caseFinish(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("配送完成")
@PostMapping("/sendFinish")
public ResponseEntity<Object> sendFinish(@RequestBody JSONObject whereJson) {
pdmBiSlittingproductionplanService.sendFinish(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("入站完成")
@PostMapping("/inFinish")
public ResponseEntity<Object> inFinish(@RequestBody JSONObject whereJson) {
pdmBiSlittingproductionplanService.inFinish(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@Log("强制完成")
@PostMapping("/compelFinish")
public ResponseEntity<Object> compelFinish(@RequestBody JSONObject whereJson) {
pdmBiSlittingproductionplanService.compelFinish(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -29,7 +29,7 @@ public class PdmBiSlittingproductionplan extends Model<PdmBiSlittingproductionpl
* 分切计划标识
*/
@TableId(type = IdType.ASSIGN_ID)
private Long workorder_id;
private String workorder_id;
/**

View File

@@ -1,5 +1,6 @@
package org.nl.wms.pdm.bi.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.pdm.bi.dao.PdmBiSlittingproductionplan;
@@ -60,6 +61,41 @@ public interface IpdmBiSlittingproductionplanService extends IService<PdmBiSlitt
void deleteAll(Set<String> ids);
/**
* 上料完成
*
* @param whereJson /
*/
void upMaterFinish(JSONObject whereJson);
/**
* 套管完成
*
* @param whereJson /
*/
void caseFinish(JSONObject whereJson);
/**
* 配送完成
*
* @param whereJson /
*/
void sendFinish(JSONObject whereJson);
/**
* 入站完成
*
* @param whereJson /
*/
void inFinish(JSONObject whereJson);
/**
* 强制完成
*
* @param whereJson /
*/
void compelFinish(JSONObject whereJson);
}

View File

@@ -1,10 +1,12 @@
package org.nl.wms.pdm.bi.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
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.UpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.enums.WorkOrderStatusEnum;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.IdUtil;
@@ -17,6 +19,10 @@ import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
import cn.hutool.core.date.DateUtil;
import org.nl.wms.pdm.ivt.dao.StIvtSbpointivt;
import org.nl.wms.pdm.ivt.dao.mapper.StIvtSbpointivtMapper;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskMapper;
import org.nl.wms.sch.task.service.dao.mapper.SchBaseTaskconfigMapper;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
import org.springframework.beans.BeanUtils;
import org.nl.common.utils.SecurityUtils;
@@ -28,10 +34,13 @@ import org.nl.common.domain.query.PageQuery;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static org.nl.common.enums.WorkOrderStatusEnum.PRODUCT_STATUS;
/**
* {@code @Description:} 生箔工序工单(PdmBiRawfoilworkorder)服务实现层
@@ -50,7 +59,8 @@ public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl<PdmBiRawfoilwo
private StIvtSbpointivtMapper stIvtSbpointivtMapper;
@Resource
private ImdMeMaterialbaseService materialBaseMapper;
@Resource
private SchBaseTaskMapper schBaseTaskMapper;
/**
* 查询数据分页
@@ -141,7 +151,7 @@ public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl<PdmBiRawfoilwo
if (stIvtSbpointivt != null) {
throw new BadRequestException("点位设备不存在");
}
PdmBiRawfoilworkorder pdmBiRawfoilworkorder = pdmBiRawfoilworkorderMapper.selectOne(new LambdaQueryWrapper<PdmBiRawfoilworkorder>().eq(PdmBiRawfoilworkorder::getContainer_name, params.getCreate_name()).ne(PdmBiRawfoilworkorder::getStatus, WorkOrderStatusEnum.PRODUCT_STATUS.code("结束")));
PdmBiRawfoilworkorder pdmBiRawfoilworkorder = pdmBiRawfoilworkorderMapper.selectOne(new LambdaQueryWrapper<PdmBiRawfoilworkorder>().eq(PdmBiRawfoilworkorder::getContainer_name, params.getCreate_name()).ne(PdmBiRawfoilworkorder::getStatus, PRODUCT_STATUS.code("结束")));
if (pdmBiRawfoilworkorder != null) {
throw new BadRequestException("母卷号已存在");
}
@@ -182,7 +192,7 @@ public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl<PdmBiRawfoilwo
params.setCreate_time(DateUtil.now());
params.setUp_coiler_date(DateUtil.now());
params.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
params.setStatus(WorkOrderStatusEnum.PRODUCT_STATUS.code("开始"));
params.setStatus(PRODUCT_STATUS.code("开始"));
}
params.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
params.setUpdate_optname(SecurityUtils.getCurrentNickName());
@@ -195,43 +205,37 @@ public class PdmBiRawfoilworkorderServiceImpl extends ServiceImpl<PdmBiRawfoilwo
@Override
@Transactional(rollbackFor = Exception.class)
public void compelEnd(JSONObject whereJson) {
// String workorder_id = whereJson.getString("workorder_id");
// String currentUserId = SecurityUtils.getCurrentUserId();
// String currentUsername = SecurityUtils.getCurrentUsername();
//
// //查询该生箔工单是否存在未完成的任务
// String container_name = whereJson.getString("container_name");
//
// JSONObject task_jo = WQLObject.getWQLObject("sch_base_task").query("material_code = '" + container_name + "' AND task_status < '07' AND is_delete = '0'").uniqueResult(0);
// if (ObjectUtil.isNotEmpty(task_jo)) {
// throw new BadRequestException("该生箔工单存在未完成的任务,请先完成任务!");
// }
//
// WQLObject tab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder");
//
// JSONObject json = tab.query("workorder_id = '" + workorder_id + "'").uniqueResult(0);
// json.put("status", "09");
// json.put("finish_type", "02");
// json.put("realend_time", DateUtil.now());
// json.put("update_optid", currentUserId);
// json.put("update_optname", currentUsername);
// json.put("update_time", DateUtil.now());
// tab.update(json);
//查询该生箔工单是否存在未完成的任务
List<SchBaseTask> taskList = schBaseTaskMapper.selectList(new LambdaQueryWrapper<SchBaseTask>().eq(SchBaseTask::getMaterial_code, whereJson.getString("container_name")).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("")).ne(SchBaseTask::getTask_status, TaskStatus.FINISHED));
if (CollectionUtil.isNotEmpty(taskList)) {
throw new BadRequestException("该生箔工单存在未完成的任务,请先完成任务!");
}
UpdateWrapper<PdmBiRawfoilworkorder> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("status", WorkOrderStatusEnum.PRODUCT_STATUS.code("结束"));
updateWrapper.set("finish_type", WorkOrderStatusEnum.FINISH_TYPE.code("手动"));
updateWrapper.set("update_optid", SecurityUtils.getCurrentUserId());
updateWrapper.set("update_optname", SecurityUtils.getCurrentUsername());
updateWrapper.set("realend_time", DateUtil.now());
updateWrapper.set("update_time", DateUtil.now());
updateWrapper.eq("workorder_id", whereJson.getString("workorder_id"));
pdmBiRawfoilworkorderMapper.update(null, updateWrapper);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void confirm(JSONObject whereJson) {
// WQLObject tab = WQLObject.getWQLObject("PDM_BI_RawFoilWorkOrder");
// String productin_qty = whereJson.getString("productin_qty");
//
// JSONObject jsonRaw = tab.query("workorder_id = '" + whereJson.getString("workorder_id") + "'").uniqueResult(0);
// if (ObjectUtil.isEmpty(productin_qty)) {
// jsonRaw.put("productin_qty", 0);
// } else {
// jsonRaw.put("productin_qty", whereJson.getDoubleValue("productin_qty"));
// }
// tab.update(jsonRaw);
UpdateWrapper<PdmBiRawfoilworkorder> updateWrapper = new UpdateWrapper<>();
BigDecimal productinQty = whereJson.containsKey("productin_qty") && StringUtils.isNotEmpty(whereJson.getString("productin_qty")) ?
new BigDecimal(whereJson.getString("productin_qty")) : BigDecimal.ZERO;
updateWrapper.set("productin_qty", productinQty);
updateWrapper.set("update_optid", SecurityUtils.getCurrentUserId());
updateWrapper.set("update_optname", SecurityUtils.getCurrentUsername());
updateWrapper.set("update_time", DateUtil.now());
updateWrapper.eq("workorder_id", whereJson.getString("workorder_id"));
pdmBiRawfoilworkorderMapper.update(null, updateWrapper);
}
}

View File

@@ -1,12 +1,18 @@
package org.nl.wms.pdm.bi.service.impl;
import cn.hutool.core.util.StrUtil;
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.conditions.update.UpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.enums.WorkOrderStatusEnum;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.IdUtil;
import org.nl.wms.pdm.bi.dao.PdmBiSlittingproductionplan;
import org.nl.wms.pdm.bi.dao.PdmBiSlittingproductionplan;
import org.nl.wms.pdm.bi.dao.PdmBiSlittingproductionplan;
import org.nl.wms.pdm.bi.dto.PdmBiSlittingproductionplanParam;
import org.nl.wms.pdm.bi.dao.mapper.PdmBiSlittingproductionplanMapper;
import cn.hutool.core.util.ObjectUtil;
@@ -20,11 +26,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.common.domain.query.PageQuery;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.math.BigDecimal;
import java.util.*;
/**
@@ -127,10 +133,10 @@ public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl<PdmBiSli
*/
@Override
public void update(PdmBiSlittingproductionplanParam params) {
PdmBiSlittingproductionplan dto = pdmBiSlittingproductionplanMapper.selectById(params.getWorkorder_id());
if (dto == null) {
throw new BadRequestException("不存在该数据!");
}
PdmBiSlittingproductionplan dto = pdmBiSlittingproductionplanMapper.selectById(params.getWorkorder_id());
if (dto == null) {
throw new BadRequestException("不存在该数据!");
}
pdmBiSlittingproductionplanMapper.updateById(getBasicInfo(params, false));
}
@@ -154,22 +160,66 @@ public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl<PdmBiSli
* @param isCreate 是否创建
*/
private PdmBiSlittingproductionplan getBasicInfo(PdmBiSlittingproductionplanParam params, boolean isCreate) {
if (isCreate) {
params.setWorkorder_id(IdUtil.getStringId());
params.setStatus(WorkOrderStatusEnum.CUT_PRODUCT_STATUS.code("开始"));
params.setIs_parent_ok(IOSEnum.IS_NOTANDYES.code(""));
params.setIs_child_tz_ok(IOSEnum.IS_NOTANDYES.code(""));
params.setIs_child_ps_ok(IOSEnum.IS_NOTANDYES.code(""));
params.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
}
params.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
params.setUpdate_optname(SecurityUtils.getCurrentNickName());
params.setUpdate_time(DateUtil.now());
if (isCreate) {
params.setWorkorder_id(IdUtil.getStringId());
params.setStatus(WorkOrderStatusEnum.CUT_PRODUCT_STATUS.code("开始"));
params.setIs_parent_ok(IOSEnum.IS_NOTANDYES.code(""));
params.setIs_child_tz_ok(IOSEnum.IS_NOTANDYES.code(""));
params.setIs_child_ps_ok(IOSEnum.IS_NOTANDYES.code(""));
params.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
}
params.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
params.setUpdate_optname(SecurityUtils.getCurrentNickName());
params.setUpdate_time(DateUtil.now());
PdmBiSlittingproductionplan pdmBiSlittingproductionplan = new PdmBiSlittingproductionplan();
BeanUtils.copyProperties(params, pdmBiSlittingproductionplan);
return pdmBiSlittingproductionplan;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void upMaterFinish(JSONObject whereJson) {
//todo 逻辑待定
}
@Override
@Transactional(rollbackFor = Exception.class)
public void caseFinish(JSONObject whereJson) {
//todo 逻辑待定
}
@Override
@Transactional(rollbackFor = Exception.class)
public void sendFinish(JSONObject whereJson) {
//todo 逻辑待定
}
@Override
@Transactional(rollbackFor = Exception.class)
public void inFinish(JSONObject whereJson) {
//todo 逻辑待定
}
@Override
@Transactional(rollbackFor = Exception.class)
public void compelFinish(JSONObject whereJson) {
JSONArray data = whereJson.getJSONArray("data");
Set<String> workorderIds = new HashSet<>();
for (int i = 0; i < data.size(); i++) {
JSONObject json = data.getJSONObject(i);
String id = json.getString("workorder_id");
workorderIds.add(id);
}
UpdateWrapper<PdmBiSlittingproductionplan> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("status", WorkOrderStatusEnum.PRODUCT_STATUS.code("结束"));
updateWrapper.set("end_time", DateUtil.now());
updateWrapper.set("update_optid", SecurityUtils.getCurrentUserId());
updateWrapper.set("update_optname", SecurityUtils.getCurrentUsername());
updateWrapper.set("update_time", DateUtil.now());
updateWrapper.in("workorder_id", workorderIds);
pdmBiSlittingproductionplanMapper.update(null, updateWrapper);
}
}

View File

@@ -3,6 +3,7 @@ package org.nl.wms.pdm.ivt.controller;
import java.util.Set;
import java.util.Map;
import com.alibaba.fastjson.JSONObject;
import org.nl.common.base.TableDataInfo;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.*;
@@ -61,7 +62,7 @@ public class StIvtCoolpointivtController {
}
@GetMapping("/coolRegionIOQueryAll")
@Log("冷却区出入表")
@Log("冷却区 出入表")
//@SaCheckPermission("@el.check('stIvtCoolpointivt:list')")
public ResponseEntity<Object> coolRegionIOQueryAll(@RequestParam Map whereJson, Pageable page) {
// return new ResponseEntity<>(stIvtCoolpointivtService.coolRegionIOQueryAll(whereJson, page), HttpStatus.OK);
@@ -112,6 +113,11 @@ public class StIvtCoolpointivtController {
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/uploadMes")
@Log("手动回传MES")
public ResponseEntity<Object> uploadMes(@RequestBody JSONObject form) {
//stIvtCoolpointivtService.uploadMes(form);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -155,7 +155,7 @@ public class StIvtCoolpointivt extends Model<StIvtCoolpointivt> {
/**
* 修改人
*/
private Long update_optid;
private String update_optid;
/**

View File

@@ -46,7 +46,7 @@ public class StIvtCoolregionio extends Model<StIvtCoolregionio> {
/**
* 物料标识
*/
private Long material_id;
private String material_id;
/**
@@ -94,7 +94,7 @@ public class StIvtCoolregionio extends Model<StIvtCoolregionio> {
/**
* 客户标识
*/
private Long cust_id;
private String cust_id;
/**
@@ -106,7 +106,7 @@ public class StIvtCoolregionio extends Model<StIvtCoolregionio> {
/**
* 任务标识
*/
private Long task_id;
private String task_id;
/**
@@ -118,7 +118,7 @@ public class StIvtCoolregionio extends Model<StIvtCoolregionio> {
/**
* 创建人
*/
private Long create_id;
private String create_id;
/**
@@ -137,7 +137,7 @@ public class StIvtCoolregionio extends Model<StIvtCoolregionio> {
/**
* 修改人
*/
private Long update_optid;
private String update_optid;
/**
@@ -156,7 +156,7 @@ public class StIvtCoolregionio extends Model<StIvtCoolregionio> {
/**
* 确认人
*/
private Long confirm_optid;
private String confirm_optid;
/**

View File

@@ -149,7 +149,7 @@ public class StIvtHotpointivt extends Model<StIvtHotpointivt> {
/**
* 修改人
*/
private Long update_optid;
private String update_optid;
/**

View File

@@ -25,7 +25,7 @@ public class StIvtCoolregionioParam extends BaseQuery<StIvtCoolregionio> {
/**
* 出入单标识
*/
private Long iostorinv_id;
private String iostorinv_id;
/**
* 单据编号
*/

View File

@@ -60,6 +60,14 @@ public interface IstIvtCoolregionioService extends IService<StIvtCoolregionio> {
void deleteAll(Set<String> ids);
/**
* 物理删除
*
* @param id 主键
*/
void delete(String id);
}

View File

@@ -59,6 +59,12 @@ public interface IstIvtHotregioniomstService extends IService<StIvtHotregionioms
*/
void deleteAll(Set<String> ids);
/**
* 物理删除
*
* @param id 主键
*/
void delete(String id);
}

View File

@@ -3,6 +3,7 @@ package org.nl.wms.pdm.ivt.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
import org.nl.wms.pdm.ivt.dao.StIvtCoolpointivt;
import org.nl.wms.pdm.ivt.dto.StIvtCoolpointivtParam;
import org.nl.wms.pdm.ivt.dao.mapper.StIvtCoolpointivtMapper;
@@ -49,11 +50,37 @@ public class StIvtCoolpointivtServiceImpl extends ServiceImpl<StIvtCoolpointivtM
public IPage<StIvtCoolpointivt> query(Map whereJson, PageQuery page) {
IPage<StIvtCoolpointivt> resultPage = new Page<>(page.getPage(), page.getSize());
LambdaQueryWrapper<StIvtCoolpointivt> queryWrapper = new LambdaQueryWrapper<>();
// if (whereJson.containsKey("name")) {
// queryWrapper.like(StIvtCoolpointivt::getName, whereJson.get("name"));
// }
//queryWrapper.eq(StIvtCoolpointivt::getIs_delete,IOSEnum.IS_NOTANDYES.code("否"));
//queryWrapper.orderByDesc(StIvtCoolpointivt::getName);
if (whereJson.containsKey("product_area")) {
queryWrapper.eq(StIvtCoolpointivt::getProduct_area, whereJson.get("product_area"));
}
if (whereJson.containsKey("point_code")) {
queryWrapper.like(StIvtCoolpointivt::getPoint_code, whereJson.get("point_code"));
}
if (whereJson.containsKey("container_name")) {
queryWrapper.like(StIvtCoolpointivt::getContainer_name, whereJson.get("container_name"));
}
if (whereJson.containsKey("full_point_status")) {
queryWrapper.eq(StIvtCoolpointivt::getFull_point_status, whereJson.get("full_point_status"));
}
if (whereJson.containsKey("empty_point_status")) {
queryWrapper.eq(StIvtCoolpointivt::getEmpty_point_status, whereJson.get("empty_point_status"));
}
if (whereJson.containsKey("cool_ivt_status")) {
queryWrapper.eq(StIvtCoolpointivt::getCool_ivt_status, whereJson.get("cool_ivt_status"));
}
if (whereJson.containsKey("is_used")) {
queryWrapper.eq(StIvtCoolpointivt::getIs_used, whereJson.get("is_used"));
}
if (whereJson.containsKey("begin_time")) {
queryWrapper.le(StIvtCoolpointivt::getInstorage_time, whereJson.get("begin_time"));
}
if (whereJson.containsKey("end_time")) {
queryWrapper.ge(StIvtCoolpointivt::getInstorage_time, whereJson.get("end_time"));
}
if (whereJson.containsKey("point_location")) {
queryWrapper.eq(StIvtCoolpointivt::getPoint_location, whereJson.get("point_location"));
}
queryWrapper.orderByDesc(StIvtCoolpointivt::getPoint_code);
return stIvtCoolpointivtMapper.selectPage(resultPage, queryWrapper);
}

View File

@@ -3,6 +3,7 @@ package org.nl.wms.pdm.ivt.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.common.exception.BadRequestException;
import org.nl.wms.pdm.ivt.dao.StIvtCoolregionio;
import org.nl.wms.pdm.ivt.dto.StIvtCoolregionioParam;
import org.nl.wms.pdm.ivt.dao.mapper.StIvtCoolregionioMapper;
@@ -91,10 +92,10 @@ public class StIvtCoolregionioServiceImpl extends ServiceImpl<StIvtCoolregionioM
*/
@Override
public void update(StIvtCoolregionioParam params) {
// StIvtCoolregionio dto = stIvtCoolregionioMapper.selectById(params.getId());
// if (dto == null) {
// throw new BadRequestException("不存在该数据!");
// }
StIvtCoolregionio dto = stIvtCoolregionioMapper.selectById(params.getIostorinv_id());
if (dto == null) {
throw new BadRequestException("不存在该数据!");
}
stIvtCoolregionioMapper.updateById(getBasicInfo(params, false));
}
@@ -114,6 +115,17 @@ public class StIvtCoolregionioServiceImpl extends ServiceImpl<StIvtCoolregionioM
.in("id", ids);
stIvtCoolregionioMapper.update(null, updateWrapper);
}
/**
* 物理删除
*
* @param id 主键
*/
@Override
public void delete(String id) {
stIvtCoolregionioMapper.delete(new LambdaQueryWrapper<StIvtCoolregionio>().eq(StIvtCoolregionio::getTask_id,id));
}
/**
@@ -123,16 +135,16 @@ public class StIvtCoolregionioServiceImpl extends ServiceImpl<StIvtCoolregionioM
* @param isCreate 是否创建
*/
private StIvtCoolregionio getBasicInfo(StIvtCoolregionioParam params, boolean isCreate) {
// if (isCreate) {
// params.setId(IdUtil.getStringId());
// params.setCreate_id(Long.valueOf(SecurityUtils.getCurrentUserId()));
// params.setCreate_name(SecurityUtils.getCurrentNickName());
// params.setCreate_time(DateUtil.now());
// params.setIs_delete(IOSEnum.IS_NOTANDYES.code("否"));
// }
// params.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
// params.setUpdate_optname(SecurityUtils.getCurrentNickName());
// params.setUpdate_time(DateUtil.now());
if (isCreate) {
params.setIostorinv_id(IdUtil.getStringId());
params.setCreate_id(Long.valueOf(SecurityUtils.getCurrentUserId()));
params.setCreate_name(SecurityUtils.getCurrentNickName());
params.setCreate_time(DateUtil.now());
params.setIs_delete(IOSEnum.IS_NOTANDYES.code(""));
}
params.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
params.setUpdate_optname(SecurityUtils.getCurrentNickName());
params.setUpdate_time(DateUtil.now());
StIvtCoolregionio stIvtCoolregionio = new StIvtCoolregionio();
BeanUtils.copyProperties(params, stIvtCoolregionio);
return stIvtCoolregionio;

View File

@@ -3,6 +3,7 @@ package org.nl.wms.pdm.ivt.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.wms.pdm.ivt.dao.StIvtCoolregionio;
import org.nl.wms.pdm.ivt.dao.StIvtHotregioniomst;
import org.nl.wms.pdm.ivt.dto.StIvtHotregioniomstParam;
import org.nl.wms.pdm.ivt.dao.mapper.StIvtHotregioniomstMapper;
@@ -115,6 +116,11 @@ public class StIvtHotregioniomstServiceImpl extends ServiceImpl<StIvtHotregionio
stIvtHotregioniomstMapper.update(null, updateWrapper);
}
@Override
public void delete(String id) {
stIvtHotregioniomstMapper.delete(new LambdaQueryWrapper<StIvtHotregioniomst>().eq(StIvtHotregioniomst::getTask_id,id));
}
/**
* 获取实体基础信息

View File

@@ -3,6 +3,7 @@ package org.nl.wms.pdm.ivt.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
import org.nl.wms.pdm.ivt.dao.StIvtSbpointivt;
import org.nl.wms.pdm.ivt.dto.StIvtSbpointivtParam;
import org.nl.wms.pdm.ivt.dao.mapper.StIvtSbpointivtMapper;
@@ -49,11 +50,19 @@ public class StIvtSbpointivtServiceImpl extends ServiceImpl<StIvtSbpointivtMappe
public IPage<StIvtSbpointivt> query(Map whereJson, PageQuery page) {
IPage<StIvtSbpointivt> resultPage = new Page<>(page.getPage(), page.getSize());
LambdaQueryWrapper<StIvtSbpointivt> queryWrapper = new LambdaQueryWrapper<>();
// if (whereJson.containsKey("name")) {
// queryWrapper.like(StIvtSbpointivt::getName, whereJson.get("name"));
// }
//queryWrapper.eq(StIvtSbpointivt::getIs_delete,IOSEnum.IS_NOTANDYES.code("否"));
//queryWrapper.orderByDesc(StIvtSbpointivt::getName);
if (whereJson.containsKey("point_code")) {
queryWrapper.like(StIvtSbpointivt::getPoint_code, whereJson.get("point_code"));
}
if (whereJson.containsKey("product_area")) {
queryWrapper.eq(StIvtSbpointivt::getProduct_area, whereJson.get("product_area"));
}
if (whereJson.containsKey("is_used")) {
queryWrapper.eq(StIvtSbpointivt::getIs_used, whereJson.get("is_used"));
}
if (whereJson.containsKey("mes_used")) {
queryWrapper.eq(StIvtSbpointivt::getMes_used, whereJson.get("mes_used"));
}
queryWrapper.orderByDesc(StIvtSbpointivt::getPoint_code);
return stIvtSbpointivtMapper.selectPage(resultPage, queryWrapper);
}

View File

@@ -144,4 +144,7 @@ public class SchBaseTask implements Serializable {
@TableField(exist = false)
private String dtl_type;
private String material_code;
}

View File

@@ -175,11 +175,11 @@ public abstract class AbstractTask {
/**
* 更新任务状态,暴露给外围使用
* @param task_code 任务编码
* @param taskObj 任务信息
* @param status 状态
*/
public void updateTaskStatus(String task_code, TaskStatus status) {
this.updateStatus(task_code, status);
public void updateTaskStatus(JSONObject taskObj, TaskStatus status) {
this.updateStatus(taskObj, status);
}
@@ -194,10 +194,10 @@ public abstract class AbstractTask {
* 修改状态
* 以下改为public会出现自动注入类出现问题
*
* @param task_code /
* @param status /
* @param taskObj 任务信息
* @param status 状态
*/
protected abstract void updateStatus(String task_code, TaskStatus status);
public abstract void updateStatus(JSONObject taskObj, TaskStatus status);
/**

View File

@@ -1,15 +1,35 @@
package org.nl.wms.sch.task_manage.task.second_floor_area;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.*;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;
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.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.config.language.LangProcess;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.system.service.dict.ISysDictService;
import org.nl.system.service.dict.dao.Dict;
import org.nl.system.service.dict.dao.mapper.SysDictMapper;
import org.nl.wms.basedata.material.dao.MdMeMaterialbase;
import org.nl.wms.basedata.material.service.ImdMeMaterialbaseService;
import org.nl.wms.md.service.ImdPbInterfacebackService;
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
import org.nl.wms.pdm.bi.service.IpdmBiSlittingproductionplanService;
import org.nl.wms.pdm.ivt.dao.StIvtCoolpointivt;
import org.nl.wms.pdm.ivt.dao.StIvtCoolregionio;
import org.nl.wms.pdm.ivt.dao.StIvtSbpointivt;
import org.nl.wms.pdm.ivt.service.*;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.task.service.ISchBaseTaskService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task_manage.AbstractTask;
@@ -22,6 +42,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Map;
@@ -36,12 +57,42 @@ import java.util.Map;
public class CallEmpReelTask extends AbstractTask {
private final String THIS_CLASS = CallEmpReelTask.class.getName();
@Resource
private ISchBaseTaskService taskService;
@Resource
private ISysDictService sysDictService;
@Resource
private IstIvtCoolpointivtService stIvtCoolpointivtService;
@Resource
private IstIvtCoolregionioService stIvtCoolRegionIoService;
@Resource
private IpdmBiRawfoilworkorderService pdmBiRawfoilworkorderService;
@Resource
private IstIvtSbpointivtService stIvtSbpointivtService;
@Resource
private ImdMeMaterialbaseService mdMeMaterialbaseService;
/**
* 特殊操作
* @param task LMS任务
*
* @param task LMS任务
* @param acsTaskDto ACS任务
*/
@Override
@@ -57,37 +108,6 @@ public class CallEmpReelTask extends AbstractTask {
}
@Override
@Transactional(rollbackFor = Exception.class)
protected void updateStatus(String task_code, TaskStatus status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_code, task_code), false);
if (schBaseTask == null) {
throw new BadRequestException("CallEmpReelTask任务更新接口任务号为空");
}
// 执行中
if (TaskStatus.EXECUTING.getCode().equals(status.getCode())) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatus.EXECUTING.getCode());
}
// 完成
if (StrUtil.equals(status.getCode(), TaskStatus.FINISHED.getCode())) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatus.FINISHED.getCode());
}
// 取消
if (status.getCode().equals(IOSEnum.IS_NOTANDYES.code(""))) {
if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatus.ISSUE.getCode())) {
throw new BadRequestException("CallEmpReelTask任务已执行不能取消");
}
// 更新任务表删除字段
schBaseTask.setIs_delete(true);
}
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
@Override
public void createCompletion(SchBaseTask task) {
Assert.notNull(task, "请求参数不能为空");
@@ -107,23 +127,248 @@ public class CallEmpReelTask extends AbstractTask {
if (StrUtil.isBlank(pointCode2)) {
throw new BadRequestException("下一点不能为空");
}
//是否立即下发
boolean isSend = !StrUtil.isNotBlank(task.getIs_send()) || BooleanUtil.toBoolean(task.getIs_send());
task.setTask_id(IdUtil.getSnowflake(1,1).nextIdStr());
task.setTask_code(IdUtil.getSnowflake(1,1).nextIdStr());
if (isSingleTask(pointCode1)) {
throw new BadRequestException("点位:" + pointCode1 + "存在未完成的任务!");
}
if (isSingleTask(pointCode2)) {
throw new BadRequestException("点位:" + pointCode2 + "存在未完成的任务!");
}
if (isSingleTask(task.getPoint_code3())) {
throw new BadRequestException("点位:" + task.getPoint_code3() + "存在未完成的任务!");
}
if (isSingleTask(task.getPoint_code4())) {
throw new BadRequestException("点位:" + task.getPoint_code4() + "存在未完成的任务!");
}
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setHandle_class(THIS_CLASS);
task.setTask_status(StrUtil.isBlank(task.getTask_status()) ? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
task.setWorkshop_code(StrUtil.isEmpty(task.getWorkshop_code())? "A1" : task.getWorkshop_code());
Dict dict = sysDictService.getOne(new LambdaQueryWrapper<Dict>()
.eq(Dict::getCode, "task_priority")
.eq(Dict::getLabel, task.getTask_type()));
task.setPriority(dict == null ? "1" : dict.getValue());
boolean isSend = StrUtil.isBlank(task.getIs_send()) || BooleanUtil.toBoolean(task.getIs_send());
task.setIs_send(isSend ? "1" : "0");
task.setTask_status(StrUtil.isEmpty(task.getTask_status())
? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
task.setWorkshop_code(StrUtil.isEmpty(task.getWorkshop_code()) ? "A1" : task.getWorkshop_code());
TaskUtils.setCreateByDefault(task);
if (StrUtil.equals(task.getTask_type(), "1")) {
if (isSingleTask(task.getPoint_code1()) || isSingleTask(task.getPoint_code3())) {
throw new BadRequestException("点位:" + (isSingleTask(task.getPoint_code1()) ? task.getPoint_code1() : task.getPoint_code3()) + "存在未完成的任务!");
}
task.setTask_type("010201");
task.setAcs_task_type(PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
// 更新对应点位库存为已裹膜
StIvtCoolpointivt coolIvtToUpdate = stIvtCoolpointivtService.getOne(new LambdaQueryWrapper<StIvtCoolpointivt>()
.eq(StIvtCoolpointivt::getFull_point_code, task.getPoint_code1()), false);
if (ObjectUtil.isEmpty(coolIvtToUpdate)) {
throw new BadRequestException("未查询到对应的冷却区点位!");
}
coolIvtToUpdate.setCool_ivt_status("02");
stIvtCoolpointivtService.updateById(coolIvtToUpdate);
} else if (StrUtil.equals(task.getTask_type(), "2")) {
if (isSingleTask(task.getPoint_code1()) || isSingleTask(task.getPoint_code2())) {
throw new BadRequestException("点位:" + (isSingleTask(task.getPoint_code1()) ? task.getPoint_code1() : task.getPoint_code2()) + "存在未完成的任务!");
}
task.setTask_type("010203");
task.setAcs_task_type(PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
}
taskService.save(task);
//如果目标点位没有空位先创建不下发
if (isSend) {
// 如果需要立即下发
if (BooleanUtil.toBoolean(task.getIs_send())) {
this.renotifyAcs(task);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateStatus(JSONObject taskObj, TaskStatus status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_code, taskObj.getString("task_code")), false);
if (schBaseTask == null) {
throw new BadRequestException("CallEmpReelTask任务更新接口任务号为空");
}
//更新车号和重量
String carNo = taskObj.getString("car_no");
if (ObjectUtil.isNotEmpty(carNo)) {
PdmBiRawfoilworkorder jsonRaw = pdmBiRawfoilworkorderService.getOne(new QueryWrapper<PdmBiRawfoilworkorder>()
.eq("container_name", schBaseTask.getMaterial_code())
.ne("status", "09")
.eq("is_delete", "0")
);
if (jsonRaw != null) {
jsonRaw.setAgvno(carNo);
pdmBiRawfoilworkorderService.updateById(jsonRaw);
}
}
// 更新生箔工单称重信息
String weight = taskObj.getString("weight");
if (ObjectUtil.isNotEmpty(weight)) {
PdmBiRawfoilworkorder jsonRaw = pdmBiRawfoilworkorderService.getOne(new QueryWrapper<PdmBiRawfoilworkorder>()
.eq("container_name", schBaseTask.getMaterial_code())
.ne("status", "09")
.eq("is_delete", "0")
);
if (jsonRaw != null) {
jsonRaw.setProductin_qty(new BigDecimal(weight));
pdmBiRawfoilworkorderService.updateById(jsonRaw);
}
}
if (status.getCode().equals(IOSEnum.IS_NOTANDYES.code(""))) {
// 更新删除字段
schBaseTask.setIs_delete(true);
schBaseTask.setUpdate_time(DateUtil.now());
taskService.updateById(schBaseTask);
// 更新生箔工单状态为开始、清除称重信息
PdmBiRawfoilworkorder jsonRaw = pdmBiRawfoilworkorderService.getOne(new QueryWrapper<PdmBiRawfoilworkorder>()
.eq("container_name", schBaseTask.getMaterial_code())
.ne("status", "09")
.eq("is_delete", "0")
);
if (jsonRaw != null) {
jsonRaw.setStatus("01");
jsonRaw.setProductin_qty(BigDecimal.ZERO);
pdmBiRawfoilworkorderService.updateById(jsonRaw);
}
}
// 执行中
if (TaskStatus.EXECUTING.getCode().equals(status.getCode())) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatus.EXECUTING.getCode());
}
// 完成
if (StrUtil.equals(status.getCode(), TaskStatus.FINISHED.getCode())) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatus.FINISHED.getCode());
String pointCode1 = schBaseTask.getPoint_code1();
String pointCode2 = schBaseTask.getPoint_code2();
String pointCode3 = schBaseTask.getPoint_code3();
String pointCode4 = schBaseTask.getPoint_code4();
PdmBiRawfoilworkorder jsonRaw = pdmBiRawfoilworkorderService.getOne(new QueryWrapper<PdmBiRawfoilworkorder>()
.eq("container_name", schBaseTask.getMaterial_code())
.ne("status", "09")
.eq("is_delete", "0")
);
// 判断是两个点位的任务还是四个点位的任务
if (ObjectUtil.isEmpty(pointCode3)) {
// 判断是取满 or 取空 :取满起点是生箔区域、取空起点是冷却区域
StIvtSbpointivt jsonSbIvt = stIvtSbpointivtService.getOne(new QueryWrapper<StIvtSbpointivt>()
.eq("point_code", pointCode1.substring(0, pointCode1.length() - 2))
);
if (ObjectUtil.isNotEmpty(jsonSbIvt)) {
// 取满
StIvtCoolpointivt jsonCoolIvt = stIvtCoolpointivtService.getOne(new QueryWrapper<StIvtCoolpointivt>()
.eq("full_point_code", pointCode2)
);
// 更新库存状态
if (jsonCoolIvt != null) {
jsonCoolIvt.setFull_point_status("02");
jsonCoolIvt.setInstorage_time(DateUtil.now());
jsonCoolIvt.setContainer_name(jsonRaw.getContainer_name());
jsonCoolIvt.setWorkorder_id(jsonRaw.getWorkorder_id());
jsonCoolIvt.setIvt_qty(jsonRaw.getProductin_qty());
stIvtCoolpointivtService.updateById(jsonCoolIvt);
}
// 更新母卷工单状态
pdmBiRawfoilworkorderService.update(Wrappers.<PdmBiRawfoilworkorder>lambdaUpdate()
.set(PdmBiRawfoilworkorder::getStatus, "09")
.set(PdmBiRawfoilworkorder::getRealend_time, DateUtil.now())
.set(PdmBiRawfoilworkorder::getUpdate_optid, SecurityUtils.getCurrentUserId())
.set(PdmBiRawfoilworkorder::getUpdate_optname, SecurityUtils.getCurrentUsername())
.set(PdmBiRawfoilworkorder::getFinish_type, "01")
.set(PdmBiRawfoilworkorder::getUpdate_time, DateUtil.now())
.eq(PdmBiRawfoilworkorder::getContainer_name, schBaseTask.getMaterial_code())
);
} else {
// 取空
StIvtCoolpointivt jsonCoolIvt = stIvtCoolpointivtService.getOne(new QueryWrapper<StIvtCoolpointivt>()
.eq("empty_point_code", pointCode1)
);
if (jsonCoolIvt != null) {
jsonCoolIvt.setEmpty_point_status("01");
jsonCoolIvt.setEmpty_vehicle_code("");
stIvtCoolpointivtService.updateById(jsonCoolIvt);
}
}
} else {
// 取满放空
// 校验起点是否存在
StIvtCoolpointivt jsonIvt = stIvtCoolpointivtService.getOne(new QueryWrapper<StIvtCoolpointivt>()
.eq("empty_point_code", pointCode1)
);
if (jsonIvt == null) {
throw new BadRequestException("未找到可用点位:" + pointCode1);
}
// 更新冷却库存状态
jsonIvt.setEmpty_point_status("01");
jsonIvt.setEmpty_vehicle_code("");
stIvtCoolpointivtService.updateById(jsonIvt);
// 校验终点是否存在
StIvtCoolpointivt jsonIvt2 = stIvtCoolpointivtService.getOne(new QueryWrapper<StIvtCoolpointivt>()
.eq("full_point_code", pointCode4)
);
if (jsonIvt2 == null) {
throw new BadRequestException("终点未找到可用点位:" + pointCode2);
}
// 更新工单状态为完成
pdmBiRawfoilworkorderService.update(Wrappers.<PdmBiRawfoilworkorder>lambdaUpdate()
.set(PdmBiRawfoilworkorder::getStatus, "09")
.set(PdmBiRawfoilworkorder::getRealend_time, DateUtil.now())
.set(PdmBiRawfoilworkorder::getUpdate_optid, SecurityUtils.getCurrentUserId())
.set(PdmBiRawfoilworkorder::getUpdate_optname, SecurityUtils.getCurrentUsername())
.set(PdmBiRawfoilworkorder::getFinish_type, "01")
.set(PdmBiRawfoilworkorder::getUpdate_time, DateUtil.now())
.eq(PdmBiRawfoilworkorder::getContainer_name, schBaseTask.getMaterial_code())
);
// 更新冷却库存状态
jsonIvt2.setFull_point_status("02");
jsonIvt2.setInstorage_time(DateUtil.now());
jsonIvt2.setContainer_name(jsonRaw.getContainer_name());
jsonIvt2.setWorkorder_id(jsonRaw.getWorkorder_id());
jsonIvt2.setIvt_qty(jsonRaw.getProductin_qty());
jsonIvt2.setCool_ivt_status("01");
stIvtCoolpointivtService.updateById(jsonIvt2);
// 插入入库单
MdMeMaterialbase jsonMater = mdMeMaterialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>()
.eq("material_code", jsonRaw.getProduct_name())
);
if (jsonMater == null) {
throw new BadRequestException("产品不存在");
}
StIvtCoolregionio jsonRegion = new StIvtCoolregionio();
jsonRegion.setIostorinv_id(IdUtil.getSnowflake(1, 1).nextId());
jsonRegion.setBill_code(CodeUtil.getNewCode("COOLREGION_BILL_CODE"));
jsonRegion.setIo_type("0");
jsonRegion.setMaterial_id(jsonMater.getMaterial_id());
jsonRegion.setPcsn(jsonRaw.getContainer_name());
jsonRegion.setVehicle_code("");
jsonRegion.setQty(jsonRaw.getProductin_qty());
//todo 物料单位是否需要
//jsonRegion.setQty_unit_id(jsonMater.getQty_unit_id());
jsonRegion.setBill_status("50");
jsonRegion.setStart_point_code(pointCode2);
jsonRegion.setEnd_point_code(pointCode4);
jsonRegion.setCust_id("");
jsonRegion.setCreate_mode("03");
jsonRegion.setTask_id(taskObj.getString("task_code"));
jsonRegion.setCreate_id(SecurityUtils.getCurrentUserId());
jsonRegion.setCreate_name(SecurityUtils.getCurrentUsername());
jsonRegion.setCreate_time(DateUtil.now());
jsonRegion.setUpdate_optid(SecurityUtils.getCurrentUserId());
jsonRegion.setUpdate_optname(SecurityUtils.getCurrentUsername());
jsonRegion.setUpdate_time(DateUtil.now());
jsonRegion.setConfirm_optid(SecurityUtils.getCurrentUserId());
jsonRegion.setConfirm_optname(SecurityUtils.getCurrentUsername());
jsonRegion.setConfirm_time(DateUtil.now());
stIvtCoolRegionIoService.save(jsonRegion);
}
}
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
@Override
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
@@ -148,5 +393,21 @@ public class CallEmpReelTask extends AbstractTask {
taskService.updateById(schBaseTask);
}
public boolean isSingleTask(String point_code) {
return taskService.getOne(new LambdaQueryWrapper<SchBaseTask>()
.and(wrapper -> wrapper
.eq(SchBaseTask::getPoint_code1, point_code)
.or()
.eq(SchBaseTask::getPoint_code2, point_code)
.or()
.eq(SchBaseTask::getPoint_code3, point_code)
.or()
.eq(SchBaseTask::getPoint_code4, point_code)
)
.lt(SchBaseTask::getTask_status, "07")
.eq(SchBaseTask::getIs_delete, "0")
) != null;
}
}

View File

@@ -0,0 +1,387 @@
package org.nl.wms.sch.task_manage.task.second_floor_area;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;
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 lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.system.service.dict.ISysDictService;
import org.nl.system.service.dict.dao.Dict;
import org.nl.system.service.dict.dao.mapper.SysDictMapper;
import org.nl.wms.md.service.ImdPbInterfacebackService;
import org.nl.wms.pdm.bi.dao.PdmBiSlittingproductionplan;
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
import org.nl.wms.pdm.bi.service.IpdmBiSlittingproductionplanService;
import org.nl.wms.pdm.ivt.dao.StIvtCoolpointivt;
import org.nl.wms.pdm.ivt.dao.StIvtCoolregionio;
import org.nl.wms.pdm.ivt.dao.StIvtCutpointivt;
import org.nl.wms.pdm.ivt.service.*;
import org.nl.wms.pdm.ivt.service.impl.StIvtCutpointivtServiceImpl;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.task.service.ISchBaseTaskService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.AcsTaskDto;
import org.nl.wms.sch.task_manage.enums.PackageInfoIvtEnum;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
import org.nl.wms.util.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
/**
* @author gbx
* @since 2024-04-11
*/
@Slf4j
@Component(value = "CoolCutTask")
public class CoolCutTask extends AbstractTask {
private final String THIS_CLASS = CoolCutTask.class.getName();
@Resource
private ISchBaseTaskService taskService;
@Resource
private ISysDictService sysDictService;
@Resource
private IstIvtCoolpointivtService stIvtCoolpointivtService;
@Resource
private IstIvtCoolregionioService stIvtCoolRegionIoService;
@Resource
private IstIvtCutpointivtService stIvtCutpointivtService;
//分切计划
@Resource
private IpdmBiSlittingproductionplanService pdmBiSlittingproductionplanService;
/**
* 特殊操作
*
* @param task LMS任务
* @param acsTaskDto ACS任务
*/
@Override
public void deliveryBeforeProcessing(SchBaseTask task, AcsTaskDto acsTaskDto) {
acsTaskDto.setDtl_type(task.getDtl_type());
acsTaskDto.setTruss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"));
acsTaskDto.setAgv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("2楼1区域AGV系统"));
acsTaskDto.setParams(JSON.parseObject(task.getRequest_param(), new TypeReference<Map<String, String>>() {
}));
}
@Override
public void createCompletion(SchBaseTask task) {
Assert.notNull(task, "请求参数不能为空");
String taskType = task.getTask_type();
if (StrUtil.isBlank(taskType)) {
throw new BadRequestException("业务类型不能为空");
}
String vehicleCode = task.getVehicle_code();
if (StrUtil.isBlank(vehicleCode)) {
throw new BadRequestException("载具号不能为空");
}
String pointCode1 = task.getPoint_code1();
if (StrUtil.isBlank(pointCode1)) {
throw new BadRequestException("起点不能为空");
}
String pointCode2 = task.getPoint_code2();
if (StrUtil.isBlank(pointCode2)) {
throw new BadRequestException("下一点不能为空");
}
String pointCode3 = task.getPoint_code3();
String pointCode4 = task.getPoint_code4();
if (isSingleTask(pointCode1)) {
throw new BadRequestException("点位:" + pointCode1 + "存在未完成的任务!");
}
if (isSingleTask(pointCode2)) {
throw new BadRequestException("点位:" + pointCode2 + "存在未完成的任务!");
}
if (isSingleTask(pointCode3)) {
throw new BadRequestException("点位:" + pointCode3 + "存在未完成的任务!");
}
if (isSingleTask(pointCode4)) {
throw new BadRequestException("点位:" + pointCode4 + "存在未完成的任务!");
}
//是否立即下发
boolean isSend = !StrUtil.isNotBlank(task.getIs_send()) || BooleanUtil.toBoolean(task.getIs_send());
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setHandle_class(THIS_CLASS);
task.setIs_send(isSend ? "1" : "0");
task.setAcs_task_type(StrUtil.isEmpty(task.getAcs_task_type())
? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : (task.getAcs_task_type()));
task.setTask_status(StrUtil.isEmpty(task.getTask_status())
? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
task.setWorkshop_code(StrUtil.isEmpty(task.getWorkshop_code())? "A1" : task.getWorkshop_code());
if ("010301".equals(task.getTask_type())) {
task.setAcs_task_type("2");
} else {
//todo 2和3是什么类型
task.setAcs_task_type("3");
}
//根据类型获取对应的任务优先级
String priority = Optional.ofNullable(sysDictService.getOne(new LambdaQueryWrapper<Dict>()
.eq(Dict::getCode, "task_priority")
.eq(Dict::getLabel, task.getTask_type())))
.map(Dict::getValue)
.orElse("1");
task.setPriority(priority);
TaskUtils.setCreateByDefault(task);
taskService.save(task);
//如果目标点位没有空位先创建不下发
if (isSend) {
this.renotifyAcs(task);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateStatus(JSONObject taskObj, TaskStatus status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_code, taskObj.getString("task_code")), false);
if (schBaseTask == null) {
throw new BadRequestException("CoolCutTask任务更新接口任务号为空");
}
// 执行中
if (TaskStatus.EXECUTING.getCode().equals(status.getCode())) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatus.EXECUTING.getCode());
}
// 完成
if (StrUtil.equals(status.getCode(), TaskStatus.FINISHED.getCode())) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatus.FINISHED.getCode());
String point_code1 = schBaseTask.getPoint_code1();
String point_code2 = schBaseTask.getPoint_code2();
String point_code3 = schBaseTask.getPoint_code3();
String point_code4 = schBaseTask.getPoint_code4();
if ("010301".equals(schBaseTask.getTask_type())) {
//更新主表状态
StIvtCoolregionio stIvtCoolregionio = stIvtCoolRegionIoService.getOne(new LambdaQueryWrapper<StIvtCoolregionio>()
.eq(StIvtCoolregionio::getTask_id, schBaseTask.getTask_id()));
stIvtCoolregionio.setBill_status("50");
stIvtCoolRegionIoService.update(stIvtCoolregionio, new QueryWrapper<>());
// 更新冷却区母卷库存
StIvtCoolpointivt stIvtCoolpointivt = stIvtCoolpointivtService.getOne(new QueryWrapper<StIvtCoolpointivt>().eq("full_point_code", point_code1));
if (stIvtCoolpointivt != null) {
if (StringUtils.isBlank(stIvtCoolpointivt.getContainer_name())) {
throw new BadRequestException("CoolCutTask任务更新接口-子卷号不能为空!");
}
stIvtCoolpointivt.setFull_point_status("01");
stIvtCoolpointivt.setContainer_name("");
stIvtCoolpointivt.setWorkorder_id("");
stIvtCoolpointivt.setIvt_qty(BigDecimal.ZERO);//包含qty的字段一般都是BigDecimal类型
stIvtCoolpointivt.setCool_ivt_status("01");
stIvtCoolpointivt.setInstorage_time(""); // 是String类型赋值空字符表示清除时间
stIvtCoolpointivt.setUpdate_optid(SecurityUtils.getCurrentUserId());
stIvtCoolpointivt.setUpdate_optname(SecurityUtils.getCurrentNickName());
stIvtCoolpointivt.setUpdate_time(DateUtil.now());
stIvtCoolpointivtService.updateById(stIvtCoolpointivt);
// 更新分切区母卷库存
StIvtCutpointivt cutPointIvt = stIvtCutpointivtService.getOne(new QueryWrapper<StIvtCutpointivt>().eq("full_point_code", point_code2));
if (cutPointIvt != null) {
cutPointIvt.setFull_point_status("02");
cutPointIvt.setContainer_name(stIvtCoolpointivt.getContainer_name());
cutPointIvt.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId())); //注意这是Long类型记得转换
cutPointIvt.setUpdate_optname(SecurityUtils.getCurrentNickName());
cutPointIvt.setUpdate_time(DateUtil.now());
stIvtCutpointivtService.updateById(cutPointIvt);
}
}
// 更新分切区空轴库存
StIvtCutpointivt cutPointIvt2 = stIvtCutpointivtService.getOne(new QueryWrapper<StIvtCutpointivt>().eq("empty_point_code", point_code3));
if (cutPointIvt2 != null) {
cutPointIvt2.setEmpty_point_status("01");
cutPointIvt2.setEmpty_vehicle_code("");
cutPointIvt2.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
cutPointIvt2.setUpdate_optname(SecurityUtils.getCurrentNickName());
cutPointIvt2.setUpdate_time(DateUtil.now());
stIvtCutpointivtService.updateById(cutPointIvt2);
}
// 更新冷却区空轴库存
StIvtCoolpointivt coolPointIvt2 = stIvtCoolpointivtService.getOne(new QueryWrapper<StIvtCoolpointivt>().eq("empty_point_code", point_code4));
if (coolPointIvt2 != null) {
coolPointIvt2.setEmpty_point_status("02");
coolPointIvt2.setEmpty_vehicle_code(schBaseTask.getVehicle_code2());
coolPointIvt2.setCool_ivt_status("01");
coolPointIvt2.setInstorage_time(""); // 是String类型赋值空字符表示清除时间
coolPointIvt2.setUpdate_optid(SecurityUtils.getCurrentUserId());
coolPointIvt2.setUpdate_optname(SecurityUtils.getCurrentNickName());
coolPointIvt2.setUpdate_time(DateUtil.now());
stIvtCoolpointivtService.updateById(coolPointIvt2);
}
// 更新该母卷对应分切计划的状态
PdmBiSlittingproductionplan pdmBiSlittingproductionplan = new PdmBiSlittingproductionplan();
pdmBiSlittingproductionplan.setIs_parent_ok("1");
pdmBiSlittingproductionplanService.update(pdmBiSlittingproductionplan, new QueryWrapper<PdmBiSlittingproductionplan>().eq("parent_container_name", stIvtCoolpointivt.getContainer_name()));
// todo MES相关判断该接口是否需要回传
//JSONObject mom_jo = new JSONObject();
//mom_jo.put("contain_name", container_name);
//mom_jo.put("warehouse", "1");
//JSONObject back_jo = WQLObject.getWQLObject("MD_PB_InterfaceBack").query("interface_name = 'cutPlanMomRollDeliveryComplete'").uniqueResult(0);
//if (ObjectUtil.isNotEmpty(back_jo) && "1".equals(back_jo.getString("is_back"))) {
// new LmsToMesServiceImpl().cutPlanMomRollDeliveryComplete(mom_jo);
//}
}
if ("010302".equals(schBaseTask.getTask_type())) {
// 更新主表状态
StIvtCoolregionio stIvtCoolregionio = new StIvtCoolregionio();
stIvtCoolregionio.setBill_status("50");
stIvtCoolRegionIoService.update(stIvtCoolregionio, new QueryWrapper<StIvtCoolregionio>().eq("task_id", schBaseTask.getTask_id()));
// 更新冷却区母卷库存
StIvtCoolpointivt coolPointIvt = stIvtCoolpointivtService.getOne(new QueryWrapper<StIvtCoolpointivt>().eq("full_point_code", point_code1));
if (coolPointIvt != null) {
coolPointIvt.setFull_point_status("01");
coolPointIvt.setContainer_name("");
coolPointIvt.setWorkorder_id("");
coolPointIvt.setIvt_qty(BigDecimal.ZERO);
coolPointIvt.setCool_ivt_status("01");
coolPointIvt.setInstorage_time("");
coolPointIvt.setUpdate_optid(SecurityUtils.getCurrentUserId());
coolPointIvt.setUpdate_optname(SecurityUtils.getCurrentNickName());
coolPointIvt.setUpdate_time(DateUtil.now());
stIvtCoolpointivtService.updateById(coolPointIvt);
}
// 更新分切区母卷库存
StIvtCutpointivt cutPointIvt = stIvtCutpointivtService.getOne(new QueryWrapper<StIvtCutpointivt>().eq("full_point_code", point_code2));
if (cutPointIvt != null) {
cutPointIvt.setFull_point_status("02");
cutPointIvt.setContainer_name(coolPointIvt.getContainer_name());
cutPointIvt.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
cutPointIvt.setUpdate_optname(SecurityUtils.getCurrentNickName());
cutPointIvt.setUpdate_time(DateUtil.now());
stIvtCutpointivtService.updateById(cutPointIvt);
}
// 更新该母卷对应分切计划的状态
PdmBiSlittingproductionplan pdmBiSlittingproductionplan = new PdmBiSlittingproductionplan();
pdmBiSlittingproductionplan.setIs_parent_ok("1");
pdmBiSlittingproductionplanService.update(pdmBiSlittingproductionplan, new QueryWrapper<PdmBiSlittingproductionplan>().eq("parent_container_name", coolPointIvt.getContainer_name()));
// JSONObject mom_jo = new JSONObject();
// mom_jo.put("contain_name", container_name);
// mom_jo.put("warehouse", "1");
// //判断该接口是否需要回传
// JSONObject back_jo = WQLObject.getWQLObject("MD_PB_InterfaceBack").query("interface_name = 'cutPlanMomRollDeliveryComplete'").uniqueResult(0);
// if (ObjectUtil.isNotEmpty(back_jo) && "1".equals(back_jo.getString("is_back"))) {
// new LmsToMesServiceImpl().cutPlanMomRollDeliveryComplete(mom_jo);
// }
}
if ("010303".equals(schBaseTask.getTask_type())) {
// 更新分切区空轴库存
StIvtCutpointivt cutPointIvt2 = stIvtCutpointivtService.getOne(new QueryWrapper<StIvtCutpointivt>().eq("empty_point_code", point_code1));
if (cutPointIvt2 != null) {
cutPointIvt2.setEmpty_point_status("01");
cutPointIvt2.setEmpty_vehicle_code("");
cutPointIvt2.setUpdate_optid(Long.valueOf(SecurityUtils.getCurrentUserId()));
cutPointIvt2.setUpdate_optname(SecurityUtils.getCurrentNickName());
cutPointIvt2.setUpdate_time(DateUtil.now());
stIvtCutpointivtService.updateById(cutPointIvt2);
}
// 更新冷却区空轴库存
StIvtCoolpointivt coolPointIvt2 = stIvtCoolpointivtService.getOne(new QueryWrapper<StIvtCoolpointivt>().eq("empty_point_code", point_code2));
if (coolPointIvt2 != null) {
coolPointIvt2.setEmpty_point_status("02");
coolPointIvt2.setEmpty_vehicle_code(schBaseTask.getVehicle_code());
coolPointIvt2.setCool_ivt_status("01");
coolPointIvt2.setInstorage_time("");
coolPointIvt2.setUpdate_optid(SecurityUtils.getCurrentUserId());
coolPointIvt2.setUpdate_optname(SecurityUtils.getCurrentNickName());
coolPointIvt2.setUpdate_time(DateUtil.now());
stIvtCoolpointivtService.updateById(coolPointIvt2);
}
}
}
// 取消
if (status.getCode().equals(IOSEnum.IS_NOTANDYES.code(""))) {
// if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatus.ISSUE.getCode())) {
// throw new BadRequestException("CoolCutTask任务已执行不能取消");
// }
// 更新任务表删除字段
schBaseTask.setIs_delete(true);
//删除冷却区出入记录
stIvtCoolRegionIoService.delete(schBaseTask.getTask_id());
}
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
@Override
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("CoolCutTask任务强制完成接口任务号为空");
}
schBaseTask.setTask_status(TaskStatus.FINISHED.getCode());
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
@Override
public void cancel(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("CoolCutTask任务取消接口任务号为空");
}
schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消"));
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create() throws BadRequestException {
}
//判断该点位是否存在未完成的任务
public boolean isSingleTask(String point_code) {
return taskService.getOne(new LambdaQueryWrapper<SchBaseTask>()
.and(wrapper -> wrapper
.eq(SchBaseTask::getPoint_code1, point_code)
.or()
.eq(SchBaseTask::getPoint_code2, point_code)
.or()
.eq(SchBaseTask::getPoint_code3, point_code)
.or()
.eq(SchBaseTask::getPoint_code4, point_code)
)
.lt(SchBaseTask::getTask_status, "07")
.eq(SchBaseTask::getIs_delete, "0")
) != null;
}
}

View File

@@ -0,0 +1,296 @@
package org.nl.wms.sch.task_manage.task.second_floor_area;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;
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 lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.dict.ISysDictService;
import org.nl.system.service.dict.dao.Dict;
import org.nl.system.service.dict.dao.mapper.SysDictMapper;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.basedata.material.service.ImdMeMaterialbaseService;
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
import org.nl.wms.pdm.bi.service.IpdmBiSlittingproductionplanService;
import org.nl.wms.pdm.ivt.dao.StIvtCoolpointivt;
import org.nl.wms.pdm.ivt.service.*;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task.service.ISchBaseTaskService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.AcsTaskDto;
import org.nl.wms.sch.task_manage.enums.PackageInfoIvtEnum;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
import org.nl.wms.util.TaskUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
/**
* @author gbx
* @since 2024-04-11
*/
@Slf4j
@Component(value = "InCoolIvtTask")
public class InCoolIvtTask extends AbstractTask {
private final String THIS_CLASS = InCoolIvtTask.class.getName();
@Resource
private ISchBaseTaskService taskService;
@Resource
private ISchBasePointService schBasePointService;
@Resource
private ISysDictService sysDictService;
@Resource
private IstIvtCoolpointivtService stIvtCoolpointivtService;
@Resource
private IstIvtCoolregionioService stIvtCoolRegionIoService;
@Resource
private IpdmBiRawfoilworkorderService pdmBiRawfoilworkorderService;
/**
* 特殊操作
*
* @param task LMS任务
* @param acsTaskDto ACS任务
*/
@Override
public void deliveryBeforeProcessing(SchBaseTask task, AcsTaskDto acsTaskDto) {
acsTaskDto.setDtl_type(task.getDtl_type());
acsTaskDto.setTruss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"));
acsTaskDto.setAgv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统"));
acsTaskDto.setParams(JSON.parseObject(task.getRequest_param(), new TypeReference<Map<String, String>>() {
}));
}
@Override
public void createCompletion(SchBaseTask task) {
Assert.notNull(task, "请求参数不能为空");
String taskType = task.getTask_type();
if (StrUtil.isBlank(taskType)) {
throw new BadRequestException("业务类型不能为空");
}
String vehicleCode = task.getVehicle_code();
if (StrUtil.isBlank(vehicleCode)) {
throw new BadRequestException("载具号不能为空");
}
String pointCode1 = task.getPoint_code1();
if (StrUtil.isBlank(pointCode1)) {
throw new BadRequestException("起点不能为空");
}
String pointCode2 = task.getPoint_code2();
if (StrUtil.isBlank(pointCode2)) {
throw new BadRequestException("下一点不能为空");
}
String pointCode3 = task.getPoint_code3();
String pointCode4 = task.getPoint_code4();
if (isSingleTask(pointCode1)) {
throw new BadRequestException("点位:" + pointCode1 + "存在未完成的任务!");
}
if (isSingleTask(pointCode2)) {
throw new BadRequestException("点位:" + pointCode2 + "存在未完成的任务!");
}
if (isSingleTask(pointCode3)) {
throw new BadRequestException("点位:" + pointCode3 + "存在未完成的任务!");
}
if (isSingleTask(pointCode4)) {
throw new BadRequestException("点位:" + pointCode4 + "存在未完成的任务!");
}
//是否立即下发
boolean isSend = !StrUtil.isNotBlank(task.getIs_send()) || BooleanUtil.toBoolean(task.getIs_send());
task.setTask_type("010204");
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setHandle_class(THIS_CLASS);
task.setIs_send(isSend ? "1" : "0");
task.setAcs_task_type(StrUtil.isEmpty(task.getAcs_task_type())
? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : (task.getAcs_task_type()));
//todo 3的任务类型加进枚举中
task.setAcs_task_type("3");
task.setTask_status(StrUtil.isEmpty(task.getTask_status())
? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
task.setWorkshop_code(StrUtil.isEmpty(task.getWorkshop_code()) ? "A1" : task.getWorkshop_code());
//根据类型获取对应的任务优先级
Dict dict = sysDictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getCode, "task_priority").eq(Dict::getLabel, task.getTask_type()));
if (dict == null) {
task.setPriority("1");
} else {
task.setPriority(dict.getValue());
}
TaskUtils.setCreateByDefault(task);
taskService.save(task);
//如果目标点位没有空位先创建不下发
if (isSend) {
this.renotifyAcs(task);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateStatus(JSONObject taskObj, TaskStatus status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_code, taskObj.getString("task_code")), false);
if (schBaseTask == null) {
throw new BadRequestException("CallEmpReelTask任务更新接口任务号为空");
}
// 执行中
if (TaskStatus.EXECUTING.getCode().equals(status.getCode())) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatus.EXECUTING.getCode());
}
// 完成
if (StrUtil.equals(status.getCode(), TaskStatus.FINISHED.getCode())) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatus.FINISHED.getCode());
String pointCode1 = schBaseTask.getPoint_code1();
String pointCode2 = schBaseTask.getPoint_code2();
// 校验起点是否存在
SchBasePoint startPointDto = schBasePointService.getOne(new QueryWrapper<SchBasePoint>()
.eq("point_code", pointCode1));
if (ObjectUtil.isEmpty(startPointDto)) {
throw new BadRequestException("起点未找到可用点位:" + pointCode1);
}
// 校验终点是否存在
StIvtCoolpointivt jsonIvt = stIvtCoolpointivtService.getOne(new QueryWrapper<StIvtCoolpointivt>()
.eq("full_point_code", pointCode2)
);
if (ObjectUtil.isEmpty(jsonIvt)) {
throw new BadRequestException("终点未找到可用点位:" + pointCode2);
}
// 更新暂存位状态为空位
SchBasePoint jsonPoint = schBasePointService.getOne(new QueryWrapper<SchBasePoint>().eq("point_code", pointCode1));
jsonPoint.setPoint_status("1");
//todo 是否需要清理物料编号
//jsonPoint.setMaterial_code("");
schBasePointService.updateById(jsonPoint);
// 更新冷却库存状态
PdmBiRawfoilworkorder rawJo = pdmBiRawfoilworkorderService.getOne(new QueryWrapper<PdmBiRawfoilworkorder>()
.eq("container_name", schBaseTask.getMaterial_code())
);
if (rawJo != null) {
jsonIvt.setFull_point_status("02");
jsonIvt.setCool_ivt_status("04");
jsonIvt.setInstorage_time(DateUtil.now());
jsonIvt.setContainer_name(rawJo.getContainer_name());
jsonIvt.setWorkorder_id(rawJo.getWorkorder_id());
//todo pdm_bi_rawfoilworkorder 无qty字段
//jsonIvt.setIvt_qty(rawJo.getQty());
stIvtCoolpointivtService.updateById(jsonIvt);
}
// 将入冷却信息发送给mes
JSONObject param = new JSONObject();
String userName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue();
String passWord = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue();
param.put("iContainerName", schBaseTask.getMaterial_code());
param.put("iArrivalTime", DateUtil.now());
param.put("iWarehouse", 2);
param.put("UserName", userName);
param.put("PassWord", passWord);
//todo MES回传 判断该接口是否需要回传
//MdPbInterfaceBack backJo = mdPbInterfaceBackService.getOne(new QueryWrapper<MdPbInterfaceBack>().eq("interface_name", "momRollSemiFGInboundComplete"));
// if (backJo != null && "1".equals(backJo.getIsBack())) {
// String productArea = backJo.getProductArea();
// if (StrUtil.isNotEmpty(productArea) && productArea.contains(schBaseTask.getString("product_area"))) {
// new LmsToMesServiceImpl().momRollSemiFGInboundComplete(param);
// }
// }
// 将该母卷的入冷却标识改为0
PdmBiRawfoilworkorder pdmBiRawfoilworkorder = new PdmBiRawfoilworkorder();
pdmBiRawfoilworkorder.setIs_instor("0");
pdmBiRawfoilworkorderService.update(pdmBiRawfoilworkorder, new UpdateWrapper<PdmBiRawfoilworkorder>().eq("container_name", schBaseTask.getMaterial_code()));
log.info("母卷:" + schBaseTask.getMaterial_code() + "对应的入冷却任务完成请求入半成品库标识改为0");
}
// 取消
if (status.getCode().equals(IOSEnum.IS_NOTANDYES.code(""))) {
if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatus.ISSUE.getCode())) {
throw new BadRequestException("CallEmpReelTask任务已执行不能取消");
}
// 更新任务表删除字段
schBaseTask.setIs_delete(true);
//删除冷却区出入记录
stIvtCoolRegionIoService.delete(schBaseTask.getTask_id());
}
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
@Override
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("CallEmpReelTask任务强制完成接口任务号为空");
}
schBaseTask.setTask_status(TaskStatus.FINISHED.getCode());
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
@Override
public void cancel(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("CallEmpReelTask任务取消接口任务号为空");
}
schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消"));
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
public boolean isSingleTask(String point_code) {
return taskService.getOne(new LambdaQueryWrapper<SchBaseTask>()
.and(wrapper -> wrapper
.eq(SchBaseTask::getPoint_code1, point_code)
.or()
.eq(SchBaseTask::getPoint_code2, point_code)
.or()
.eq(SchBaseTask::getPoint_code3, point_code)
.or()
.eq(SchBaseTask::getPoint_code4, point_code)
)
.lt(SchBaseTask::getTask_status, "07")
.eq(SchBaseTask::getIs_delete, "0")
) != null;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create() throws BadRequestException {
}
}

View File

@@ -0,0 +1,386 @@
package org.nl.wms.sch.task_manage.task.second_floor_area;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;
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 lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.dict.ISysDictService;
import org.nl.system.service.dict.dao.Dict;
import org.nl.system.service.dict.dao.mapper.SysDictMapper;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.basedata.material.service.ImdMeMaterialbaseService;
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
import org.nl.wms.pdm.bi.service.IpdmBiSlittingproductionplanService;
import org.nl.wms.pdm.ivt.dao.StIvtCoolpointivt;
import org.nl.wms.pdm.ivt.dao.StIvtCoolregionio;
import org.nl.wms.pdm.ivt.dao.StIvtHotpointivt;
import org.nl.wms.pdm.ivt.dao.StIvtHotregioniomst;
import org.nl.wms.pdm.ivt.service.*;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task.service.ISchBaseTaskService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.AcsTaskDto;
import org.nl.wms.sch.task_manage.enums.PackageInfoIvtEnum;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
import org.nl.wms.util.TaskUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
/**
* @author gbx
* @since 2024-04-11
*/
@Slf4j
@Component(value = "InHotTask")
public class InHotTask extends AbstractTask {
private final String THIS_CLASS = InHotTask.class.getName();
@Resource
private ISchBaseTaskService taskService;
@Resource
private ISchBasePointService schBasePointService;
@Resource
private ISysDictService sysDictService;
@Resource
private IstIvtHotpointivtService stIvtHotpointivtService;
@Resource
private IstIvtHotregioniomstService stIvtHotregioniomstService;
@Resource
private IstIvtCoolpointivtService stIvtCoolpointivtService;
@Resource
private IstIvtCoolregionioService stIvtCoolRegionIoService;
@Resource
private IpdmBiRawfoilworkorderService pdmBiRawfoilworkorderService;
/**
* 特殊操作
*
* @param task LMS任务
* @param acsTaskDto ACS任务
*/
@Override
public void deliveryBeforeProcessing(SchBaseTask task, AcsTaskDto acsTaskDto) {
acsTaskDto.setDtl_type(task.getDtl_type());
acsTaskDto.setTruss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"));
acsTaskDto.setAgv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统"));
acsTaskDto.setParams(JSON.parseObject(task.getRequest_param(), new TypeReference<Map<String, String>>() {
}));
}
@Override
public void createCompletion(SchBaseTask task) {
Assert.notNull(task, "请求参数不能为空");
String taskType = task.getTask_type();
if (StrUtil.isBlank(taskType)) {
throw new BadRequestException("业务类型不能为空");
}
String vehicleCode = task.getVehicle_code();
if (StrUtil.isBlank(vehicleCode)) {
throw new BadRequestException("载具号不能为空");
}
String pointCode1 = task.getPoint_code1();
if (StrUtil.isBlank(pointCode1)) {
throw new BadRequestException("起点不能为空");
}
String pointCode2 = task.getPoint_code2();
if (StrUtil.isBlank(pointCode2)) {
throw new BadRequestException("下一点不能为空");
}
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setHandle_class(THIS_CLASS);
task.setTask_status(StrUtil.isEmpty(task.getTask_status())
? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
task.setWorkshop_code(StrUtil.isEmpty(task.getWorkshop_code()) ? "A1" : task.getWorkshop_code());
//根据类型获取对应的任务优先级
Dict dict = sysDictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getCode, "task_priority").eq(Dict::getLabel, task.getTask_type()));
if (dict == null) {
task.setPriority("1");
} else {
task.setPriority(dict.getValue());
}
//是否立即下发
boolean isSend = !StrUtil.isNotBlank(task.getIs_send()) || BooleanUtil.toBoolean(task.getIs_send());
task.setIs_send(isSend ? "1" : "0");
TaskUtils.setCreateByDefault(task);
if (StrUtil.equals(task.getTask_type(), "1")) {
if (isSingleTask(pointCode1)) {
throw new BadRequestException("点位:" + pointCode1 + "存在未完成的任务!");
}
if (isSingleTask(task.getPoint_code3())) {
throw new BadRequestException("点位:" + task.getPoint_code3() + "存在未完成的任务!");
}
task.setTask_type("010201");
if (StrUtil.isNotEmpty(task.getPoint_code3())) {
//todo json.put("acs_task_type", "8"); 6和8是什么任务
task.setAcs_task_type(PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务"));
} else {
task.setAcs_task_type(PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
}
// 更新对应点位库存为已裹膜
StIvtCoolpointivt coolIvtToUpdate = stIvtCoolpointivtService.getOne(new LambdaQueryWrapper<StIvtCoolpointivt>()
.eq(StIvtCoolpointivt::getFull_point_code, task.getPoint_code1()), false);
if (ObjectUtil.isEmpty(coolIvtToUpdate)) {
throw new BadRequestException("未查询到对应的冷却区点位!");
}
coolIvtToUpdate.setCool_ivt_status("02");
stIvtCoolpointivtService.updateById(coolIvtToUpdate);
}
if (StrUtil.equals(task.getTask_type(), "2")) {
if (isSingleTask(pointCode1)) {
throw new BadRequestException("点位:" + pointCode1 + "存在未完成的任务!");
}
if (isSingleTask(pointCode2)) {
throw new BadRequestException("点位:" + pointCode2 + "存在未完成的任务!");
}
task.setTask_type("010203");
task.setAcs_task_type(PackageInfoIvtEnum.ACS_TASK_TYPE.code("桁架任务"));
}
taskService.save(task);
//如果目标点位没有空位先创建不下发
if (isSend) {
this.renotifyAcs(task);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateStatus(JSONObject taskObj, TaskStatus status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_code, taskObj.getString("task_code")), false);
if (schBaseTask == null) {
throw new BadRequestException("CallEmpReelTask任务更新接口任务号为空");
}
String task_id = schBaseTask.getTask_id();
// 执行中
if (TaskStatus.EXECUTING.getCode().equals(status.getCode())) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatus.EXECUTING.getCode());
}
// 完成
if (StrUtil.equals(status.getCode(), TaskStatus.FINISHED.getCode())) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatus.FINISHED.getCode());
String currentUserId = SecurityUtils.getCurrentUserId();
String currentUsername = SecurityUtils.getCurrentUsername();
// 更新主表
StIvtHotregioniomst jsonHotMst = stIvtHotregioniomstService.getOne(new QueryWrapper<StIvtHotregioniomst>()
.eq("task_id", task_id));
String hotPointCode = "";
// 判断此任务是否有三个点位
if (ObjectUtil.isEmpty(schBaseTask.getPoint_code3())) {
// 暂存区入烘箱任务
// 更新烘箱区库存状态
StIvtHotpointivt jsonHotIvt = stIvtHotpointivtService.getOne(new QueryWrapper<StIvtHotpointivt>()
.eq("point_code", schBaseTask.getPoint_code2()));
if (jsonHotIvt != null) {
jsonHotIvt.setPoint_status("02");
jsonHotIvt.setContainer_name(jsonHotMst.getContainer_name());
jsonHotIvt.setWorkorder_id(jsonHotMst.getWorkorder_id());
jsonHotIvt.setIvt_qty(jsonHotMst.getQty());
jsonHotIvt.setInstorage_time(DateUtil.now());
jsonHotIvt.setUpdate_optid(currentUserId);
jsonHotIvt.setUpdate_optname(currentUsername);
jsonHotIvt.setUpdate_time(DateUtil.now());
stIvtHotpointivtService.updateById(jsonHotIvt);
}
// 更新暂存区点位状态为空位
SchBasePoint jsonPoint = schBasePointService.getOne(new QueryWrapper<SchBasePoint>().eq("point_code", schBaseTask.getPoint_code1()));
if (jsonPoint != null) {
jsonPoint.setPoint_status("1");
//todo setMaterialCode是否需要MaterialCode
//jsonPoint.setMaterialCode("");
schBasePointService.updateById(jsonPoint);
}
hotPointCode = jsonHotIvt != null ? jsonHotIvt.getExt_code() : "";
} else {
//冷却区入烘箱任务
//更新冷却出入主表状态
StIvtCoolregionio jsonCool = stIvtCoolRegionIoService.getOne(new QueryWrapper<StIvtCoolregionio>()
.eq("task_id", task_id)
);
if (jsonCool != null) {
jsonCool.setBill_status("50");
stIvtCoolRegionIoService.updateById(jsonCool);
}
// 更新冷却区库存状态
StIvtCoolpointivt jsonCoolIvt = stIvtCoolpointivtService.getOne(new QueryWrapper<StIvtCoolpointivt>()
.eq("full_point_code", schBaseTask.getPoint_code1())
);
if (jsonCoolIvt != null) {
jsonCoolIvt.setFull_point_status("01");
jsonCoolIvt.setCool_ivt_status("01");
jsonCoolIvt.setContainer_name("");
jsonCoolIvt.setWorkorder_id("");
jsonCoolIvt.setIvt_qty(BigDecimal.ZERO);
jsonCoolIvt.setInstorage_time("");
jsonCoolIvt.setUpdate_optid(currentUserId);
jsonCoolIvt.setUpdate_optname(currentUsername);
jsonCoolIvt.setUpdate_time(DateUtil.now());
stIvtCoolpointivtService.updateById(jsonCoolIvt);
}
// 更新烘箱区库存状态
StIvtHotpointivt jsonHotIvt = stIvtHotpointivtService.getOne(new QueryWrapper<StIvtHotpointivt>()
.eq("point_code", schBaseTask.getPoint_code3())
);
if (jsonHotIvt != null) {
jsonHotIvt.setPoint_status("02");
jsonHotIvt.setContainer_name(jsonCoolIvt != null ? jsonCoolIvt.getContainer_name() : "");
jsonHotIvt.setWorkorder_id(jsonCoolIvt != null ? jsonCoolIvt.getWorkorder_id() : "");
jsonHotIvt.setIvt_qty(jsonCoolIvt != null ? jsonCoolIvt.getIvt_qty() : BigDecimal.ZERO);
jsonHotIvt.setInstorage_time(DateUtil.now());
jsonHotIvt.setUpdate_optid(currentUserId);
jsonHotIvt.setUpdate_optname(currentUsername);
jsonHotIvt.setUpdate_time(DateUtil.now());
stIvtHotpointivtService.updateById(jsonHotIvt);
log.info("入烘箱wql执行update语句");
log.info("入烘箱mybatis执行update语句");
}
hotPointCode = jsonHotIvt != null ? jsonHotIvt.getExt_code() : "";
}
// 将入烘箱信息发送给mes
JSONObject param = new JSONObject();
String userName = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_USERNAME").getValue();
String passWord = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MES_PASSWORD").getValue();
param.put("iContainerName", jsonHotMst.getContainer_name());
param.put("iResourceName", hotPointCode);
param.put("iMoveInDate", DateUtil.now());
param.put("iPlanBakingTemperature", jsonHotMst.getTemperature());
param.put("iPlanBakingTimer", jsonHotMst.getOven_time());
param.put("UserName", userName);
param.put("PassWord", passWord);
// todo 判断该接口是否需要回传
// MdPbInterfaceBack backJo = mdPbInterfaceBackService.getOne(new QueryWrapper<MdPbInterfaceBack>().eq("interface_name", "momRollBakeInBound"));
// if (backJo != null && "1".equals(backJo.getIsBack())) {
// String productArea = backJo.getProductArea();
// if (StrUtil.isNotEmpty(productArea) && productArea.contains(schBaseTask.getString("product_area"))) {
// new LmsToMesServiceImpl().momRollBakeInBound(param);
// }
// }
// 将该母卷的入烘箱标识改为0
PdmBiRawfoilworkorder pdmBiRawfoilworkorder = new PdmBiRawfoilworkorder();
pdmBiRawfoilworkorder.setIs_baking("0");
pdmBiRawfoilworkorderService.update(pdmBiRawfoilworkorder, new UpdateWrapper<PdmBiRawfoilworkorder>().eq("container_name", jsonHotMst.getContainer_name()));
log.info("母卷:" + jsonHotMst.getContainer_name() + "对应的入烘箱任务完成请求烘烤标识改为0");
}
// 取消
if (status.getCode().equals(IOSEnum.IS_NOTANDYES.code(""))) {
if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatus.ISSUE.getCode())) {
throw new BadRequestException("CallEmpReelTask任务已执行不能取消");
}
// 更新任务表删除字段
schBaseTask.setIs_delete(true);
stIvtCoolRegionIoService.delete(task_id);
stIvtHotregioniomstService.delete(task_id);
}
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
@Override
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("CallEmpReelTask任务强制完成接口任务号为空");
}
schBaseTask.setTask_status(TaskStatus.FINISHED.getCode());
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
@Override
public void cancel(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("CallEmpReelTask任务取消接口任务号为空");
}
schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消"));
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
public boolean isSingleTask(String point_code) {
return taskService.getOne(new LambdaQueryWrapper<SchBaseTask>()
.and(wrapper -> wrapper
.eq(SchBaseTask::getPoint_code1, point_code)
.or()
.eq(SchBaseTask::getPoint_code2, point_code)
.or()
.eq(SchBaseTask::getPoint_code3, point_code)
.or()
.eq(SchBaseTask::getPoint_code4, point_code)
)
.lt(SchBaseTask::getTask_status, "07")
.eq(SchBaseTask::getIs_delete, "0")
) != null;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create() throws BadRequestException {
}
}

View File

@@ -0,0 +1,277 @@
package org.nl.wms.sch.task_manage.task.second_floor_area;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.BooleanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;
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 lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.dict.ISysDictService;
import org.nl.system.service.dict.dao.Dict;
import org.nl.system.service.dict.dao.mapper.SysDictMapper;
import org.nl.wms.basedata.material.service.ImdMeMaterialbaseService;
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
import org.nl.wms.pdm.bi.service.IpdmBiSlittingproductionplanService;
import org.nl.wms.pdm.ivt.dao.StIvtCoolpointivt;
import org.nl.wms.pdm.ivt.dao.StIvtHotpointivt;
import org.nl.wms.pdm.ivt.dao.StIvtHotregioniomst;
import org.nl.wms.pdm.ivt.service.*;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task.service.ISchBaseTaskService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.AcsTaskDto;
import org.nl.wms.sch.task_manage.enums.PackageInfoIvtEnum;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.storage_manage.ios.enums.IOSEnum;
import org.nl.wms.util.TaskUtils;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.Map;
/**
* @author gbx
* @since 2024-04-11
*/
@Slf4j
@Component(value = "OutHotTask")
public class OutHotTask extends AbstractTask {
private final String THIS_CLASS = OutHotTask.class.getName();
@Resource
private ISchBaseTaskService taskService;
@Resource
private ISchBasePointService schBasePointService;
@Resource
private ISysDictService sysDictService;
@Resource
private IstIvtHotpointivtService stIvtHotpointivtService;
@Resource
private IstIvtHotregioniomstService stIvtHotregioniomstService;
/**
* 特殊操作
*
* @param task LMS任务
* @param acsTaskDto ACS任务
*/
@Override
public void deliveryBeforeProcessing(SchBaseTask task, AcsTaskDto acsTaskDto) {
acsTaskDto.setDtl_type(task.getDtl_type());
acsTaskDto.setTruss_type(PackageInfoIvtEnum.TRUSS_TYPE.code("点对点任务"));
acsTaskDto.setAgv_system_type(PackageInfoIvtEnum.AGV_SYSTEM_TYPE.code("1楼叉车系统"));
acsTaskDto.setParams(JSON.parseObject(task.getRequest_param(), new TypeReference<Map<String, String>>() {
}));
}
@Override
public void createCompletion(SchBaseTask task) {
Assert.notNull(task, "请求参数不能为空");
String taskType = task.getTask_type();
if (StrUtil.isBlank(taskType)) {
throw new BadRequestException("业务类型不能为空");
}
String vehicleCode = task.getVehicle_code();
if (StrUtil.isBlank(vehicleCode)) {
throw new BadRequestException("载具号不能为空");
}
String pointCode1 = task.getPoint_code1();
if (StrUtil.isBlank(pointCode1)) {
throw new BadRequestException("起点不能为空");
}
String pointCode2 = task.getPoint_code2();
if (StrUtil.isBlank(pointCode2)) {
throw new BadRequestException("下一点不能为空");
}
String pointCode3 = task.getPoint_code3();
String pointCode4 = task.getPoint_code4();
if (isSingleTask(pointCode1)) {
throw new BadRequestException("点位:" + pointCode1 + "存在未完成的任务!");
}
if (isSingleTask(pointCode2)) {
throw new BadRequestException("点位:" + pointCode2 + "存在未完成的任务!");
}
if (isSingleTask(pointCode3)) {
throw new BadRequestException("点位:" + pointCode3 + "存在未完成的任务!");
}
if (isSingleTask(pointCode4)) {
throw new BadRequestException("点位:" + pointCode4 + "存在未完成的任务!");
}
//是否立即下发
boolean isSend = !StrUtil.isNotBlank(task.getIs_send()) || BooleanUtil.toBoolean(task.getIs_send());
task.setTask_type("010202");
task.setTask_id(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setTask_code(IdUtil.getSnowflake(1, 1).nextIdStr());
task.setHandle_class(THIS_CLASS);
task.setIs_send(isSend ? "1" : "0");
task.setAcs_task_type(StrUtil.isEmpty(task.getAcs_task_type())
? PackageInfoIvtEnum.ACS_TASK_TYPE.code("agv任务") : (task.getAcs_task_type()));
//todo 改为任务枚举
task.setAcs_task_type("6");
task.setTask_status(StrUtil.isEmpty(task.getTask_status())
? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
task.setWorkshop_code(StrUtil.isEmpty(task.getWorkshop_code())? "A1" : task.getWorkshop_code());
//根据类型获取对应的任务优先级
Dict dict = sysDictService.getOne(new LambdaQueryWrapper<Dict>().eq(Dict::getCode, "task_priority").eq(Dict::getLabel, task.getTask_type()));
if (dict == null) {
task.setPriority("1");
} else {
task.setPriority(dict.getValue());
}
TaskUtils.setCreateByDefault(task);
taskService.save(task);
//如果目标点位没有空位先创建不下发
if (isSend) {
this.renotifyAcs(task);
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateStatus(JSONObject taskObj, TaskStatus status) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_code, taskObj.getString("task_code")), false);
if (schBaseTask == null) {
throw new BadRequestException("CallEmpReelTask任务更新接口任务号为空");
}
String task_id = schBaseTask.getTask_id();
// 执行中
if (TaskStatus.EXECUTING.getCode().equals(status.getCode())) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatus.EXECUTING.getCode());
}
// 完成
if (StrUtil.equals(status.getCode(), TaskStatus.FINISHED.getCode())) {
// 更新任务状态为执行中
schBaseTask.setTask_status(TaskStatus.FINISHED.getCode());
// 查询烘箱区点位库存信息
StIvtHotpointivt jsonHotIvt = stIvtHotpointivtService.getOne(new LambdaQueryWrapper<StIvtHotpointivt>()
.eq(StIvtHotpointivt::getPoint_code, schBaseTask.getPoint_code1()), false);
// 查询烘箱区出入主表信息
StIvtHotregioniomst jsonHotMst = stIvtHotregioniomstService.getOne(new QueryWrapper<StIvtHotregioniomst>()
.eq("task_id", task_id));
// 更新暂存区点位状态
SchBasePoint jsonPoint2 = schBasePointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, schBaseTask.getPoint_code2()), false);
jsonPoint2.setPoint_status("2");
//todo setMaterialCode是否需要MaterialCode
//jsonPoint2.setMaterial_code(jsonHotIvt.getContainer_name());
schBasePointService.updateById(jsonPoint2);
// 更新烘箱区库存状态
jsonHotIvt.setPoint_status("01");
jsonHotIvt.setContainer_name("");
jsonHotIvt.setWorkorder_id("");
jsonHotIvt.setIvt_qty(BigDecimal.ZERO);
jsonHotIvt.setInstorage_time("");
jsonHotIvt.setUpdate_optid(SecurityUtils.getCurrentUserId());
jsonHotIvt.setUpdate_optname(SecurityUtils.getCurrentUsername());
jsonHotIvt.setUpdate_time(DateUtil.now());
log.info("出烘箱wql执行update语句");
stIvtHotpointivtService.updateById(jsonHotIvt);
// 查询更新后的烘箱区点位库存信息
StIvtHotpointivt updateIvt = stIvtHotpointivtService.getOne(new LambdaQueryWrapper<StIvtHotpointivt>()
.eq(StIvtHotpointivt::getPoint_code, schBaseTask.getPoint_code1()), false);
log.info("更新完后烘箱库存为:-----------------" + updateIvt.toString());
// 将出烘箱信息发送给mes
JSONObject param = new JSONObject();
param.put("iContainerName", jsonHotMst.getContainer_name());
param.put("iResourceName", jsonHotIvt.getExt_code());
param.put("iMoveOutDate", DateUtil.now());
param.put("iabxActualBakingTemperature", jsonHotMst.getTemperature());
param.put("iabxActualBakingTimer", jsonHotMst.getOven_time());
//todo MES回传 判断该接口是否需要回传
//MdPbInterfaceBack backJo = mdPbInterfaceBackService.getOne(new QueryWrapper<MdPbInterfaceBack>().eq("interface_name", "momRollBakeOutBound"));
// if (backJo != null && "1".equals(backJo.getIsBack())) {
// String productArea = backJo.getProductArea();
// if (StrUtil.isNotEmpty(productArea) && productArea.contains(schBaseTask.getString("product_area"))) {
// new LmsToMesServiceImpl().momRollBakeOutBound(param);
// }
// }
}
// 取消
if (status.getCode().equals(IOSEnum.IS_NOTANDYES.code(""))) {
if (Integer.parseInt(schBaseTask.getTask_status()) > Integer.parseInt(TaskStatus.ISSUE.getCode())) {
throw new BadRequestException("CallEmpReelTask任务已执行不能取消");
}
// 更新任务表删除字段
schBaseTask.setIs_delete(true);
stIvtHotregioniomstService.delete(task_id);
}
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
@Override
public void forceFinish(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("CallEmpReelTask任务强制完成接口任务号为空");
}
schBaseTask.setTask_status(TaskStatus.FINISHED.getCode());
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
@Override
public void cancel(String taskId) {
SchBaseTask schBaseTask = taskService.getOne(new LambdaUpdateWrapper<SchBaseTask>()
.eq(SchBaseTask::getTask_id, taskId), false);
if (schBaseTask == null) {
throw new BadRequestException("CallEmpReelTask任务取消接口任务号为空");
}
schBaseTask.setTask_status(IOSEnum.ACS_RESULT.code("取消"));
TaskUtils.setUpdateByDefault(schBaseTask);
taskService.updateById(schBaseTask);
}
public boolean isSingleTask(String point_code) {
return taskService.getOne(new LambdaQueryWrapper<SchBaseTask>()
.and(wrapper -> wrapper
.eq(SchBaseTask::getPoint_code1, point_code)
.or()
.eq(SchBaseTask::getPoint_code2, point_code)
.or()
.eq(SchBaseTask::getPoint_code3, point_code)
.or()
.eq(SchBaseTask::getPoint_code4, point_code)
)
.lt(SchBaseTask::getTask_status, "07")
.eq(SchBaseTask::getIs_delete, "0")
) != null;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create() throws BadRequestException {
}
}

View File

@@ -39,6 +39,7 @@ public class TaskUtils {
taskObj.setCreate_name(SecurityUtils.getCurrentNickName());
taskObj.setCreate_time(DateUtil.now());
}
public static void setCreateByAcsOrPda(SchBaseTask taskObj, JSONObject param) {
// 如果是人工创建,会带个用户过来
if (ObjectUtil.isNotEmpty(param.getString("user_id"))) {