add:增加分切前的5个工序任务
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
/**
|
||||
* 任务状态
|
||||
|
||||
@@ -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, "任务状态反馈成功!");
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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> {
|
||||
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ public class PdmBiSlittingproductionplan extends Model<PdmBiSlittingproductionpl
|
||||
* 分切计划标识
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long workorder_id;
|
||||
private String workorder_id;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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.*;
|
||||
|
||||
|
||||
/**
|
||||
@@ -170,6 +176,50 @@ public class PdmBiSlittingproductionplanServiceImpl extends ServiceImpl<PdmBiSli
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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.*;
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -155,7 +155,7 @@ public class StIvtCoolpointivt extends Model<StIvtCoolpointivt> {
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
private Long update_optid;
|
||||
private String update_optid;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -149,7 +149,7 @@ public class StIvtHotpointivt extends Model<StIvtHotpointivt> {
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
private Long update_optid;
|
||||
private String update_optid;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,7 +25,7 @@ public class StIvtCoolregionioParam extends BaseQuery<StIvtCoolregionio> {
|
||||
/**
|
||||
* 出入单标识
|
||||
*/
|
||||
private Long iostorinv_id;
|
||||
private String iostorinv_id;
|
||||
/**
|
||||
* 单据编号
|
||||
*/
|
||||
|
||||
@@ -60,6 +60,14 @@ public interface IstIvtCoolregionioService extends IService<StIvtCoolregionio> {
|
||||
void deleteAll(Set<String> ids);
|
||||
|
||||
|
||||
/**
|
||||
* 物理删除
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
void delete(String id);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -59,6 +59,12 @@ public interface IstIvtHotregioniomstService extends IService<StIvtHotregionioms
|
||||
*/
|
||||
void deleteAll(Set<String> ids);
|
||||
|
||||
/**
|
||||
* 物理删除
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
void delete(String id);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取实体基础信息
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -144,4 +144,7 @@ public class SchBaseTask implements Serializable {
|
||||
@TableField(exist = false)
|
||||
private String dtl_type;
|
||||
|
||||
private String material_code;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -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,11 +57,41 @@ 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 acsTaskDto ACS任务
|
||||
*/
|
||||
@@ -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());
|
||||
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.setIs_send(isSend ? "1" : "0");
|
||||
task.setTask_status(StrUtil.isEmpty(task.getTask_status())
|
||||
? TaskStatus.START_AND_POINT.getCode() : task.getTask_status());
|
||||
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");
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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"))) {
|
||||
|
||||
Reference in New Issue
Block a user