feat: 解包上料
This commit is contained in:
@@ -146,8 +146,11 @@ public class StructattrServiceImpl extends ServiceImpl<StructattrMapper, Structa
|
||||
dto.setUpdate_time(now);
|
||||
dto.setCreate_time(now);
|
||||
|
||||
Sectattr sectattr = iSectattrService.findById(dto.getSect_id());
|
||||
Sectattr sectattr = iSectattrService.getOne(new LambdaQueryWrapper<Sectattr>()
|
||||
.eq(Sectattr::getSect_code, dto.getSect_id())
|
||||
.eq(Sectattr::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否")));
|
||||
BsrealStorattr bsrealStorattr = iBsrealStorattrService.findById(sectattr.getStor_id());
|
||||
dto.setSect_id(sectattr.getSect_id());
|
||||
dto.setSect_code(sectattr.getSect_code());
|
||||
dto.setSect_name(sectattr.getSect_name());
|
||||
dto.setStor_id(bsrealStorattr.getStor_id());
|
||||
|
||||
@@ -1,14 +1,47 @@
|
||||
package org.nl.wms.pda_manage.sch_manage.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.pda_manage.sch_manage.service.PdaJBService;
|
||||
import org.nl.wms.pda_manage.sch_manage.service.mapper.PdaJBMapper;
|
||||
import org.nl.wms.pda_manage.util.PdaResponse;
|
||||
import org.nl.wms.pm_manage.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.jb.JbUpAgvTask;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.IOutBillService;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInv;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDtl;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvMapper;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -20,6 +53,29 @@ import java.util.List;
|
||||
public class PdaJBServiceImpl implements PdaJBService {
|
||||
@Autowired
|
||||
private PdaJBMapper pdaJBMapper;
|
||||
@Autowired
|
||||
private IPdmBdWorkorderService workorderService;
|
||||
@Autowired
|
||||
private IStructattrService structattrService;
|
||||
@Autowired
|
||||
private IMdMeMaterialbaseService materialbaseService;
|
||||
@Autowired
|
||||
private IMdPbGroupplateService groupplateService;
|
||||
@Autowired
|
||||
private IOutBillService outBillService;
|
||||
@Autowired
|
||||
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||
@Resource
|
||||
private IOStorInvDtlMapper ioStorInvDtlMapper;
|
||||
@Resource
|
||||
private IStructattrService iStructattrService;
|
||||
@Resource
|
||||
private IMdPbGroupplateService iMdPbGroupPlateService;
|
||||
@Resource
|
||||
private ISchBasePointService pointService;
|
||||
@Resource
|
||||
private JbUpAgvTask jbUpAgvTask;
|
||||
|
||||
@Override
|
||||
public PdaResponse getOrderList(JSONObject whereJson) {
|
||||
List<PdmBdWorkorder> workorders = pdaJBMapper.getUnProductOrderList(whereJson.getString("point_code"));
|
||||
@@ -27,9 +83,153 @@ public class PdaJBServiceImpl implements PdaJBService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public PdaResponse callMaterial(JSONObject whereJson) {
|
||||
// 1、创建出库单、明细
|
||||
log.info("解包叫料,请求参数:{}", whereJson);
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
String now = DateUtil.now();
|
||||
// workorder_id、area、point_code
|
||||
String workorderId = whereJson.getString("workorder_id");
|
||||
PdmBdWorkorder workorder = workorderService.getById(workorderId);
|
||||
if (ObjectUtil.isEmpty(workorder)) {
|
||||
throw new BadRequestException("工单不存在!");
|
||||
}
|
||||
if ("3".equals(workorder.getWorkorder_status())) {
|
||||
throw new BadRequestException("该工单已经执行中,请勿重复开工!");
|
||||
}
|
||||
// 出库的仓位
|
||||
Structattr outStructAttr = structattrService.getByCode(workorder.getStruct_code());
|
||||
if (ObjectUtil.isEmpty(outStructAttr)) {
|
||||
throw new BadRequestException("仓位【" + workorder.getStruct_code() + "】不存在!");
|
||||
}
|
||||
MdMeMaterialbase materialbase = materialbaseService.getById(workorder.getMaterial_id());
|
||||
if (ObjectUtil.isEmpty(materialbase)) {
|
||||
throw new BadRequestException("物料【" + workorder.getMaterial_id() + "】不存在!");
|
||||
}
|
||||
GroupPlate groupPlate = groupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getStoragevehicle_code, outStructAttr.getStoragevehicle_code())
|
||||
.eq(GroupPlate::getStatus, "02"));
|
||||
if (ObjectUtil.isEmpty(groupPlate)) {
|
||||
throw new BadRequestException("托盘[" + outStructAttr.getStoragevehicle_code() + "]组盘信息不存在!");
|
||||
}
|
||||
// 1、创建出库单、明细、分配明细
|
||||
// 1.1 单据表
|
||||
String invId = IdUtil.getStringId();
|
||||
IOStorInv ioStorInv = new IOStorInv();
|
||||
ioStorInv.setIostorinv_id(invId);
|
||||
ioStorInv.setBill_code(CodeUtil.getNewCode("OUT_STORE_CODE"));
|
||||
ioStorInv.setBiz_date(DateUtil.format(new Date(), "yyyy-MM-dd"));
|
||||
ioStorInv.setIo_type(IOSEnum.IO_TYPE.code("出库"));
|
||||
ioStorInv.setDetail_count(1);
|
||||
ioStorInv.setCreate_mode(IOSEnum.CREATE_MODE.code("终端产生"));
|
||||
ioStorInv.setStor_id(outStructAttr.getStor_id());
|
||||
ioStorInv.setStor_code(outStructAttr.getStor_code());
|
||||
ioStorInv.setStor_name(outStructAttr.getStor_name());
|
||||
ioStorInv.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
|
||||
ioStorInv.setBill_type("1009");
|
||||
ioStorInv.setIs_delete(BaseDataEnum.IS_YES_NOT.code("否"));
|
||||
ioStorInv.setIs_upload(BaseDataEnum.IS_YES_NOT.code("否"));
|
||||
ioStorInv.setInput_optid(currentUserId);
|
||||
ioStorInv.setInput_optname(nickName);
|
||||
ioStorInv.setInput_time(now);
|
||||
ioStorInv.setUpdate_optid(currentUserId);
|
||||
ioStorInv.setUpdate_optname(nickName);
|
||||
ioStorInv.setUpdate_time(now);
|
||||
ioStorInv.setTotal_qty(BigDecimal.valueOf(1));
|
||||
ioStorInv.setDetail_count(1);
|
||||
outBillService.save(ioStorInv);
|
||||
// 1.2 单据明细
|
||||
IOStorInvDtl dtl = new IOStorInvDtl();
|
||||
dtl.setIostorinvdtl_id(IdUtil.getStringId());
|
||||
dtl.setIostorinv_id(invId);
|
||||
dtl.setSeq_no("1");
|
||||
dtl.setMaterial_id(materialbase.getMaterial_id());
|
||||
dtl.setMaterial_code(materialbase.getMaterial_code());
|
||||
dtl.setPcsn(groupPlate.getPcsn());
|
||||
dtl.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
|
||||
dtl.setQty_unit_id(groupPlate.getQty_unit_id());
|
||||
dtl.setQty_unit_name(groupPlate.getQty_unit_name());
|
||||
dtl.setPlan_qty(BigDecimal.ONE);
|
||||
dtl.setAssign_qty(BigDecimal.ONE);
|
||||
dtl.setUnassign_qty(BigDecimal.ZERO);
|
||||
ioStorInvDtlMapper.insert(dtl);
|
||||
// 1.3 分配明细
|
||||
IOStorInvDis ioStorInvDis = new IOStorInvDis();
|
||||
ioStorInvDis.setIostorinvdis_id(IdUtil.getStringId());
|
||||
ioStorInvDis.setIostorinv_id(dtl.getIostorinv_id());
|
||||
ioStorInvDis.setIostorinvdtl_id(dtl.getIostorinvdtl_id());
|
||||
ioStorInvDis.setSeq_no("1");
|
||||
ioStorInvDis.setSect_id(outStructAttr.getSect_id());
|
||||
ioStorInvDis.setPcsn(groupPlate.getPcsn());
|
||||
ioStorInvDis.setMaterial_id(materialbase.getMaterial_id());
|
||||
ioStorInvDis.setMaterial_code(materialbase.getMaterial_code());
|
||||
ioStorInvDis.setSect_name(outStructAttr.getSect_name());
|
||||
ioStorInvDis.setSect_code(outStructAttr.getSect_code());
|
||||
ioStorInvDis.setStruct_id(outStructAttr.getStruct_id());
|
||||
ioStorInvDis.setStruct_name(outStructAttr.getStruct_name());
|
||||
ioStorInvDis.setStruct_code(outStructAttr.getStruct_code());
|
||||
ioStorInvDis.setStoragevehicle_code(outStructAttr.getStoragevehicle_code());
|
||||
ioStorInvDis.setIs_issued(BaseDataEnum.IS_YES_NOT.code("否"));
|
||||
ioStorInvDis.setQty_unit_id(groupPlate.getQty_unit_id());
|
||||
ioStorInvDis.setQty_unit_name(groupPlate.getQty_unit_name());
|
||||
ioStorInvDis.setWork_status(IOSEnum.INBILL_DIS_STATUS.code("生成"));
|
||||
ioStorInvDis.setPlan_qty(groupPlate.getFrozen_qty());
|
||||
|
||||
// 1.3 仓位锁住
|
||||
JSONObject lock_map = new JSONObject();
|
||||
lock_map.put("struct_code", outStructAttr.getStruct_code());
|
||||
lock_map.put("inv_id", ioStorInv.getIostorinv_id());
|
||||
lock_map.put("inv_code", ioStorInv.getBill_code());
|
||||
lock_map.put("inv_type", ioStorInv.getBill_type());
|
||||
lock_map.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁"));
|
||||
iStructattrService.updateStatusByCode("0",lock_map);
|
||||
//更新组盘表冻结数量状态
|
||||
iMdPbGroupPlateService.update(new LambdaUpdateWrapper<GroupPlate>()
|
||||
.set(GroupPlate::getFrozen_qty, "1")
|
||||
.set(GroupPlate::getUpdate_time, now)
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
|
||||
.eq(GroupPlate::getStoragevehicle_code, outStructAttr.getStoragevehicle_code())
|
||||
.eq(GroupPlate::getPcsn, groupPlate.getPcsn())
|
||||
.eq(GroupPlate::getMaterial_id, materialbase.getMaterial_id())
|
||||
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库")));
|
||||
// 2、创建任务、下发
|
||||
return null;
|
||||
// 获取工单对应的区域的出入点
|
||||
SchBasePoint inPoint = pointService.getNotTaskByRegionAndType(workorder.getRegion_code(), "3");
|
||||
SchBasePoint outPoint = pointService.getNotTaskByRegionAndType(workorder.getRegion_code(), "4");
|
||||
if (ObjectUtil.isEmpty(inPoint) || ObjectUtil.isEmpty(outPoint)) {
|
||||
throw new BadRequestException("解包机输送线点位不存在或者存在任务!");
|
||||
}
|
||||
JSONObject task_form = new JSONObject();
|
||||
task_form.put("task_type", "JbUpAgvTask");
|
||||
task_form.put("group_id", groupPlate.getGroup_id());
|
||||
task_form.put("order_id", workorder.getWorkorder_id());
|
||||
task_form.put("TaskCode",CodeUtil.getNewCode("TASK_CODE"));
|
||||
task_form.put("point_code1", outStructAttr.getStruct_code());
|
||||
task_form.put("point_code2", inPoint.getPoint_code());
|
||||
task_form.put("vehicle_code", outStructAttr.getStoragevehicle_code());
|
||||
if ("2".equals(outPoint.getPoint_status())) {
|
||||
// 四点任务
|
||||
task_form.put("point_code3", outPoint.getPoint_code());
|
||||
task_form.put("point_code4", outStructAttr.getStruct_code());
|
||||
task_form.put("vehicle_code2", outPoint.getVehicle_code());
|
||||
}
|
||||
String task_id = jbUpAgvTask.create(task_form);
|
||||
ioStorInvDis.setTask_id(task_id);
|
||||
ioStorInvDis.setIs_issued(BaseDataEnum.IS_YES_NOT.code("是"));
|
||||
ioStorInvDis.setPoint_code(outStructAttr.getStruct_code());
|
||||
ioStorInvDisMapper.insert(ioStorInvDis);
|
||||
|
||||
// 3、工单状态修改,设置实际开始时间
|
||||
workorder.setWorkorder_status("3");
|
||||
workorder.setRealproducestart_date(DateUtil.now());
|
||||
workorderService.updateById(workorder);
|
||||
|
||||
inPoint.setIng_task_code(task_id);
|
||||
if ("2".equals(outPoint.getPoint_status())) {
|
||||
outPoint.setIng_task_code(task_id);
|
||||
}
|
||||
pointService.updateBatchById(Arrays.asList(inPoint, outPoint));
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
`md_pb_groupplate` mg
|
||||
LEFT JOIN st_ivt_structattr ss ON ss.storagevehicle_code = mg.storagevehicle_code
|
||||
LEFT JOIN md_me_materialbase mm ON mm.material_id = mg.material_id
|
||||
WHERE mg.`status` = '01' AND mg.frozen_qty = 0 AND IFNULL(mg.storagevehicle_code,'') <![CDATA[ <> ]]> ''
|
||||
WHERE mg.`status` = '02' AND mg.frozen_qty = 0 AND IFNULL(mg.storagevehicle_code,'') <![CDATA[ <> ]]> ''
|
||||
AND IFNULL(ss.struct_code,'') <![CDATA[ <> ]]> ''
|
||||
AND 0 = (SELECT COUNT(*) FROM pdm_bd_workorder po WHERE po.raw_material_code = mg.storagevehicle_code AND po.workorder_status <![CDATA[ <> ]]> '5')
|
||||
<if test="query.stor_id != null and query.stor_id != ''">
|
||||
|
||||
@@ -105,4 +105,6 @@ public interface ISchBasePointService extends IService<SchBasePoint> {
|
||||
*/
|
||||
List<SchBasePoint> checkEndPointTask(String regionCode, String getLockType, String sortType, String
|
||||
pointType, String pointCode, String vehicleIsNull, boolean isFourPoint);
|
||||
|
||||
SchBasePoint getNotTaskByRegionAndType(String regionCode, String s);
|
||||
}
|
||||
|
||||
@@ -44,4 +44,6 @@ public interface SchBasePointMapper extends BaseMapper<SchBasePoint> {
|
||||
* @return IPage<SchBasePoint>
|
||||
*/
|
||||
IPage<SchBasePoint> selectPageLeftJoin(IPage<SchBasePoint> pages, SchBasePointQuery whereJson);
|
||||
|
||||
SchBasePoint getNotTaskByRegionAndType(String regionCode, String type);
|
||||
}
|
||||
|
||||
@@ -63,4 +63,27 @@
|
||||
</where>
|
||||
ORDER BY p.region_code, p.point_code, p.point_type
|
||||
</select>
|
||||
<select id="getNotTaskByRegionAndType" resultType="org.nl.wms.sch_manage.service.dao.SchBasePoint">
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
`sch_base_point` p
|
||||
WHERE
|
||||
p.point_type = #{type}
|
||||
AND p.region_code = #{regionCode}
|
||||
AND 0 = (
|
||||
SELECT
|
||||
COUNT(*)
|
||||
FROM
|
||||
sch_base_task t
|
||||
WHERE
|
||||
t.is_delete = '0'
|
||||
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
|
||||
))
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -287,4 +287,9 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SchBasePoint getNotTaskByRegionAndType(String regionCode, String type) {
|
||||
return this.baseMapper.getNotTaskByRegionAndType(regionCode, type);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,189 @@
|
||||
package org.nl.wms.sch_manage.service.util.tasks.jb;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.pm_manage.service.IPdmBdWorkorderService;
|
||||
import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.IOutBillService;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 解包上料AGV任务
|
||||
* @Author: lyd
|
||||
* @Date: 2025/7/22
|
||||
*/
|
||||
@Component("JbUpAgvTask")
|
||||
public class JbUpAgvTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Resource
|
||||
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||
@Resource
|
||||
private IOutBillService outBillService;
|
||||
@Resource
|
||||
private IPdmBdWorkorderService workorderService;
|
||||
@Resource
|
||||
private ISchBasePointService pointService;
|
||||
@Resource
|
||||
private IMdPbGroupplateService groupplateService;
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_code(json.getString("TaskCode"));
|
||||
task.setTask_status(TaskStatus.CREATE.getCode());
|
||||
task.setConfig_code(json.getString("task_type"));
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setPoint_code3(json.getString("point_code3"));
|
||||
task.setPoint_code4(json.getString("point_code4"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setVehicle_code2(json.getString("vehicle_code2"));
|
||||
task.setGroup_id(json.getString("group_id"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
// 校验任务
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
// 根据传来的类型去对任务进行操作
|
||||
if (status.equals(TaskStatus.EXECUTING)) {
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) {
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) {
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
}
|
||||
|
||||
private void cancelTask(SchBaseTask taskObj) {
|
||||
// 取消任务
|
||||
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
.set(SchBaseTask::getTask_status, TaskStatus.CANCELED.getCode())
|
||||
.set(SchBaseTask::getRemark,"已取消")
|
||||
.eq(SchBaseTask::getTask_id,taskObj.getTask_id())
|
||||
);
|
||||
|
||||
//分配表清除任务
|
||||
ioStorInvDisMapper.update(new IOStorInvDis(),new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getTask_id,null)
|
||||
.set(IOStorInvDis::getPoint_code,null)
|
||||
.set(IOStorInvDis::getIs_issued,0)
|
||||
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成"))
|
||||
.eq(IOStorInvDis::getTask_id,taskObj.getTask_id())
|
||||
);
|
||||
}
|
||||
|
||||
private void finishTask(SchBaseTask taskObj) {
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark("已完成");
|
||||
taskService.updateById(taskObj);
|
||||
outBillService.taskFinish(taskObj);
|
||||
// 工单完成
|
||||
JSONObject requestParam = JSONObject.parseObject(taskObj.getRequest_param());
|
||||
String orderId = requestParam.getString("order_id");
|
||||
workorderService.update(new LambdaUpdateWrapper<PdmBdWorkorder>()
|
||||
.set(PdmBdWorkorder::getWorkorder_status, "5")
|
||||
.set(PdmBdWorkorder::getReal_qty, 1)
|
||||
.set(PdmBdWorkorder::getRealproduceend_date, DateUtil.now())
|
||||
.eq(PdmBdWorkorder::getWorkorder_id, orderId));
|
||||
// 点位设置值
|
||||
pointService.update(new LambdaUpdateWrapper<SchBasePoint>()
|
||||
.set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code())
|
||||
.set(SchBasePoint::getPoint_status, "3")
|
||||
.set(SchBasePoint::getIng_task_code, "")
|
||||
.set(SchBasePoint::getUpdate_id, SecurityUtils.getCurrentUserId())
|
||||
.set(SchBasePoint::getUpdate_name, SecurityUtils.getCurrentNickName())
|
||||
.set(SchBasePoint::getUpdate_time, DateUtil.now())
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2()));
|
||||
if (ObjectUtil.isNotEmpty(taskObj.getPoint_code3())) {
|
||||
pointService.update(new LambdaUpdateWrapper<SchBasePoint>()
|
||||
.set(SchBasePoint::getVehicle_code, "")
|
||||
.set(SchBasePoint::getIng_task_code, "")
|
||||
.set(SchBasePoint::getPoint_status, "1")
|
||||
.set(SchBasePoint::getUpdate_id, SecurityUtils.getCurrentUserId())
|
||||
.set(SchBasePoint::getUpdate_name, SecurityUtils.getCurrentNickName())
|
||||
.set(SchBasePoint::getUpdate_time, DateUtil.now())
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code3()));
|
||||
}
|
||||
|
||||
groupplateService.update(new LambdaUpdateWrapper<GroupPlate>()
|
||||
.set(GroupPlate::getFrozen_qty, "1")
|
||||
.set(GroupPlate::getUpdate_time, DateUtil.now())
|
||||
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
|
||||
.eq(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
// .eq(GroupPlate::getPcsn, w.getPcsn())
|
||||
// .eq(GroupPlate::getMaterial_id, materialbase.getMaterial_id())
|
||||
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库")));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
if (!TaskStatus.CREATE.getCode().equals(taskObj.getTask_status())) {
|
||||
throw new BadRequestException("任务状态必须为生成才能取消任务");
|
||||
}
|
||||
this.cancelTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
/**
|
||||
* 解包区的任务
|
||||
* @Author: lyd
|
||||
* @Date: 2025/7/22
|
||||
*/
|
||||
package org.nl.wms.sch_manage.service.util.tasks.jb;
|
||||
@@ -169,18 +169,6 @@ export default {
|
||||
this.storlist = res
|
||||
})
|
||||
},
|
||||
queryMaterials() {
|
||||
this.queryFlag = !this.queryFlag
|
||||
if (this.queryFlag) {
|
||||
this.queryInfo = '库存顺序'
|
||||
this.crud.url = 'api/pdmBdWorkorder/materials'
|
||||
this.crud.toQuery()
|
||||
} else {
|
||||
this.queryInfo = '物料顺序'
|
||||
this.crud.url = 'api/mdBaseMaterial'
|
||||
this.crud.toQuery()
|
||||
}
|
||||
},
|
||||
handleSelectionChange(val, row) {
|
||||
if (val.length > 1) {
|
||||
this.$refs.table.clearSelection()
|
||||
|
||||
Reference in New Issue
Block a user