Browse Source

opt:下发叠盘任务判断系统参数最大可下发数、子托盘组盘更新手持pc端逻辑优化、任务强制完成加等待图标并更新按钮条件

master
DESKTOP-5DIJMF9\admin 7 months ago
parent
commit
c3c0bec050
  1. 15
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java
  2. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java
  3. 25
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java
  4. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java
  5. 1
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java
  6. 27
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/POINTTask.java
  7. 84
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/YCLCKTask.java
  8. 4
      lms/nladmin-ui/src/views/wms/sch/task/index.vue

15
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/impl/PdaServiceImpl.java

@ -80,17 +80,19 @@ public class PdaServiceImpl implements PdaService {
@Override
public PdaResponseVo zpjb(JSONObject param) {
String subTray=param.getString("sub_tray");
String subTray = param.getString("sub_tray");
//子拖盘解绑
if(ObjectUtil.isNotEmpty(subTray)){
SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
.eq(SchBaseVehiclematerialgroup::getVehicle_code, subTray)
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status,
GroupBindMaterialStatusEnum.BOUND.getValue()));
//查询母托盘
JSONObject group_jo = new JSONObject();
group_jo.put("vehicle_code",subTray);
SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getGroup(group_jo);
if (ObjectUtil.isNotEmpty(one)) {
one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
one.setUpdate_id(GeneralDefinition.ACS_ID);
one.setUpdate_name(GeneralDefinition.ACS_NAME);
one.setUpdate_time(DateUtil.now());
vehiclematerialgroupService.updateById(one);
vehiclematerialgroupService.updateByJson(one);
}
List<SchBasePoint> schBasePointList= pointMapper.selectList(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getVehicle_code2, subTray));
@ -108,7 +110,6 @@ public class PdaServiceImpl implements PdaService {
group_jo.put("vehicle_code",motherTray);
SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getGroup(group_jo);
if (ObjectUtil.isNotEmpty(one)) {
one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue());
one.setUpdate_id(GeneralDefinition.ACS_ID);
one.setUpdate_name(GeneralDefinition.ACS_NAME);

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java

@ -86,6 +86,8 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
updateWrapper.set("update_id",entity.getUpdate_id());
updateWrapper.set("update_name",entity.getUpdate_name());
updateWrapper.set("update_time",entity.getUpdate_time());
updateWrapper.set("pcsn",entity.getPcsn());
updateWrapper.set("standing_time",entity.getStanding_time());
vehiclematerialgroupMapper.update(null,updateWrapper);
}

25
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/AbstractTask.java

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.param.ISysParamService;
import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.ext.service.dto.to.BaseResponse;
@ -52,6 +53,8 @@ public abstract class AbstractTask {
private WorkorderMapper workorderMapper;
@Autowired
private MaterialMapper materialMapper;
@Autowired
private ISysParamService paramService;
/**
* 任务创建
* 根据配置生成任务如并发控制等
@ -197,22 +200,22 @@ public abstract class AbstractTask {
Assert.isFalse(ObjectUtil.isEmpty(sub_tray),
"该任务申请子托盘["+param.getString("vehicle_code2")+"]为空,无法申请任务!");
}
//校验mes接口组盘记录
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
//判断是否回传mes
Param isConnectAcs = sysParamService.findByCode(GeneralDefinition.IS_RETURN_MES);
//判断是否校验mes组盘记录
Param isConnectAcs = paramService.findByCode(GeneralDefinition.IS_RETURN_MES);
if (ObjectUtil.isEmpty(isConnectAcs)) {
Assert.notNull(taskConfig, "找不到配置文件,请确认系统参数[is_return_mes]配置是否存在!");
}
String isReturn = isConnectAcs.getValue();
if("1".equals(isReturn)){
//组盘表需要关联外部mes晶棒数据,一对多
LambdaQueryWrapper<Material> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Material::getPalletSN,sub_tray);
wrapper.eq(Material::getGroup_bind_material_status, GroupBindMaterialStatusEnum.BOUND.getValue());
Integer list_size = materialMapper.selectCount(wrapper);
Assert.isFalse(list_size<=0,
"该任务申请子托盘["+sub_tray+"]异常,无原材料入库单据信息!");
//若不是缓存区托盘,校验mes接口组盘记录
if(!sub_tray.startsWith("YBHC")){
LambdaQueryWrapper<Material> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Material::getPalletSN,sub_tray);
wrapper.eq(Material::getGroup_bind_material_status, GroupBindMaterialStatusEnum.BOUND.getValue());
Integer list_size = materialMapper.selectCount(wrapper);
Assert.isFalse(list_size<=0,
"该任务申请子托盘["+sub_tray+"]异常,无原材料入库单据信息!");
}
}
}
}else{

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java

@ -69,6 +69,8 @@ public class GeneralDefinition {
public static final String IS_CONNECT_ACS = "is_connect_acs";
/** 是否连接 */
public static final String IS_RETURN_MES = "is_return_mes";
/** 叠盘机最大数量 */
public static final String MAX_DKT_QTY = "max_dkt_qty";
/** ACS路径 */
public static final String ACS_URL = "acs_url";
/** 是否连接 */

1
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java

@ -54,6 +54,7 @@ public class AcsUtil {
result.put("message", "网络不通,操作失败!");
result.put("data", new JSONObject());
}
log.info("acs任务的回传参数为:", result.toString());
//acs抛异常这里
/* if (result.getString("status").equals(String.valueOf(HttpStatus.BAD_REQUEST.value())))
throw new BadRequestException(result.getString("message"));*/

27
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/POINTTask.java

@ -9,6 +9,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.nl.common.exception.BadRequestException;
import org.nl.system.service.param.ISysParamService;
import org.nl.system.service.param.dao.Param;
import org.nl.wms.ext.service.WmsToAcsService;
import org.nl.wms.ext.service.dto.to.BaseResponse;
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
@ -57,6 +59,8 @@ public class POINTTask extends AbstractTask {
private IWorkorderService workorderService;
@Autowired
private ISchBaseVehiclematerialgroupService vehiclematerialgroupService;
@Autowired
private ISysParamService paramService;
@Override
// @Transactional(rollbackFor = Exception.class)
@ -81,9 +85,21 @@ public class POINTTask extends AbstractTask {
SchBasePoint nextSchBasePoint= pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, task.getPoint_code2()));
if(task.getPoint_code2().startsWith("DKT")){
//判断叠盘机最大叠盘数量
Param max_dkt_qty = paramService.findByCode(GeneralDefinition.MAX_DKT_QTY);
if (ObjectUtil.isEmpty(max_dkt_qty)) {
Assert.notNull(taskConfig, "找不到配置文件,请确认系统参数[max_dkt_qty]配置是否存在!");
}
Integer max_qty = Integer.valueOf(max_dkt_qty.getValue());
//如果是叠盘位,根据当前数量+1为目标地址
int qty=nextSchBasePoint.getVehicle_qty()+1;
task.setPoint_code2(task.getPoint_code2().substring(0,task.getPoint_code2().length()-1)+qty);
if(qty <= max_qty){
task.setPoint_code2(task.getPoint_code2().substring(0,task.getPoint_code2().length()-1)+qty);
}else{
task.setRemark("叠盘机空盘数量已达最大值:["+max_qty+"],暂时无法下发任务!");
taskService.update(task);
continue;
}
}else{
if (nextSchBasePoint.getVehicle_qty() > 0
|| ObjectUtil.isNotEmpty(nextSchBasePoint.getVehicle_code2())) {
@ -200,10 +216,9 @@ public class POINTTask extends AbstractTask {
}
//子托盘更新组盘信息
if(StringUtils.isNotEmpty(vehicleCode2)) {
one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode2)
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status,
GroupBindMaterialStatusEnum.BOUND.getValue()));
JSONObject group_jo = new JSONObject();
group_jo.put("vehicle_code",vehicleCode2);
one = vehiclematerialgroupService.getGroup(group_jo);
if (ObjectUtil.isNotEmpty(one)) {
one.setTask_code(taskObj.getTask_code());
one.setPoint_code(endPointObj.getPoint_code()); // 当前位置
@ -213,7 +228,7 @@ public class POINTTask extends AbstractTask {
one.setUpdate_id(GeneralDefinition.ACS_ID);
one.setUpdate_name(GeneralDefinition.ACS_NAME);
one.setUpdate_time(DateUtil.now());
vehiclematerialgroupService.updateById(one);
vehiclematerialgroupService.updateByJson(one);
}
if(endPointObj.getPoint_code().contains("XHW")){
//pdm_bd_workorder_two任务完成时,status改为3

84
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/YCLCKTask.java

@ -210,49 +210,53 @@ public class YCLCKTask extends AbstractTask {
}
if (status.equals(TaskStatus.FINISHED)) { // 完成
String vehicleCode = taskObj.getVehicle_code();
String vehicleCode2 = taskObj.getVehicle_code2();
//查询母托盘
JSONObject group_jo = new JSONObject();
group_jo.put("vehicle_code",vehicleCode);
SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getGroup(group_jo);
if (ObjectUtil.isNotEmpty(one)) {
one.setTask_code(taskObj.getTask_code());
one.setPoint_code(endPointObj.getPoint_code()); // 当前位置
one.setPoint_name(endPointObj.getPoint_name());
one.setMove_way(one.getMove_way() == null ? "" : (one.getMove_way() + " -> ") + endPointObj.getPoint_code());
one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue());
one.setInstorage_time(DateUtil.now());
one.setUpdate_id(GeneralDefinition.ACS_ID);
one.setUpdate_name(GeneralDefinition.ACS_NAME);
one.setUpdate_time(DateUtil.now());
vehiclematerialgroupService.updateByJson(one);
}
one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper<SchBaseVehiclematerialgroup>()
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode2)
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status,
GroupBindMaterialStatusEnum.BOUND.getValue()));
if (ObjectUtil.isNotEmpty(one)) {
one.setTask_code(taskObj.getTask_code());
one.setPoint_code(endPointObj.getPoint_code()); // 当前位置
one.setPoint_name(endPointObj.getPoint_name());
one.setMove_way(one.getMove_way() == null ? "" : (one.getMove_way() + " -> ") + endPointObj.getPoint_code());
one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue());
one.setInstorage_time(DateUtil.now());
if(ObjectUtil.isEmpty(extGroupData.getString("time"))){
one.setStanding_time(1);
}else{
one.setStanding_time(Integer.valueOf(extGroupData.getString("time")));
SchBaseVehiclematerialgroup one =null;
if(ObjectUtil.isNotEmpty(vehicleCode)){
//查询母托盘
JSONObject group_jo = new JSONObject();
group_jo.put("vehicle_code",vehicleCode);
one = vehiclematerialgroupService.getGroup(group_jo);
if (ObjectUtil.isNotEmpty(one)) {
one.setTask_code(taskObj.getTask_code());
one.setPoint_code(endPointObj.getPoint_code()); // 当前位置
one.setPoint_name(endPointObj.getPoint_name());
one.setMove_way(one.getMove_way() == null ? "" : (one.getMove_way() + " -> ") + endPointObj.getPoint_code());
one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue());
one.setInstorage_time(DateUtil.now());
one.setUpdate_id(GeneralDefinition.ACS_ID);
one.setUpdate_name(GeneralDefinition.ACS_NAME);
one.setUpdate_time(DateUtil.now());
vehiclematerialgroupService.updateByJson(one);
}
one.setUpdate_id(GeneralDefinition.ACS_ID);
one.setUpdate_name(GeneralDefinition.ACS_NAME);
one.setUpdate_time(DateUtil.now());
if(ObjectUtil.isNotEmpty(extGroupData.getString("batch"))){
one.setPcsn(extGroupData.getString("batch"));
}
String vehicleCode2 = taskObj.getVehicle_code2();
if(ObjectUtil.isNotEmpty(vehicleCode2)){
//查询子托盘
JSONObject group_jo = new JSONObject();
group_jo.put("vehicle_code",vehicleCode2);
one = vehiclematerialgroupService.getGroup(group_jo);
if (ObjectUtil.isNotEmpty(one)) {
one.setTask_code(taskObj.getTask_code());
one.setPoint_code(endPointObj.getPoint_code()); // 当前位置
one.setPoint_name(endPointObj.getPoint_name());
one.setMove_way(one.getMove_way() == null ? "" : (one.getMove_way() + " -> ") + endPointObj.getPoint_code());
one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue());
one.setInstorage_time(DateUtil.now());
if(ObjectUtil.isEmpty(extGroupData.getString("time"))){
one.setStanding_time(1);
}else{
one.setStanding_time(Integer.valueOf(extGroupData.getString("time")));
}
one.setUpdate_id(GeneralDefinition.ACS_ID);
one.setUpdate_name(GeneralDefinition.ACS_NAME);
one.setUpdate_time(DateUtil.now());
if(ObjectUtil.isNotEmpty(extGroupData.getString("batch"))){
one.setPcsn(extGroupData.getString("batch"));
}
vehiclematerialgroupService.updateByJson(one);
}
vehiclematerialgroupService.updateById(one);
}
// 终点解锁
endPointObj.setIng_task_code("");
endPointObj.setVehicle_code(taskObj.getVehicle_code());

4
lms/nladmin-ui/src/views/wms/sch/task/index.vue

@ -111,7 +111,7 @@
<el-button
type="text"
icon="el-icon-success"
:disabled="scope.row.task_status==='5' || scope.row.task_status==='6'"
:disabled="scope.row.task_status==='1' || scope.row.task_status==='5' || scope.row.task_status==='6'"
@click="doOperate(scope.row, 'a')"
>完成</el-button>
<el-button
@ -220,10 +220,12 @@ export default {
method_name: method_name,
config_code: row.config_code
}
this.crud.loading = true
crudSchBaseTask.operation(data).then(res => {
this.crud.toQuery()
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
}).catch(err => {
this.crud.loading = false
console.log(err.response.data.message)
})
}

Loading…
Cancel
Save