add:外部系统、手持接口增加、任务修改
This commit is contained in:
@@ -0,0 +1,55 @@
|
|||||||
|
package org.nl.wms.ext.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaIgnore;
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.common.logging.annotation.Log;
|
||||||
|
import org.nl.wms.ext.service.AcsToWmsService;
|
||||||
|
import org.nl.wms.ext.service.IotToWmsService;
|
||||||
|
import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
|
||||||
|
import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.ResponseEntity;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author sxp
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@Api(tags = "iot请求lms")
|
||||||
|
@RequestMapping("/api/wms")
|
||||||
|
@Slf4j
|
||||||
|
@SaIgnore
|
||||||
|
public class IotToWmsController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IotToWmsService iotToWmsService;
|
||||||
|
|
||||||
|
@PostMapping("/task")
|
||||||
|
@Log("iot请求lms新增任务")
|
||||||
|
@ApiOperation("iot请求lms新增任务")
|
||||||
|
public ResponseEntity<Object> apply(@RequestBody JSONObject param) {
|
||||||
|
return new ResponseEntity<>(iotToWmsService.acsApply(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/parts")
|
||||||
|
@Log("叉车离开后数据接口")
|
||||||
|
@ApiOperation("叉车离开后数据接口")
|
||||||
|
public ResponseEntity<Object> parts(@RequestBody IotPartsReq iotPartsReq) {
|
||||||
|
return new ResponseEntity<>(iotToWmsService.parts(iotPartsReq), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/orders")
|
||||||
|
@Log("叉车离开后数据接口")
|
||||||
|
@ApiOperation("叉车离开后数据接口")
|
||||||
|
public ResponseEntity<Object> orders(@RequestBody IotOrdersReq iotOrdersReq) {
|
||||||
|
return new ResponseEntity<>(iotToWmsService.orders(iotOrdersReq), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package org.nl.wms.ext.service;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||||
|
import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
|
||||||
|
import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: sxp
|
||||||
|
* @Description: iot请求wms
|
||||||
|
*/
|
||||||
|
public interface IotToWmsService {
|
||||||
|
/** ACS请求接口 */
|
||||||
|
BaseResponse acsApply(JSONObject param);
|
||||||
|
|
||||||
|
BaseResponse parts(IotPartsReq iotPartsReq);
|
||||||
|
|
||||||
|
BaseResponse orders(IotOrdersReq iotOrdersReq);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package org.nl.wms.ext.service.dto.to.iot;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 叉车到位和离开
|
||||||
|
*
|
||||||
|
* @author sxp
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class AgvStateParam {
|
||||||
|
/*任务号*/
|
||||||
|
private String task_code;
|
||||||
|
/*1 (表示请求取货) 2 (表示取货完成) */
|
||||||
|
private String status;
|
||||||
|
/*设备号*/
|
||||||
|
private String device_code;
|
||||||
|
/*托盘号*/
|
||||||
|
private String vehicle_code;
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package org.nl.wms.ext.service.dto.to.iot;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author sxp
|
||||||
|
* @Description 叉车离开后发送数据接口请求参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class IotOrdersReq {
|
||||||
|
private String ID;
|
||||||
|
private String Jobname;
|
||||||
|
private String Salesorder;
|
||||||
|
private String Palletid;
|
||||||
|
private String ProductID;
|
||||||
|
private String Angle;
|
||||||
|
private String Thickness;
|
||||||
|
private String PositionX;
|
||||||
|
private String PositionY;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package org.nl.wms.ext.service.dto.to.iot;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author sxp
|
||||||
|
* @Description 叉车离开后发送数据接口请求参数
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class IotPartsReq {
|
||||||
|
private String ID;
|
||||||
|
private String Jobname;
|
||||||
|
private String PalletID;
|
||||||
|
private String Pallet_Split;
|
||||||
|
private String ProductID;
|
||||||
|
private String Currentqty;
|
||||||
|
private String SizeX;
|
||||||
|
private String SizeY;
|
||||||
|
private String Angle;
|
||||||
|
private String Thickness;
|
||||||
|
private String PositionX;
|
||||||
|
private String PositionY;
|
||||||
|
private String vehicle_code;
|
||||||
|
}
|
||||||
@@ -195,7 +195,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务阶段反馈最新点位
|
* 任务阶段反馈最新点位
|
||||||
* todo
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -215,12 +214,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
// 执行创建任务
|
// 执行创建任务
|
||||||
task.feedbackState(param, schBaseTask, result);
|
task.feedbackState(param, schBaseTask, result);
|
||||||
taskService.update(schBaseTask);
|
taskService.update(schBaseTask);
|
||||||
Map<String, String> map = new HashMap<>();
|
|
||||||
map.put("start_point", schBaseTask.getPoint_code1());
|
|
||||||
map.put("next_point", schBaseTask.getPoint_code2());
|
|
||||||
map.put("start_height", schBaseTask.getPoint_code1_height());
|
|
||||||
map.put("next_height", schBaseTask.getPoint_code2_height());
|
|
||||||
result.setParameters(map);
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
String message = e.getMessage();
|
String message = e.getMessage();
|
||||||
log.error("ACS请求LMS出现错误: {}{}", e.getMessage(), e);
|
log.error("ACS请求LMS出现错误: {}{}", e.getMessage(), e);
|
||||||
|
|||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package org.nl.wms.ext.service.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.wms.ext.service.AcsToWmsService;
|
||||||
|
import org.nl.wms.ext.service.IotToWmsService;
|
||||||
|
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||||
|
import org.nl.wms.ext.service.dto.to.iot.IotOrdersReq;
|
||||||
|
import org.nl.wms.ext.service.dto.to.iot.IotPartsReq;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.context.annotation.Lazy;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
@Lazy
|
||||||
|
public class IotToWmsServiceImpl implements IotToWmsService {
|
||||||
|
@Autowired
|
||||||
|
private AcsToWmsService acsToWmsService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BaseResponse acsApply(JSONObject param) {
|
||||||
|
return acsToWmsService.acsApply(param);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BaseResponse parts(IotPartsReq iotPartsReq) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BaseResponse orders(IotOrdersReq iotOrdersReq) {
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -71,4 +71,52 @@ public class PdaController {
|
|||||||
return new ResponseEntity<>(pdaService.zpjb(param), HttpStatus.OK);
|
return new ResponseEntity<>(pdaService.zpjb(param), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/yclrk")
|
||||||
|
@Log("待折弯件出库")
|
||||||
|
@ApiOperation("待折弯件出库")
|
||||||
|
public ResponseEntity<Object> dzwck(@RequestBody JSONObject param){
|
||||||
|
return new ResponseEntity<>(pdaService.dzwck(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/zwjk")
|
||||||
|
@Log("折弯空载具呼叫")
|
||||||
|
@ApiOperation("折弯空载具呼叫")
|
||||||
|
public ResponseEntity<Object> zwjk(@RequestBody JSONObject param){
|
||||||
|
return new ResponseEntity<>(pdaService.zwjk(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/zwzz")
|
||||||
|
@Log("折弯件(成品)周转")
|
||||||
|
@ApiOperation("折弯件(成品)周转")
|
||||||
|
public ResponseEntity<Object> zwzz(@RequestBody JSONObject param){
|
||||||
|
return new ResponseEntity<>(pdaService.zwzz(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/lkzy")
|
||||||
|
@Log("成叠笼框转运")
|
||||||
|
@ApiOperation("成叠笼框转运")
|
||||||
|
public ResponseEntity<Object> lkzy(@RequestBody JSONObject param){
|
||||||
|
return new ResponseEntity<>(pdaService.lkzy(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/qtjgsl")
|
||||||
|
@Log("其它加工送料")
|
||||||
|
@ApiOperation("其它加工送料")
|
||||||
|
public ResponseEntity<Object> qtjgsl(@RequestBody JSONObject param){
|
||||||
|
return new ResponseEntity<>(pdaService.qtjgsl(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/qgxl")
|
||||||
|
@Log("激光切割下料")
|
||||||
|
@ApiOperation("激光切割下料")
|
||||||
|
public ResponseEntity<Object> qgxl(@RequestBody JSONObject param){
|
||||||
|
return new ResponseEntity<>(pdaService.qgxl(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/getVehicleType")
|
||||||
|
@Log("获取载具类型")
|
||||||
|
@ApiOperation("获取载具类型")
|
||||||
|
public ResponseEntity<Object> getVehicleType(){
|
||||||
|
return new ResponseEntity<>(pdaService.getVehicleType(), HttpStatus.OK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
package org.nl.wms.pda.service;
|
package org.nl.wms.pda.service;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import org.nl.wms.pda.service.dao.vo.DropdownListVo;
|
||||||
import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
|
import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: lyd
|
* @Author: lyd
|
||||||
* @Description:
|
* @Description:
|
||||||
@@ -19,4 +22,17 @@ public interface PdaService {
|
|||||||
|
|
||||||
PdaResponseVo zpjb(JSONObject param);
|
PdaResponseVo zpjb(JSONObject param);
|
||||||
|
|
||||||
|
PdaResponseVo dzwck(JSONObject param);
|
||||||
|
|
||||||
|
PdaResponseVo zwjk(JSONObject param);
|
||||||
|
|
||||||
|
PdaResponseVo zwzz(JSONObject param);
|
||||||
|
|
||||||
|
PdaResponseVo lkzy(JSONObject param);
|
||||||
|
|
||||||
|
PdaResponseVo qtjgsl(JSONObject param);
|
||||||
|
|
||||||
|
PdaResponseVo qgxl(JSONObject param);
|
||||||
|
|
||||||
|
List<DropdownListVo> getVehicleType();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.nl.wms.pda.service.dao.mapper;
|
package org.nl.wms.pda.service.dao.mapper;
|
||||||
|
|
||||||
import org.nl.wms.pda.service.dao.dto.CommonQueryDto;
|
import org.nl.wms.pda.service.dao.dto.CommonQueryDto;
|
||||||
|
import org.nl.wms.pda.service.dao.vo.DropdownListVo;
|
||||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -12,4 +13,5 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public interface PdaMapper {
|
public interface PdaMapper {
|
||||||
|
|
||||||
|
List<DropdownListVo> getDictByCode(String vehicleType);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,4 +2,10 @@
|
|||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="org.nl.wms.pda.service.dao.mapper.PdaMapper">
|
<mapper namespace="org.nl.wms.pda.service.dao.mapper.PdaMapper">
|
||||||
|
|
||||||
|
<select id="getDictByCode" resultType="org.nl.wms.pda.service.dao.vo.DropdownListVo">
|
||||||
|
SELECT `value`,
|
||||||
|
label AS text
|
||||||
|
FROM `sys_dict`
|
||||||
|
WHERE `code` = #{code}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.nl.wms.pda.service.impl;
|
package org.nl.wms.pda.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
@@ -11,6 +12,7 @@ import org.nl.wms.database.material.service.IMdBaseMaterialService;
|
|||||||
import org.nl.wms.ext.service.AcsToWmsService;
|
import org.nl.wms.ext.service.AcsToWmsService;
|
||||||
import org.nl.wms.pda.service.PdaService;
|
import org.nl.wms.pda.service.PdaService;
|
||||||
import org.nl.wms.pda.service.dao.mapper.PdaMapper;
|
import org.nl.wms.pda.service.dao.mapper.PdaMapper;
|
||||||
|
import org.nl.wms.pda.service.dao.vo.DropdownListVo;
|
||||||
import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
|
import org.nl.wms.pda.service.dao.vo.PdaResponseVo;
|
||||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||||
@@ -135,4 +137,60 @@ public class PdaServiceImpl implements PdaService {
|
|||||||
}
|
}
|
||||||
return PdaResponseVo.pdaResultOk("组盘解绑成功");
|
return PdaResponseVo.pdaResultOk("组盘解绑成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PdaResponseVo dzwck(JSONObject param) {
|
||||||
|
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
|
param.put("taskType", "ZWSLTask");
|
||||||
|
// param.put("start_device_code",param.getString("start_device_code"));
|
||||||
|
acsToWmsService.acsApply(param);
|
||||||
|
return PdaResponseVo.pdaResultOk("待折弯件出库成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PdaResponseVo zwjk(JSONObject param) {
|
||||||
|
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
|
param.put("taskType", "ZWJKTask");
|
||||||
|
// param.put("vehicleCode", param.getString("vehicleCode"));
|
||||||
|
// param.put("next_device_code",param.getString("next_device_code"));
|
||||||
|
acsToWmsService.acsApply(param);
|
||||||
|
return PdaResponseVo.pdaResultOk("呼叫空载具成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PdaResponseVo zwzz(JSONObject param) {
|
||||||
|
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
|
param.put("taskType", "ZWXLTask");
|
||||||
|
acsToWmsService.acsApply(param);
|
||||||
|
return PdaResponseVo.pdaResultOk("成品周转任务下发成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PdaResponseVo lkzy(JSONObject param) {
|
||||||
|
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
|
param.put("taskType", "LKZYTask");
|
||||||
|
acsToWmsService.acsApply(param);
|
||||||
|
return PdaResponseVo.pdaResultOk("成叠笼框转运任务下发成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PdaResponseVo qtjgsl(JSONObject param) {
|
||||||
|
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
|
param.put("taskType", "QTSLTask");
|
||||||
|
acsToWmsService.acsApply(param);
|
||||||
|
return PdaResponseVo.pdaResultOk("其它加工送料任务下发成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PdaResponseVo qgxl(JSONObject param) {
|
||||||
|
param.put("taskCode", IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
|
param.put("taskType", "QGXLTask");
|
||||||
|
acsToWmsService.acsApply(param);
|
||||||
|
return PdaResponseVo.pdaResultOk("激光切割下料任务下发成功");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DropdownListVo> getVehicleType() {
|
||||||
|
return pdaMapper.getDictByCode("vehicle_type");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks;
|
package org.nl.wms.sch.task_manage.task.tasks.cy;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
@@ -29,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -96,8 +97,9 @@ public class CYJKTask extends AbstractTask {
|
|||||||
|
|
||||||
//查找空托盘
|
//查找空托盘
|
||||||
private SchBasePoint findStartPoint(String startRegionStr) {
|
private SchBasePoint findStartPoint(String startRegionStr) {
|
||||||
|
String[] reginList = startRegionStr.split(",");
|
||||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||||
lam.in(SchBasePoint::getRegion_code, startRegionStr)
|
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||||
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_VEHICLE.getCode())
|
||||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||||
.or()
|
.or()
|
||||||
@@ -1,18 +1,19 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks;
|
package org.nl.wms.sch.task_manage.task.tasks.cy;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.hutool.http.HttpRequest;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import freemarker.template.utility.StringUtil;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
import org.nl.wms.ext.service.AcsToWmsService;
|
import org.nl.config.SpringContextHolder;
|
||||||
|
import org.nl.system.service.param.impl.SysParamServiceImpl;
|
||||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||||
|
import org.nl.wms.ext.service.dto.to.iot.AgvStateParam;
|
||||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
|
||||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||||
@@ -27,14 +28,12 @@ import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
|||||||
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
|
||||||
import org.nl.wms.util.PointUtils;
|
import org.nl.wms.util.PointUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -94,7 +93,7 @@ public class CYXLTask extends AbstractTask {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private SchBasePoint findNextPoint(String nextReginStr) {
|
private SchBasePoint findNextPoint(String nextReginStr) {
|
||||||
//todo 区域优先级
|
//todo 区域优先级,暂时按照创建任务配置时,区域选择顺序
|
||||||
String[] reginList = nextReginStr.split(",");
|
String[] reginList = nextReginStr.split(",");
|
||||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||||
@@ -161,7 +160,7 @@ public class CYXLTask extends AbstractTask {
|
|||||||
endPointObj.setVehicle_qty(1);
|
endPointObj.setVehicle_qty(1);
|
||||||
pointService.update(endPointObj);
|
pointService.update(endPointObj);
|
||||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||||
|
//todo 涉及一对多、设置物料类型为待分拣冲压件、载具类型
|
||||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
groupEntity.setCreate_id("2");
|
groupEntity.setCreate_id("2");
|
||||||
@@ -186,6 +185,7 @@ public class CYXLTask extends AbstractTask {
|
|||||||
groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||||
groupEntity.setInstorage_time(DateUtil.now());
|
groupEntity.setInstorage_time(DateUtil.now());
|
||||||
groupEntity.setTask_code(taskObj.getTask_code());
|
groupEntity.setTask_code(taskObj.getTask_code());
|
||||||
|
groupEntity.setMove_way(startPoint);
|
||||||
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||||
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||||
groupEntity.setIs_delete(false);
|
groupEntity.setIs_delete(false);
|
||||||
@@ -195,11 +195,6 @@ public class CYXLTask extends AbstractTask {
|
|||||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
taskObj.setGroup_id(groupEntity.getGroup_id());
|
taskObj.setGroup_id(groupEntity.getGroup_id());
|
||||||
taskObj.setRemark("任务完成");
|
taskObj.setRemark("任务完成");
|
||||||
try {
|
|
||||||
//todo 入库成功后上报mes
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("原材料入库上报MES失败{}", e.getMessage(), e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||||
// 终点解锁
|
// 终点解锁
|
||||||
@@ -226,6 +221,51 @@ public class CYXLTask extends AbstractTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
protected void feedbackTaskState(JSONObject param, SchBaseTask schBaseTask, BaseResponse result) {
|
||||||
//该场景无需重算等待点
|
// 反馈上位系统 反馈上位系统成功后,返回200给acs
|
||||||
|
AgvStateParam agvStateParam = new AgvStateParam();
|
||||||
|
agvStateParam.setTask_code(schBaseTask.getTask_code());
|
||||||
|
agvStateParam.setDevice_code(schBaseTask.getPoint_code1());
|
||||||
|
agvStateParam.setVehicle_code(schBaseTask.getVehicle_code());
|
||||||
|
String phase = param.getString("phase");
|
||||||
|
String iotUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("iot_url").getValue();
|
||||||
|
if ("3".equals(phase)) {
|
||||||
|
agvStateParam.setStatus("1");
|
||||||
|
//叉车到位 请求取货
|
||||||
|
String url = iotUrl + "iot/agvarrive";
|
||||||
|
applyIot(url, agvStateParam, result);
|
||||||
|
}
|
||||||
|
if ("5".equals(phase)) {
|
||||||
|
agvStateParam.setStatus("2");
|
||||||
|
//取货完成,请求离开
|
||||||
|
String url = iotUrl + "iot/agvfinish";
|
||||||
|
applyIot(url, agvStateParam, result);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void applyIot(String url, AgvStateParam agvStateParam, BaseResponse result) {
|
||||||
|
String jsonParam = JSON.toJSONString(agvStateParam);
|
||||||
|
log.info("请求iot参数为:{}", jsonParam);
|
||||||
|
try {
|
||||||
|
String resultMsg = HttpRequest.post(url)
|
||||||
|
.body(jsonParam)
|
||||||
|
.execute().body();
|
||||||
|
JSONObject res = JSONObject.parseObject(resultMsg);
|
||||||
|
if ("200".equals(res.getString("code"))) {
|
||||||
|
log.info("请求iot成功,返回结果为:{}", res);
|
||||||
|
result.setCode(HttpStatus.OK.value());
|
||||||
|
result.setMessage("请求iot成功!");
|
||||||
|
} else {
|
||||||
|
log.error("请求iot失败:{}", res);
|
||||||
|
result.setCode(HttpStatus.BAD_REQUEST.value());
|
||||||
|
result.setMessage("请求iot失败!");
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
String msg = e.getMessage();
|
||||||
|
//请求iot失败
|
||||||
|
log.error("请求iot失败:{}", msg);
|
||||||
|
result.setCode(HttpStatus.BAD_REQUEST.value());
|
||||||
|
result.setMessage("请求iot失败!");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks;
|
package org.nl.wms.sch.task_manage.task.tasks.fj;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
@@ -20,14 +20,17 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
|||||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
||||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||||
|
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
||||||
import org.nl.wms.util.PointUtils;
|
import org.nl.wms.util.PointUtils;
|
||||||
|
import org.nl.wms.util.TaskUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -74,7 +77,7 @@ public class FJSLTask extends AbstractTask {
|
|||||||
task.setRemark("未找到所需点位!");
|
task.setRemark("未找到所需点位!");
|
||||||
taskService.update(task);
|
taskService.update(task);
|
||||||
// 消息通知
|
// 消息通知
|
||||||
log.info("冲压机叫空盘未找到所需点位!");
|
log.info("分拣上料未找到所需点位!");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// 设置起点并修改创建成功状态
|
// 设置起点并修改创建成功状态
|
||||||
@@ -95,9 +98,11 @@ public class FJSLTask extends AbstractTask {
|
|||||||
|
|
||||||
//查找待分拣物料
|
//查找待分拣物料
|
||||||
private SchBasePoint findStartPoint(String startRegionStr) {
|
private SchBasePoint findStartPoint(String startRegionStr) {
|
||||||
//从待分拣货架查找
|
//从待分拣货架查找 物料类型是待分拣物料,物料类型字段尚未确定
|
||||||
|
String[] reginList = startRegionStr.split(",");
|
||||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||||
lam.in(SchBasePoint::getRegion_code, startRegionStr)
|
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||||
|
.eq(SchBasePoint::getPoint_status, PointStatusEnum.FULL_POINT.getCode())
|
||||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||||
.or()
|
.or()
|
||||||
.eq(SchBasePoint::getIng_task_code, ""))
|
.eq(SchBasePoint::getIng_task_code, ""))
|
||||||
@@ -108,7 +113,7 @@ public class FJSLTask extends AbstractTask {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* todo 任务完成设置完成时间为开始固化时间
|
*
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
// @Transactional(rollbackFor = Exception.class)
|
// @Transactional(rollbackFor = Exception.class)
|
||||||
@@ -144,6 +149,17 @@ public class FJSLTask extends AbstractTask {
|
|||||||
startPointObj.setIng_task_code("");
|
startPointObj.setIng_task_code("");
|
||||||
startPointObj.setUpdate_time(DateUtil.now());
|
startPointObj.setUpdate_time(DateUtil.now());
|
||||||
pointService.updateById(startPointObj);
|
pointService.updateById(startPointObj);
|
||||||
|
//todo 分拣上料完成后 组盘信息解绑
|
||||||
|
SchBaseVehiclematerialgroup vehicleMaterialGroupObj = vehiclematerialgroupService.getById(taskObj.getGroup_id());
|
||||||
|
vehicleMaterialGroupObj.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
|
||||||
|
vehicleMaterialGroupObj.setPoint_code(endPointObj.getPoint_code());
|
||||||
|
vehicleMaterialGroupObj.setPoint_name(endPointObj.getPoint_name());
|
||||||
|
vehicleMaterialGroupObj.setTask_code(taskObj.getTask_code());
|
||||||
|
vehicleMaterialGroupObj.setMove_way(vehicleMaterialGroupObj.getMove_way() + " -> " + endPointObj.getPoint_code());
|
||||||
|
vehicleMaterialGroupObj.setUpdate_id(GeneralDefinition.ACS_ID);
|
||||||
|
vehicleMaterialGroupObj.setUpdate_name(GeneralDefinition.ACS_NAME);
|
||||||
|
vehicleMaterialGroupObj.setUpdate_time(DateUtil.now());
|
||||||
|
vehiclematerialgroupService.updateById(vehicleMaterialGroupObj);
|
||||||
// 任务完成
|
// 任务完成
|
||||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
taskObj.setRemark("任务完成");
|
taskObj.setRemark("任务完成");
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks;
|
package org.nl.wms.sch.task_manage.task.tasks.fj;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
@@ -68,7 +68,7 @@ public class FJXLTask extends AbstractTask {
|
|||||||
if (ObjectUtil.isEmpty(point)) {
|
if (ObjectUtil.isEmpty(point)) {
|
||||||
task.setRemark("未找到所需点位!");
|
task.setRemark("未找到所需点位!");
|
||||||
taskService.update(task);
|
taskService.update(task);
|
||||||
log.info("冲压下料入库未找到当前符合条件的点位!");
|
log.info("分拣下料未找到当前符合条件的点位!");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
task.setPoint_code2(point.getPoint_code());
|
task.setPoint_code2(point.getPoint_code());
|
||||||
@@ -88,7 +88,6 @@ public class FJXLTask extends AbstractTask {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private SchBasePoint findNextPoint(String nextReginStr) {
|
private SchBasePoint findNextPoint(String nextReginStr) {
|
||||||
|
|
||||||
String[] reginList = nextReginStr.split(",");
|
String[] reginList = nextReginStr.split(",");
|
||||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||||
@@ -100,13 +99,7 @@ public class FJXLTask extends AbstractTask {
|
|||||||
.orderByAsc(SchBasePoint::getIn_order_seq)
|
.orderByAsc(SchBasePoint::getIn_order_seq)
|
||||||
.orderByAsc(SchBasePoint::getPoint_code);
|
.orderByAsc(SchBasePoint::getPoint_code);
|
||||||
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||||
for (SchBasePoint schBasePoint : schBasePoints) {
|
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||||
if (StringUtils.isEmpty(schBasePoint.getIng_task_code()) && schBasePoint.getVehicle_qty() == 0) {
|
|
||||||
log.info("冲压下料入库找到当前符合条件的点位{}", schBasePoint.getPoint_code());
|
|
||||||
return schBasePoint;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -154,8 +147,8 @@ public class FJXLTask extends AbstractTask {
|
|||||||
endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ",");
|
endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ",");
|
||||||
endPointObj.setVehicle_qty(1);
|
endPointObj.setVehicle_qty(1);
|
||||||
pointService.update(endPointObj);
|
pointService.update(endPointObj);
|
||||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
// 要把数据存到组盘表
|
||||||
//todo 组盘表需要关联外部mes晶棒数据,一对多
|
//todo 组盘一对一还是一对多、设置物料类型为待折弯冲压件、载具类型
|
||||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
groupEntity.setCreate_id("2");
|
groupEntity.setCreate_id("2");
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks;
|
package org.nl.wms.sch.task_manage.task.tasks.lk;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
@@ -6,11 +6,10 @@ import cn.hutool.core.util.ObjectUtil;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
import org.nl.wms.ext.service.AcsToWmsService;
|
|
||||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||||
import org.nl.wms.pdm.service.dao.PdmBdWorkorder;
|
|
||||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||||
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||||
@@ -22,28 +21,28 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
|||||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||||
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||||
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||||
|
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
|
||||||
import org.nl.wms.util.PointUtils;
|
import org.nl.wms.util.PointUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: psh
|
* @Author: sxp
|
||||||
* @Description: 空架入库
|
* @Description: 成叠笼框转运
|
||||||
* @Date: 2024/1/24
|
* @Date: 2024/3/11
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
@TaskType("KJRKTask")
|
@TaskType("LKZYTask")
|
||||||
@Lazy
|
@Lazy
|
||||||
public class KJRKTask extends AbstractTask {
|
public class LKZYTask extends AbstractTask {
|
||||||
private static String TASK_CONFIG_CODE = "KJRKTask";
|
private static String TASK_CONFIG_CODE = "LKZYTask";
|
||||||
/**
|
/**
|
||||||
* 入口
|
* 入口
|
||||||
*/
|
*/
|
||||||
@@ -58,46 +57,27 @@ public class KJRKTask extends AbstractTask {
|
|||||||
private IPdmBdWorkorderService workorderService;
|
private IPdmBdWorkorderService workorderService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||||
@Autowired
|
|
||||||
private PointMapper pointMapper;
|
|
||||||
@Autowired
|
|
||||||
private AcsToWmsService acsToWmsService;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
// @Transactional(rollbackFor = Exception.class)
|
|
||||||
protected void create() throws BadRequestException {
|
protected void create() throws BadRequestException {
|
||||||
// 获取任务
|
|
||||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||||
// 配置信息
|
|
||||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||||
for (SchBaseTask task : tasks) {
|
for (SchBaseTask task : tasks) {
|
||||||
// 找终点
|
SchBasePoint point = findNextPoint(taskConfig.getNext_region_str());
|
||||||
SchBasePoint startPoint = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
|
||||||
.eq(SchBasePoint::getPoint_code, task.getPoint_code1()));
|
|
||||||
String extGroupData = task.getExt_group_data();
|
|
||||||
JSONObject jsonObject = JSONObject.parseObject(extGroupData);
|
|
||||||
// String materialType = jsonObject.getString("material_type");
|
|
||||||
SchBasePoint point = findNextPoint();
|
|
||||||
if (ObjectUtil.isEmpty(point)) {
|
if (ObjectUtil.isEmpty(point)) {
|
||||||
task.setRemark("未找到所需点位!");
|
task.setRemark("未找到所需点位!");
|
||||||
taskService.update(task);
|
taskService.update(task);
|
||||||
// 消息通知
|
log.info("成叠笼框暂存点未找到当前符合条件的点位!");
|
||||||
log.info("原材料入库未找到当前符合条件的点位!");
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// 设置终点并修改创建成功状态
|
|
||||||
task.setPoint_code2(point.getPoint_code());
|
task.setPoint_code2(point.getPoint_code());
|
||||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||||
task.setRemark("");
|
task.setRemark("");
|
||||||
taskService.update(task);
|
taskService.update(task);
|
||||||
|
|
||||||
//发起任务时先把点位占用,防止发起重复任务
|
//发起任务时先把点位占用,防止发起重复任务
|
||||||
point.setIng_task_code(task.getTask_code());
|
point.setIng_task_code(task.getTask_code());
|
||||||
// point.setVehicle_type(materialType);
|
|
||||||
pointService.update(point);
|
pointService.update(point);
|
||||||
|
|
||||||
//下发
|
|
||||||
this.renotifyAcs(task);
|
this.renotifyAcs(task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -107,17 +87,20 @@ public class KJRKTask extends AbstractTask {
|
|||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private SchBasePoint findNextPoint() {
|
private SchBasePoint findNextPoint(String nextReginStr) {
|
||||||
String regionCode = "YL";
|
|
||||||
List<SchBasePoint> schBasePointList = pointMapper.findPointByRegion(regionCode, "2");
|
String[] reginList = nextReginStr.split(",");
|
||||||
for (SchBasePoint schBasePoint : schBasePointList) {
|
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||||
if ("2".equals(schBasePoint.getPoint_status())
|
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||||
&& schBasePoint.getVehicle_qty() ==0) {
|
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
|
||||||
log.info("原材料入库找到当前符合条件的点位{}", schBasePoint.getPoint_code());
|
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||||
return schBasePoint;
|
.or()
|
||||||
}
|
.eq(SchBasePoint::getIng_task_code, ""))
|
||||||
}
|
.eq(SchBasePoint::getIs_used, true)
|
||||||
return null;
|
.orderByAsc(SchBasePoint::getIn_order_seq)
|
||||||
|
.orderByAsc(SchBasePoint::getPoint_code);
|
||||||
|
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||||
|
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -139,15 +122,15 @@ public class KJRKTask extends AbstractTask {
|
|||||||
String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code())
|
String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code())
|
||||||
? taskObj.getVehicle_code()
|
? taskObj.getVehicle_code()
|
||||||
: IdUtil.getSnowflake(1, 1).nextIdStr();
|
: IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||||
PdmBdWorkorder workorderCode = null;
|
// PdmBdWorkorder workorderCode = null;
|
||||||
if (extGroupData != null) {
|
// if (extGroupData != null) {
|
||||||
workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
// workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
||||||
? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
// ? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||||
.eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
// .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
||||||
: null;
|
// : null;
|
||||||
}
|
// }
|
||||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||||
String endPoint = ObjectUtil.isNotEmpty(taskObj.getPoint_code2())?taskObj.getPoint_code2().substring(0,taskObj.getPoint_code2().length()-2):"0"; // 获取终点
|
String endPoint = ObjectUtil.isNotEmpty(taskObj.getPoint_code2()) ? taskObj.getPoint_code2().substring(0, taskObj.getPoint_code2().length() - 2) : "0"; // 获取终点
|
||||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||||
// 根据传来的类型去对任务进行操作
|
// 根据传来的类型去对任务进行操作
|
||||||
@@ -165,25 +148,25 @@ public class KJRKTask extends AbstractTask {
|
|||||||
endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ",");
|
endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ",");
|
||||||
endPointObj.setVehicle_qty(1);
|
endPointObj.setVehicle_qty(1);
|
||||||
pointService.update(endPointObj);
|
pointService.update(endPointObj);
|
||||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
// 要把数据存到组盘表
|
||||||
//todo 组盘表需要关联外部mes晶棒数据,一对多
|
//todo 组盘信息
|
||||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
groupEntity.setCreate_id("2");
|
groupEntity.setCreate_id("2");
|
||||||
groupEntity.setCreate_name("ACS");
|
groupEntity.setCreate_name("ACS");
|
||||||
groupEntity.setCreate_time(DateUtil.now());
|
groupEntity.setCreate_time(DateUtil.now());
|
||||||
groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
|
// groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
|
||||||
? workorderCode.getMaterial_id()
|
// ? workorderCode.getMaterial_id()
|
||||||
: "");
|
// : "");
|
||||||
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
|
// groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
|
||||||
? workorderCode.getStanding_time()
|
// ? workorderCode.getStanding_time()
|
||||||
: 0);
|
// : 0);
|
||||||
groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
// groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
||||||
? extGroupData.getBigDecimal("material_qty")
|
// ? extGroupData.getBigDecimal("material_qty")
|
||||||
: BigDecimal.valueOf(0));
|
// : BigDecimal.valueOf(0));
|
||||||
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
|
// groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
|
||||||
? workorderCode.getWorkorder_code()
|
// ? workorderCode.getWorkorder_code()
|
||||||
: "");
|
// : "");
|
||||||
groupEntity.setVehicle_code(vehicle_code);
|
groupEntity.setVehicle_code(vehicle_code);
|
||||||
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||||
groupEntity.setPoint_code(startPoint);
|
groupEntity.setPoint_code(startPoint);
|
||||||
@@ -202,8 +185,8 @@ public class KJRKTask extends AbstractTask {
|
|||||||
taskObj.setRemark("任务完成");
|
taskObj.setRemark("任务完成");
|
||||||
try {
|
try {
|
||||||
//todo 入库成功后上报mes
|
//todo 入库成功后上报mes
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
log.error("原材料入库上报MES失败{}",e.getMessage(),e);
|
log.error("原材料入库上报MES失败{}", e.getMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks;
|
package org.nl.wms.sch.task_manage.task.tasks.qg;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks;
|
package org.nl.wms.sch.task_manage.task.tasks.qg;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
@@ -1,15 +1,17 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks;
|
package org.nl.wms.sch.task_manage.task.tasks.qt;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.IdUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
import org.nl.wms.ext.service.WmsToAcsService;
|
|
||||||
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
import org.nl.wms.ext.service.dto.to.BaseResponse;
|
||||||
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
import org.nl.wms.pdm.service.IPdmBdWorkorderService;
|
||||||
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
|
||||||
|
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
|
||||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||||
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
import org.nl.wms.sch.task.service.ISchBaseTaskService;
|
||||||
@@ -17,27 +19,30 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
|
|||||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||||
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
|
||||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||||
import org.nl.wms.sch.task_manage.GeneralDefinition;
|
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
|
||||||
|
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
|
||||||
|
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
|
||||||
import org.nl.wms.sch.task_manage.task.TaskType;
|
import org.nl.wms.sch.task_manage.task.TaskType;
|
||||||
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
|
||||||
import org.nl.wms.sch.task_manage.task.tasks.mapper.PointMapper;
|
import org.nl.wms.util.PointUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author: sxp
|
* @Author: sxp
|
||||||
* @Description: 成叠笼框转运
|
* @Description: 其他加工送料
|
||||||
* @Date: 2023/1/24
|
* @Date: 2024/3/11
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
@TaskType("LKZYTask")
|
@TaskType("QTSLTask")
|
||||||
@Lazy
|
@Lazy
|
||||||
public class LKZYTask extends AbstractTask {
|
public class QTSLTask extends AbstractTask {
|
||||||
private static String TASK_CONFIG_CODE = "LKZYTask";
|
private static String TASK_CONFIG_CODE = "QTSLTask";
|
||||||
/**
|
/**
|
||||||
* 入口
|
* 入口
|
||||||
*/
|
*/
|
||||||
@@ -52,60 +57,52 @@ public class LKZYTask extends AbstractTask {
|
|||||||
private IPdmBdWorkorderService workorderService;
|
private IPdmBdWorkorderService workorderService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
|
||||||
@Autowired
|
|
||||||
private PointMapper pointMapper;
|
|
||||||
@Autowired
|
|
||||||
private WmsToAcsService wmsToAcsService;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
// @Transactional(rollbackFor = Exception.class)
|
|
||||||
protected void create() throws BadRequestException {
|
protected void create() throws BadRequestException {
|
||||||
// 获取任务
|
|
||||||
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
|
||||||
// 配置信息
|
|
||||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||||
for (SchBaseTask task : tasks) {
|
for (SchBaseTask task : tasks) {
|
||||||
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str());
|
SchBasePoint point = findNextPoint(taskConfig.getNext_region_str());
|
||||||
if (ObjectUtil.isEmpty(point)) {
|
if (ObjectUtil.isEmpty(point)) {
|
||||||
task.setRemark("未找到所需点位!");
|
task.setRemark("未找到所需点位!");
|
||||||
taskService.update(task);
|
taskService.update(task);
|
||||||
// 消息通知
|
log.info("成叠笼框暂存点未找到当前符合条件的点位!");
|
||||||
log.info("冲压机叫空盘未找到所需点位!");
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// 设置起点并修改创建成功状态
|
task.setPoint_code2(point.getPoint_code());
|
||||||
task.setPoint_code1(point.getPoint_code());
|
|
||||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||||
task.setRemark("");
|
task.setRemark("");
|
||||||
taskService.update(task);
|
taskService.update(task);
|
||||||
//发起任务时先把点位占用,防止发起重复任务
|
//发起任务时先把点位占用,防止发起重复任务
|
||||||
point.setIng_task_code(task.getTask_code());
|
point.setIng_task_code(task.getTask_code());
|
||||||
point.setUpdate_id(GeneralDefinition.ACS_ID);
|
|
||||||
point.setUpdate_name(GeneralDefinition.ACS_NAME);
|
|
||||||
point.setUpdate_time(DateUtil.now());
|
|
||||||
pointService.update(point);
|
pointService.update(point);
|
||||||
//下发
|
|
||||||
this.renotifyAcs(task);
|
this.renotifyAcs(task);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//查找待分拣物料
|
/**
|
||||||
private SchBasePoint findStartPoint(String startRegionStr) {
|
* 判断目标点位
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private SchBasePoint findNextPoint(String nextReginStr) {
|
||||||
|
//分配空库位
|
||||||
|
String[] reginList = nextReginStr.split(",");
|
||||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||||
lam.in(SchBasePoint::getRegion_code, startRegionStr)
|
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
.eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode())
|
||||||
|
.and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住
|
||||||
.or()
|
.or()
|
||||||
.eq(SchBasePoint::getIng_task_code, ""))
|
.eq(SchBasePoint::getIng_task_code, ""))
|
||||||
.eq(SchBasePoint::getIs_used, true);
|
.eq(SchBasePoint::getIs_used, true)
|
||||||
|
.orderByAsc(SchBasePoint::getIn_order_seq)
|
||||||
|
.orderByAsc(SchBasePoint::getPoint_code);
|
||||||
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||||
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* todo 任务完成设置完成时间为开始固化时间
|
|
||||||
*/
|
|
||||||
@Override
|
@Override
|
||||||
// @Transactional(rollbackFor = Exception.class)
|
// @Transactional(rollbackFor = Exception.class)
|
||||||
protected void updateStatus(String task_code, TaskStatus status) {
|
protected void updateStatus(String task_code, TaskStatus status) {
|
||||||
@@ -117,8 +114,23 @@ public class LKZYTask extends AbstractTask {
|
|||||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||||
throw new BadRequestException("该任务已取消!");
|
throw new BadRequestException("该任务已取消!");
|
||||||
}
|
}
|
||||||
|
// 获取参数
|
||||||
|
JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data())
|
||||||
|
? JSONObject.parseObject(taskObj.getExt_group_data())
|
||||||
|
: null;
|
||||||
|
// 载具编码:没有就创建一个
|
||||||
|
String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code())
|
||||||
|
? taskObj.getVehicle_code()
|
||||||
|
: IdUtil.getSnowflake(1, 1).nextIdStr();
|
||||||
|
// PdmBdWorkorder workorderCode = null;
|
||||||
|
// if (extGroupData != null) {
|
||||||
|
// workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code"))
|
||||||
|
// ? workorderService.getOne(new LambdaQueryWrapper<PdmBdWorkorder>()
|
||||||
|
// .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code")))
|
||||||
|
// : null;
|
||||||
|
// }
|
||||||
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
String startPoint = taskObj.getPoint_code1(); // 获取起点
|
||||||
String endPoint = taskObj.getPoint_code2(); // 获取终点
|
String endPoint = ObjectUtil.isNotEmpty(taskObj.getPoint_code2()) ? taskObj.getPoint_code2().substring(0, taskObj.getPoint_code2().length() - 2) : "0"; // 获取终点
|
||||||
SchBasePoint startPointObj = pointService.getById(startPoint);
|
SchBasePoint startPointObj = pointService.getById(startPoint);
|
||||||
SchBasePoint endPointObj = pointService.getById(endPoint);
|
SchBasePoint endPointObj = pointService.getById(endPoint);
|
||||||
// 根据传来的类型去对任务进行操作
|
// 根据传来的类型去对任务进行操作
|
||||||
@@ -127,34 +139,63 @@ public class LKZYTask extends AbstractTask {
|
|||||||
taskObj.setRemark("执行中");
|
taskObj.setRemark("执行中");
|
||||||
}
|
}
|
||||||
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
if (status.equals(TaskStatus.FINISHED)) { // 完成
|
||||||
|
// 起点清空
|
||||||
|
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
||||||
|
PointUtils.clearPoint(startPointObj);
|
||||||
|
}
|
||||||
// 终点解锁
|
// 终点解锁
|
||||||
endPointObj.setIng_task_code("");
|
endPointObj.setIng_task_code("");
|
||||||
endPointObj.setVehicle_code(taskObj.getVehicle_code());
|
endPointObj.setVehicle_code(ObjectUtil.isEmpty(endPointObj.getVehicle_code()) ? vehicle_code + "," : endPointObj.getVehicle_code() + vehicle_code + ",");
|
||||||
endPointObj.setVehicle_code2(taskObj.getVehicle_code2());
|
|
||||||
endPointObj.setVehicle_qty(1);
|
endPointObj.setVehicle_qty(1);
|
||||||
endPointObj.setUpdate_time(DateUtil.now());
|
|
||||||
pointService.update(endPointObj);
|
pointService.update(endPointObj);
|
||||||
// 起点清空
|
// 要把数据存到组盘表
|
||||||
startPointObj.setVehicle_code("");
|
//todo 组盘信息
|
||||||
startPointObj.setVehicle_code2("");
|
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||||
startPointObj.setIng_task_code("");
|
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
startPointObj.setUpdate_time(DateUtil.now());
|
groupEntity.setCreate_id("2");
|
||||||
pointService.updateById(startPointObj);
|
groupEntity.setCreate_name("ACS");
|
||||||
|
groupEntity.setCreate_time(DateUtil.now());
|
||||||
|
// groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode)
|
||||||
|
// ? workorderCode.getMaterial_id()
|
||||||
|
// : "");
|
||||||
|
// groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode)
|
||||||
|
// ? workorderCode.getStanding_time()
|
||||||
|
// : 0);
|
||||||
|
// groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData)
|
||||||
|
// ? extGroupData.getBigDecimal("material_qty")
|
||||||
|
// : BigDecimal.valueOf(0));
|
||||||
|
// groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode)
|
||||||
|
// ? workorderCode.getWorkorder_code()
|
||||||
|
// : "");
|
||||||
|
groupEntity.setVehicle_code(vehicle_code);
|
||||||
|
groupEntity.setVehicle_type(taskObj.getVehicle_type());
|
||||||
|
groupEntity.setPoint_code(startPoint);
|
||||||
|
groupEntity.setPoint_name(startPointObj.getPoint_name());
|
||||||
|
groupEntity.setPcsn(DateUtil.format(DateUtil.date(), "yyyyMMdd"));
|
||||||
|
groupEntity.setInstorage_time(DateUtil.now());
|
||||||
|
groupEntity.setTask_code(taskObj.getTask_code());
|
||||||
|
groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定
|
||||||
|
groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。
|
||||||
|
groupEntity.setIs_delete(false);
|
||||||
|
groupEntity.setMove_way(startPoint);
|
||||||
|
vehiclematerialgroupService.save(groupEntity);
|
||||||
// 任务完成
|
// 任务完成
|
||||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
|
taskObj.setGroup_id(groupEntity.getGroup_id());
|
||||||
taskObj.setRemark("任务完成");
|
taskObj.setRemark("任务完成");
|
||||||
|
try {
|
||||||
|
//todo 入库成功后上报mes
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("原材料入库上报MES失败{}", e.getMessage(), e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
if (status.equals(TaskStatus.CANCELED)) { // 取消
|
||||||
// 终点解锁
|
// 终点解锁
|
||||||
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
if (ObjectUtil.isNotEmpty(endPointObj)) {
|
||||||
endPointObj.setIng_task_code("");
|
endPointObj.setIng_task_code("");
|
||||||
|
//任务取消把原先占用的位置释放
|
||||||
pointService.update(endPointObj);
|
pointService.update(endPointObj);
|
||||||
}
|
}
|
||||||
// 起点解锁
|
|
||||||
if (ObjectUtil.isNotEmpty(startPointObj)) {
|
|
||||||
startPointObj.setIng_task_code("");
|
|
||||||
pointService.update(startPointObj);
|
|
||||||
}
|
|
||||||
taskObj.setRemark("任务取消");
|
taskObj.setRemark("任务取消");
|
||||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks;
|
package org.nl.wms.sch.task_manage.task.tasks.zw;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
@@ -74,7 +74,7 @@ public class ZWJKTask extends AbstractTask {
|
|||||||
if (ObjectUtil.isEmpty(point)) {
|
if (ObjectUtil.isEmpty(point)) {
|
||||||
task.setRemark("未找到所需点位!");
|
task.setRemark("未找到所需点位!");
|
||||||
taskService.update(task);
|
taskService.update(task);
|
||||||
log.info("冲压下料入库未找到当前符合条件的点位!");
|
log.info("折弯叫空未找到当前符合条件的点位!");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
task.setPoint_code2(point.getPoint_code());
|
task.setPoint_code2(point.getPoint_code());
|
||||||
@@ -94,7 +94,7 @@ public class ZWJKTask extends AbstractTask {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private SchBasePoint findNextPoint(String nextReginStr) {
|
private SchBasePoint findNextPoint(String nextReginStr) {
|
||||||
|
//todo 判断所需载具类型
|
||||||
String[] reginList = nextReginStr.split(",");
|
String[] reginList = nextReginStr.split(",");
|
||||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||||
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
lam.in(SchBasePoint::getRegion_code, Arrays.asList(reginList))
|
||||||
@@ -108,7 +108,7 @@ public class ZWJKTask extends AbstractTask {
|
|||||||
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
List<SchBasePoint> schBasePoints = pointService.list(lam);
|
||||||
for (SchBasePoint schBasePoint : schBasePoints) {
|
for (SchBasePoint schBasePoint : schBasePoints) {
|
||||||
if (StringUtils.isEmpty(schBasePoint.getIng_task_code()) && schBasePoint.getVehicle_qty() == 0) {
|
if (StringUtils.isEmpty(schBasePoint.getIng_task_code()) && schBasePoint.getVehicle_qty() == 0) {
|
||||||
log.info("冲压下料入库找到当前符合条件的点位{}", schBasePoint.getPoint_code());
|
log.info("折弯叫空找到当前符合条件的点位{}", schBasePoint.getPoint_code());
|
||||||
return schBasePoint;
|
return schBasePoint;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks;
|
package org.nl.wms.sch.task_manage.task.tasks.zw;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
@@ -25,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -64,11 +65,10 @@ public class ZWSLTask extends AbstractTask {
|
|||||||
// 配置信息
|
// 配置信息
|
||||||
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
|
||||||
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
|
||||||
//todo task根据请求参数指定终点
|
|
||||||
for (SchBaseTask task : tasks) {
|
for (SchBaseTask task : tasks) {
|
||||||
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str());
|
SchBasePoint point = findStartPoint(taskConfig.getStart_region_str());
|
||||||
if (ObjectUtil.isEmpty(point)) {
|
if (ObjectUtil.isEmpty(point)) {
|
||||||
task.setRemark("未找到所需点位!");
|
task.setRemark("折弯上料未找到所需点位!");
|
||||||
taskService.update(task);
|
taskService.update(task);
|
||||||
// 消息通知
|
// 消息通知
|
||||||
log.info("折弯上料未找到所需点位!");
|
log.info("折弯上料未找到所需点位!");
|
||||||
@@ -90,10 +90,12 @@ public class ZWSLTask extends AbstractTask {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//查找待分拣物料 todo
|
//todo 根据组盘信息去查找待折弯物料
|
||||||
private SchBasePoint findStartPoint(String startRegionStr) {
|
private SchBasePoint findStartPoint(String startRegionStr) {
|
||||||
|
String[] reginList = startRegionStr.split(",");
|
||||||
|
List<String> regions = Arrays.asList(reginList);
|
||||||
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
|
||||||
lam.in(SchBasePoint::getRegion_code, startRegionStr)
|
lam.in(SchBasePoint::getRegion_code, regions)
|
||||||
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
.and(la -> la.isNull(SchBasePoint::getIng_task_code)
|
||||||
.or()
|
.or()
|
||||||
.eq(SchBasePoint::getIng_task_code, ""))
|
.eq(SchBasePoint::getIng_task_code, ""))
|
||||||
@@ -104,7 +106,7 @@ public class ZWSLTask extends AbstractTask {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* todo 任务完成设置完成时间为开始固化时间
|
*
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
// @Transactional(rollbackFor = Exception.class)
|
// @Transactional(rollbackFor = Exception.class)
|
||||||
@@ -140,6 +142,7 @@ public class ZWSLTask extends AbstractTask {
|
|||||||
startPointObj.setIng_task_code("");
|
startPointObj.setIng_task_code("");
|
||||||
startPointObj.setUpdate_time(DateUtil.now());
|
startPointObj.setUpdate_time(DateUtil.now());
|
||||||
pointService.updateById(startPointObj);
|
pointService.updateById(startPointObj);
|
||||||
|
//todo 是否需要组盘信息解绑
|
||||||
// 任务完成
|
// 任务完成
|
||||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||||
taskObj.setRemark("任务完成");
|
taskObj.setRemark("任务完成");
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.nl.wms.sch.task_manage.task.tasks;
|
package org.nl.wms.sch.task_manage.task.tasks.zw;
|
||||||
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
@@ -155,7 +155,7 @@ public class ZWXLTask extends AbstractTask {
|
|||||||
endPointObj.setVehicle_qty(1);
|
endPointObj.setVehicle_qty(1);
|
||||||
pointService.update(endPointObj);
|
pointService.update(endPointObj);
|
||||||
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
// 要把数据存到组盘表 -> 改造公共方法,返回id
|
||||||
//todo 组盘表需要关联外部mes晶棒数据,一对多
|
//todo 组盘信息修改
|
||||||
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup();
|
||||||
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
groupEntity.setGroup_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
groupEntity.setCreate_id("2");
|
groupEntity.setCreate_id("2");
|
||||||
Reference in New Issue
Block a user