Merge remote-tracking branch 'origin/master'

This commit is contained in:
2026-02-05 10:26:23 +08:00
20 changed files with 265 additions and 13 deletions

View File

@@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.ext_manage.dto.mes.MesBackMaterialRequestDto;
import org.nl.wms.ext_manage.dto.mes.MesCallMaterialRequestDto;
import org.nl.wms.ext_manage.dto.mes.MesUpdateTaskDto;
import org.nl.wms.ext_manage.service.MesToWmsService;
import org.nl.wms.pda_manage.ios_manage.service.PdaIosOutService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -56,4 +57,19 @@ public class MesToWmsController {
public ResponseEntity<Object> getStructIvt(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(mesToWmsService.getStructivt(whereJson), HttpStatus.OK);
}
@PostMapping("/updateTask")
@Log("修改任务")
@SaIgnore
public ResponseEntity<Object> updateTask(@RequestBody MesUpdateTaskDto dto) {
return new ResponseEntity<>(mesToWmsService.updateTask(dto), HttpStatus.OK);
}
@PostMapping("/getTaskList")
@Log("获取任务列表")
@SaIgnore
public ResponseEntity<Object> getTaskList(@RequestBody MesUpdateTaskDto dto) {
return new ResponseEntity<>(mesToWmsService.getTaskList(dto), HttpStatus.OK);
}
}

View File

@@ -29,4 +29,9 @@ public class MesBackMaterialRequestDto {
*/
private Boolean isManual;
/**
* MES发起手工退料/退空桶不需要下发acs
*
*/
private Boolean mes_is_manual;
}

View File

@@ -23,4 +23,10 @@ public class MesCallMaterialRequestDto {
*
*/
private Boolean isManual;
/**
* MES发起手工叫料不需要下发acs
*
*/
private Boolean mes_is_manual;
}

View File

@@ -0,0 +1,19 @@
package org.nl.wms.ext_manage.dto.mes;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class MesUpdateTaskDto {
private String ext_task_code;
private String task_code;
private String vehicle_code;
/**
* 操作 forceFinish cancel
*/
private String operation;
}

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
import org.nl.wms.ext_manage.dto.mes.MesBackMaterialRequestDto;
import org.nl.wms.ext_manage.dto.mes.MesCallMaterialRequestDto;
import org.nl.wms.ext_manage.dto.mes.MesResponse;
import org.nl.wms.ext_manage.dto.mes.MesUpdateTaskDto;
/**
* <p>
@@ -34,4 +35,19 @@ public interface MesToWmsService {
* @return MesResponse
*/
MesResponse getStructivt(JSONObject whereJson);
/**
* MES 更新任务
* @param
* @return MesResponse
*/
MesResponse updateTask(MesUpdateTaskDto dto);
/**
* MES 查询任务
* @param
* @return MesResponse
*/
MesResponse getTaskList(MesUpdateTaskDto dto);
}

View File

@@ -26,6 +26,7 @@ import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper
import org.nl.wms.ext_manage.dto.mes.MesBackMaterialRequestDto;
import org.nl.wms.ext_manage.dto.mes.MesCallMaterialRequestDto;
import org.nl.wms.ext_manage.dto.mes.MesResponse;
import org.nl.wms.ext_manage.dto.mes.MesUpdateTaskDto;
import org.nl.wms.ext_manage.service.MesToWmsService;
import org.nl.wms.ext_manage.service.util.AcsResponse;
import org.nl.wms.pda_manage.ios_manage.service.PdaIosInService;
@@ -49,6 +50,7 @@ import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.redisson.executor.TasksService;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -289,6 +291,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
// 创建任务
JSONObject taskParam = new JSONObject();
taskParam.put("mes_is_manual",dto.getMes_is_manual());
taskParam.put("iostorinv_id", invId);
taskParam.put("point_code", groupPlate.getStruct_code());
taskParam.put("point_code2", pointCode);
@@ -413,6 +416,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
// 创建任务
JSONObject taskParam = new JSONObject();
taskParam.put("mes_is_manual",dto.getMes_is_manual());
taskParam.put("iostorinv_id", invId);
taskParam.put("point_code", groupPlate.getStruct_code());
taskParam.put("point_code2", sonSchBasePointList.get(0).getPoint_code());
@@ -506,6 +510,7 @@ public class MesToWmsServiceImpl implements MesToWmsService {
param.put("create_mode", IOSEnum.CREATE_MODE.code("外部接口产生"));
}
param.put("mes_is_manual",dto.getMes_is_manual());
param.put("ext_task_code", dto.getTask_code());
//退料
if ("1".equals(dto.getTask_type())) {
@@ -574,6 +579,36 @@ public class MesToWmsServiceImpl implements MesToWmsService {
return MesResponse.requestParamOk(mdPbStoragevehicleextMapper.queryAllIn(whereJson));
}
@Override
public MesResponse getTaskList(MesUpdateTaskDto dto) {
return MesResponse.requestParamOk(iSchBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
.like(StringUtils.isNotBlank(dto.getExt_task_code()), SchBaseTask::getExt_task_code, dto.getExt_task_code())
.like(StringUtils.isNotBlank(dto.getTask_code()), SchBaseTask::getTask_code, dto.getTask_code())
.eq(SchBaseTask::getMes_is_manual, true)
.and(wp -> wp
.like(StringUtils.isNotBlank(dto.getVehicle_code()), SchBaseTask::getVehicle_code, dto.getVehicle_code())
.or()
.like(StringUtils.isNotBlank(dto.getVehicle_code()), SchBaseTask::getVehicle_code2, dto.getVehicle_code()))
)
);
}
@Override
public MesResponse updateTask(MesUpdateTaskDto dto) {
SchBaseTask schBaseTask = iSchBaseTaskService.getByExtCode(dto.getExt_task_code());
if(schBaseTask!= null) {
Map<String,Object> map = new HashMap<>();
map.put("config_code",schBaseTask.getConfig_code());
map.put("method_name",dto.getOperation());
map.put("task_code",schBaseTask.getTask_code());
taskService.operation(map);
return MesResponse.requestOk();
}
else {
throw new BadRequestException("不存在ext_task_code=【" + dto.getExt_task_code() + "】的任务,请核对!");
}
}
/**
* 组织入库插入数据
*

View File

@@ -270,4 +270,15 @@ public class PdaIosInController {
return new ResponseEntity<>(pdaIosInService.getPointCodeByVehicleCode(whereJson), HttpStatus.OK);
}
/**
* 获取来料入库所有
* @return
*/
@PostMapping("/getInBillList")
@Log("PDA来料入库校验点位和托盘码")
public ResponseEntity<Object> getInBillList() {
return new ResponseEntity<>(pdaIosInService.getInBillList(), HttpStatus.OK);
}
}

View File

@@ -245,4 +245,10 @@ public interface PdaIosInService {
* @return PdaResponse
*/
PdaResponse getPointCodeByVehicleCode(JSONObject whereJson);
/**
* 手持获取来料入库数据
* @return PdaResponse
*/
PdaResponse getInBillList();
}

View File

@@ -1342,6 +1342,7 @@ public class PdaIosInServiceImpl implements PdaIosInService {
Map<String, Object> jsonMst = new HashMap<>();
jsonMst.put("point_code", whereJson.getString("point_code"));
jsonMst.put("ext_task_code", whereJson.getString("ext_task_code"));
jsonMst.put("mes_is_manual",whereJson.getString("mes_is_manual"));
// 组织明细数据
IOStorInvDtl dtlDao = ioStorInvDtlMapper.selectOne(
new QueryWrapper<IOStorInvDtl>().lambda()
@@ -1536,5 +1537,100 @@ public class PdaIosInServiceImpl implements PdaIosInService {
return PdaResponse.requestParamOk(outJson);
}
@Override
public PdaResponse getInBillList() {
//查点位表
List<SchBasePoint> schBasePointList = iSchBasePointService.list(new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_status, "3")
.eq(SchBasePoint::getRegion_code,"YLXCQ")
.isNotNull(SchBasePoint::getVehicle_code));
if(CollectionUtils.isEmpty(schBasePointList)){
return PdaResponse.requestOk();
}
//判断点位和仓位是否有正在执行的任务
List<SchBaseTask> schBaseTaskList = iSchBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>()
.eq(SchBaseTask::getIs_delete, IOSConstant.IS_DELETE_NO)
.le(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()));
Set<String> schBaseTaskListPoint = new HashSet<>();
if(CollectionUtils.isNotEmpty(schBaseTaskList)) {
schBaseTaskListPoint.addAll(schBaseTaskList.stream().map(SchBaseTask::getPoint_code1).collect(Collectors.toSet()));
schBaseTaskListPoint.addAll(schBaseTaskList.stream().map(SchBaseTask::getPoint_code2).collect(Collectors.toSet()));
schBaseTaskListPoint.addAll(schBaseTaskList.stream().map(SchBaseTask::getPoint_code3).collect(Collectors.toSet()));
schBaseTaskListPoint.addAll(schBaseTaskList.stream().map(SchBaseTask::getPoint_code4).collect(Collectors.toSet()));
schBasePointList = schBasePointList.stream().filter(a -> !schBaseTaskListPoint.contains(a.getPoint_code())).collect(Collectors.toList());
}
List<ZwConfirmCheckParamRespondDto> zwConfirmCheckParamRespondDtos = new ArrayList<>();
for(SchBasePoint schBasePoint : schBasePointList){
JSONObject whereJson = new JSONObject();
whereJson.put("vehicle_code", schBasePoint.getVehicle_code());
whereJson.put("search", schBasePoint.getVehicle_code());
//起点
whereJson.put("site_code", schBasePoint.getPoint_code());
whereJson.put("noEmptyVehicle", "1");
String material_model = "";
try {
material_model = getVehicleMaterial(whereJson).getString("material_model");
if (StringUtils.isBlank(material_model)) {
continue;
}
} catch (Exception e){
log.error(e.getMessage());
continue;
}
final String final_material_model = material_model;
//判断每个物料是否都已经配置库区
//查询字典表
List<Dict> dictList = sysDictMapper.selectList(new LambdaQueryWrapper<Dict>()
.eq(Dict::getCode, "MATERIAL_MODEL_SECT"));
List<Dict> dicts = dictList.stream().filter(a -> final_material_model.equals(a.getPara1())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(dicts)) {
continue;
}
String sect_code = dicts.get(0).getValue();
//根据库区编码获取库区id sect_id
List<Sectattr> sectattrList = sectattrMapper.selectList(new LambdaQueryWrapper<Sectattr>()
.eq(Sectattr::getSect_code, sect_code));
if (CollectionUtils.isEmpty(sectattrList)) {
continue;
}
whereJson.put("sect_id",sectattrList.get(0).getSect_id());
//通过载具查找组盘
List<GroupPlate> groupPlates = iMdPbGroupplateService.list(new QueryWrapper<GroupPlate>()
.eq("storagevehicle_code", schBasePoint.getVehicle_code())
.lt("status", IOSEnum.GROUP_PLATE_STATUS.code("出库")));
if(CollectionUtils.isEmpty(groupPlates)) {
continue;
}
MdMeMaterialbase mdMeMaterialbase = iMdMeMaterialbaseService.getByCode( groupPlates.get(0).getMaterial_id(),true);
ZwConfirmCheckParamRespondDto respDto = new ZwConfirmCheckParamRespondDto();
respDto.setQty(String.valueOf(groupPlates.get(0).getQty()));
respDto.setMaterial_code(mdMeMaterialbase.getMaterial_code());
respDto.setForm_data_code(groupPlates.get(0).getExt_code());
respDto.setVehicle_code( schBasePoint.getVehicle_code());
respDto.setSite_code( schBasePoint.getPoint_code());
respDto.setPcsn(groupPlates.get(0).getPcsn());
respDto.setMaterial_model(mdMeMaterialbase.getMaterial_model());
zwConfirmCheckParamRespondDtos.add(respDto);
}
return PdaResponse.requestParamOk(zwConfirmCheckParamRespondDtos);
}
}

View File

@@ -71,6 +71,12 @@ public interface ISchBaseTaskService extends IService<SchBaseTask> {
*/
SchBaseTask getByCode(String taskCode);
/**
* 获取任务数据
*
* @param extTaskCode 任务编码
* @return /
*/
SchBaseTask getByExtCode(String extTaskCode);
}

View File

@@ -0,0 +1,22 @@
package org.nl.wms.sch_manage.service.dao;
import lombok.Data;
@Data
public class InCheck {
private String site_code;
private String vehicle_code;
private String material_code;
private String qty;
private String form_data_code;
/**
* 批次号
*/
private String pcsn;
/**
* 物料类型
*/
private String material_model;
}

View File

@@ -122,6 +122,8 @@ public class SchBaseTask implements Serializable {
private String form_data_code;
private Integer failures;
private Boolean mes_is_manual;
private String update_time;
@TableField(exist = false)

View File

@@ -91,9 +91,9 @@
AND t.task_status <![CDATA[ < ]]> '5'
AND (
t.point_code1 = p.point_code
AND t.point_code2 = p.point_code
AND t.point_code3 = p.point_code
AND t.point_code4 = p.point_code
OR t.point_code2 = p.point_code
OR t.point_code3 = p.point_code
OR t.point_code4 = p.point_code
))
</select>
<select id="getCanUseCFGJs" resultType="org.nl.wms.sch_manage.service.dao.SchBasePoint">
@@ -132,9 +132,9 @@
AND t.task_status <![CDATA[ < ]]> '5'
AND (
t.point_code1 = p.point_code
AND t.point_code2 = p.point_code
AND t.point_code3 = p.point_code
AND t.point_code4 = p.point_code
OR t.point_code2 = p.point_code
OR t.point_code3 = p.point_code
OR t.point_code4 = p.point_code
))
</select>
</mapper>

View File

@@ -153,7 +153,7 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
// 获取当前任务的任务组ID和顺序号
String taskGroupId = currentTask.getTask_group_id();
BigDecimal currentSeq = currentTask.getTask_group_seq();
if (currentSeq != null && currentSeq.compareTo(BigDecimal.ZERO) > 0) {
// 查询同一任务组中,顺序号小于当前任务的所有任务
LambdaQueryWrapper<SchBaseTask> wrapper = new QueryWrapper<SchBaseTask>().lambda();
@@ -161,14 +161,14 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
wrapper.lt(SchBaseTask::getTask_group_seq, currentSeq);
wrapper.ne(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode());
wrapper.ne(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code(""));
List<SchBaseTask> unfinishedTasks = this.list(wrapper);
if (!unfinishedTasks.isEmpty()) {
throw new BadRequestException("同一任务组中存在未完成的前置任务,不允许跳过完成");
}
}
}
abstractTask.forceFinish(task_code);
break;
case "cancel":
@@ -190,7 +190,11 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
return this.getOne(lam);
}
@Override
public SchBaseTask getByExtCode(String extTaskCode) {
LambdaQueryWrapper<SchBaseTask> lam = new QueryWrapper<SchBaseTask>().lambda();
lam.eq(SchBaseTask::getExt_task_code, extTaskCode);
lam.eq(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code(""));
return this.getOne(lam);
}
}

View File

@@ -81,6 +81,7 @@ public class BackInTask extends AbstractTask {
task.setVehicle_code(json.getString("vehicle_code"));
task.setRequest_param(json.toString());
task.setPriority(json.getString("Priority"));
task.setMes_is_manual(json.getBoolean("mes_is_manual"));
task.setTask_group_id(IdUtil.getStringId());
task.setTask_group_seq(new BigDecimal(1));
task.setCreate_mode(json.getString("create_mode"));

View File

@@ -90,6 +90,7 @@ public class VehicleInTask extends AbstractTask {
task.setTask_group_id(taskGroupId);
task.setCreate_mode(json.getString("create_mode"));
task.setRequest_param(json.toString());
task.setMes_is_manual(json.getBoolean("mes_is_manual"));
task.setPriority(json.getString("Priority"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());

View File

@@ -101,6 +101,7 @@ public class DownEmptyUpFullTask extends AbstractTask {
task.setGroup_id(json.getString("group_id"));
task.setRequest_param(json.toString());
task.setPriority("1");
task.setMes_is_manual(json.getBoolean("mes_is_manual"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -98,6 +98,7 @@ public class SeparateMaterialTask extends AbstractTask {
task.setCreate_mode(json.getString("create_mode"));
task.setRequest_param(json.toString());
task.setPriority("1");
task.setMes_is_manual(json.getBoolean("mes_is_manual"));
task.setCreate_id(SecurityUtils.getCurrentUserId());
task.setCreate_name(SecurityUtils.getCurrentNickName());
task.setCreate_time(DateUtil.now());

View File

@@ -826,6 +826,7 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
}
String taskGroupId = IdUtil.getStringId();
JSONObject task = new JSONObject();
task.put("mes_is_manual",whereJson.get("mes_is_manual"));
task.put("config_code", IOSConstant.BACK_IN_TASK);
task.put("group_id", groupPlate.getGroup_id());
task.put("priority", whereJson.get("priority"));

View File

@@ -1037,6 +1037,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
}
JSONObject task_form = new JSONObject();
task_form.put("task_type", "SeparateMaterial");
task_form.put("mes_is_manual",whereJson.get("mes_is_manual"));
task_form.put("order_id", whereJson.getString("order_id"));
task_form.put("task_code", whereJson.getString("task_code"));
task_form.put("point_code1", ioStorInvDis.getStruct_code());
@@ -1064,6 +1065,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
throw new BadRequestException("点位不存在");
}
JSONObject task_form = new JSONObject();
task_form.put("mes_is_manual",whereJson.get("mes_is_manual"));
task_form.put("task_type", "DownEmptyUpFullTask");
task_form.put("order_id", whereJson.getString("order_id"));
task_form.put("task_code", whereJson.getString("task_code"));
@@ -1083,6 +1085,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
JSONObject task_form2 = new JSONObject();
task_form2.put("task_type", "DownEmptyUpFullTask");
task_form2.put("mes_is_manual",whereJson.get("mes_is_manual"));
task_form2.put("order_id", whereJson.getString("order_id"));
task_form2.put("task_code", whereJson.getString("task_code"));
task_form2.put("point_code1", whereJson.getString("point_code2"));