opt: LMS解包区、工单

This commit is contained in:
2025-08-18 10:38:41 +08:00
parent f073d52a13
commit 54fc3e6291
11 changed files with 269 additions and 45 deletions

View File

@@ -104,4 +104,16 @@ public class PdaJBController {
public ResponseEntity<Object> outRegion(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaJBService.outRegion(whereJson), HttpStatus.OK);
}
@PostMapping("/combination")
@Log("组盘")
@SaIgnore
public ResponseEntity<Object> combination(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaJBService.combination(whereJson), HttpStatus.OK);
}
@PostMapping("/suppList")
@Log("组盘")
@SaIgnore
public ResponseEntity<Object> suppList(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(pdaJBService.suppList(whereJson), HttpStatus.OK);
}
}

View File

@@ -58,4 +58,8 @@ public interface PdaJBService {
PdaResponse intoRegion(JSONObject param);
PdaResponse outRegion(JSONObject param);
PdaResponse combination(JSONObject param);
PdaResponse suppList(JSONObject param);
}

View File

@@ -9,19 +9,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.domain.vo.SelectItemVo;
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.IMdPbStoragevehicleinfoService;
import org.nl.wms.basedata_manage.service.ISectattrService;
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.MdPbStoragevehicleinfo;
import org.nl.wms.basedata_manage.service.dao.Sectattr;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.basedata_manage.service.*;
import org.nl.wms.basedata_manage.service.dao.*;
import org.nl.wms.pda_manage.sch_manage.service.GroupInfoPdaVo;
import org.nl.wms.pda_manage.sch_manage.service.PdaJBService;
import org.nl.wms.pda_manage.sch_manage.service.mapper.PdaJBMapper;
@@ -30,11 +25,13 @@ import org.nl.wms.pm_manage.service.IPdmBdWorkorderService;
import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder;
import org.nl.wms.record_manage.service.IMdPbRegionMemberService;
import org.nl.wms.record_manage.service.dao.MdPbRegionMember;
import org.nl.wms.sch_manage.enums.TaskFinishedTypeEnum;
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.TaskUtils;
import org.nl.wms.sch_manage.service.util.tasks.jb.JbUpAgvTask;
import org.nl.wms.system_manage.enums.TagNameEnum;
import org.nl.wms.system_manage.service.dict.ISysDictService;
@@ -64,6 +61,7 @@ import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
* @Author: lyd
@@ -114,6 +112,8 @@ public class PdaJBServiceImpl implements PdaJBService {
private RedissonClient redissonClient;
@Resource
private ISchBaseTaskService taskService;
@Resource
private IMdCsSupplierbaseService supplierbaseService;
@Override
public PdaResponse getOrderList(JSONObject whereJson) {
String flag = whereJson.getString("flag");
@@ -418,20 +418,27 @@ public class PdaJBServiceImpl implements PdaJBService {
if ("2".equals(res.getString("flag"))) {
throw new BadRequestException(res.getString("message"));
}
// 获取组盘信息
GroupPlate groupPlate = groupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStoragevehicle_code, vehicleCode)
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")));
if (ObjectUtil.isEmpty(groupPlate)) {
throw new BadRequestException("料桶:" + vehicleCode + " 未组盘,请先组盘!");
MdPbStoragevehicleinfo vehicleInfo = storagevehicleinfoService.getByCode(vehicleCode);
if (ObjectUtil.isEmpty(vehicleInfo)) {
throw new BadRequestException("载具:" + vehicleCode + " 号不存在请到LMS的载具维护中进行维护");
}
Structattr structattr = structattrService.getByCode(pointCode);
if (ObjectUtil.isEmpty(structattr)) {
throw new BadRequestException("仓位:" + pointCode + " 不存在!");
}
MdPbStoragevehicleinfo vehicleInfo = storagevehicleinfoService.getByCode(vehicleCode);
if (ObjectUtil.isEmpty(vehicleInfo)) {
throw new BadRequestException("载具:" + vehicleCode + " 的信息不存在!");
// 获取组盘信息
GroupPlate groupPlate = groupplateService.getOne(new LambdaQueryWrapper<GroupPlate>()
.eq(GroupPlate::getStoragevehicle_code, vehicleCode)
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")));
if (ObjectUtil.isEmpty(groupPlate)) {
structattr.setStoragevehicle_code(vehicleCode);
structattr.setStoragevehicle_type(vehicleInfo.getStoragevehicle_type());
structattr.setOccupancy_state(2);
TaskUtils.setUpdateByType(structattr, TaskFinishedTypeEnum.MANUAL_PDA);
structattrService.updateById(structattr);
return PdaResponse.requestOk("空桶进入设置成功!");
}
MdMeMaterialbase materialbase = materialbaseService.getById(groupPlate.getMaterial_id());
if (ObjectUtil.isEmpty(materialbase)) {
@@ -538,6 +545,9 @@ public class PdaJBServiceImpl implements PdaJBService {
throw new BadRequestException("设备:" + pointCode + " 不存在!");
}
MdPbStoragevehicleinfo vehicleInfo = storagevehicleinfoService.getByCode(tpCode);
if (ObjectUtil.isEmpty(vehicleInfo)) {
throw new BadRequestException("载具信息不存在!");
}
MdMeMaterialbase materialbase = materialbaseService.getById(workOrder.getMaterial_id());
if (ObjectUtil.isEmpty(materialbase)) {
throw new BadRequestException("物料【" + workOrder.getMaterial_id() + "】不存在!");
@@ -637,11 +647,16 @@ public class PdaJBServiceImpl implements PdaJBService {
@Override
public PdaResponse jbGetLtInfo(JSONObject param) {
String vehicleCode = param.getString("vehicle_code");
String struct_code = param.getString("struct_code");
List<GroupInfoPdaVo> groups = pdaJBMapper.getGroupInfoByVehicle(vehicleCode, "01");
if (groups.size() > 1) {
throw new BadRequestException("组盘信息错误!");
}
return PdaResponse.requestParamOk(groups.size() > 0 ? groups.get(0) : null);
Structattr struct = structattrService.findByCode(struct_code);
String message = "当前位置是" + (1 == struct.getOccupancy_state()
? "空位" : 2 == struct.getOccupancy_state() ? "空载具"
: "有料,但是找不到对应的组盘信息");
return PdaResponse.requestParamOk(groups.size() > 0 ? groups.get(0) : message);
}
@Override
@@ -681,7 +696,7 @@ public class PdaJBServiceImpl implements PdaJBService {
@Override
public PdaResponse intoRegion(JSONObject param) {
String regionCode = param.getString("region_code");
String nickname = param.getString("nickname");
String nickname = SecurityUtils.getCurrentNickName();
MdPbRegionMember pbRegionMember = regionMemberService.getOne(new LambdaQueryWrapper<MdPbRegionMember>()
.eq(MdPbRegionMember::getRegion_code, regionCode)
.eq(MdPbRegionMember::getInto_member, nickname)
@@ -703,7 +718,7 @@ public class PdaJBServiceImpl implements PdaJBService {
public PdaResponse outRegion(JSONObject param) {
// region_code、nickname、rows
String regionCode = param.getString("region_code");
String nickname = param.getString("nickname");
String nickname = SecurityUtils.getCurrentNickName();
JSONArray rows = param.getJSONArray("rows");
List<MdPbRegionMember> memberRecords;
if (rows.size() > 0) {
@@ -726,6 +741,58 @@ public class PdaJBServiceImpl implements PdaJBService {
return PdaResponse.requestOk();
}
@Override
public PdaResponse combination(JSONObject param) {
// vehicle_code、material_id、pcsn、supp_code、supp_name、single_weight
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
String tpCode = param.getString("vehicle_code");
String pcsn = param.getString("pcsn");
String material_id = param.getString("material_id");
String supp_code = param.getString("supp_code");
String supp_name = param.getString("supp_name");
String single_weight = param.getString("single_weight");
MdPbStoragevehicleinfo vehicleInfo = storagevehicleinfoService.getByCode(tpCode);
if (ObjectUtil.isEmpty(vehicleInfo)) {
throw new BadRequestException("载具信息不存在!");
}
MdMeMaterialbase materialbase = materialbaseService.getById(material_id);
if (ObjectUtil.isEmpty(materialbase)) {
throw new BadRequestException("物料不存在!");
}
GroupPlate groupPlate = new GroupPlate();
groupPlate.setGroup_id(IdUtil.getStringId());
groupPlate.setStoragevehicle_code(tpCode);
// 料桶类型根据工单,工单是根据点位
groupPlate.setStoragevehicle_type(vehicleInfo.getStoragevehicle_type());
groupPlate.setMaterial_id(material_id);
groupPlate.setQty_unit_id("11");
groupPlate.setQty_unit_name("kg");
groupPlate.setFrozen_qty(BigDecimal.ZERO);
groupPlate.setStatus(IOSEnum.GROUP_PLATE_STATUS.code("组盘"));
groupPlate.setCreate_id(currentUserId);
groupPlate.setCreate_name(nickName);
groupPlate.setCreate_time(now);
groupPlate.setPcsn(pcsn);
groupPlate.setQty(new BigDecimal(single_weight));
groupPlate.setSupp_code(supp_code);
groupPlate.setSupp_name(supp_name);
groupplateService.save(groupPlate);
return PdaResponse.requestOk();
}
@Override
public PdaResponse suppList(JSONObject param) {
List<MdCsSupplierbase> list = supplierbaseService.list();
List<SelectItemVo> collect = list.stream().map(p -> SelectItemVo
.builder()
.text(p.getSupp_name())
.value(p.getSupp_code())
.build()).collect(Collectors.toList());
return PdaResponse.requestParamOk(collect);
}
private Map<String, Object> buildTaskData(String pointCode, String workorderId, String invId) {
Map<String, Object> jsonMst = new HashMap<>();
// ru库点

View File

@@ -40,6 +40,17 @@ public class PdaResponse<T> {
.build();
}
/**
* 带数据反馈
* @return ErpResponse
*/
public static PdaResponse requestOk(String message) {
return PdaResponse.builder()
.code("200")
.message(message)
.build();
}
/**
* 带数据反馈
* @return ErpResponse

View File

@@ -59,7 +59,18 @@ public class PdmBdWorkorderController {
pdmBdWorkorderService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/submits")
@Log("开工")
public ResponseEntity<Object> submits(@RequestBody PdmBdWorkorder entity) {
pdmBdWorkorderService.submits(entity);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@PostMapping("/loadComplete")
@Log("上料完成")
public ResponseEntity<Object> loadComplete(@RequestBody PdmBdWorkorder entity) {
pdmBdWorkorderService.loadComplete(entity);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@PostMapping("/forceFinish")
@Log("强制完工")
public ResponseEntity<Object> forceFinish(@RequestBody PdmBdWorkorder entity) {

View File

@@ -26,7 +26,7 @@ public enum WorkOrderStatusEnum {
/**
* 暂停 x
*/
STOP("4", "暂停"),
STOP("4", "等待下料"),
/**
* 完成
*/

View File

@@ -78,4 +78,12 @@ public interface IPdmBdWorkorderService extends IService<PdmBdWorkorder> {
* @return
*/
IPage<GroupPlate> getStockMaterial(PdmBdWorkorderQuery entity, PageQuery pageQuery);
/**
* 开工
* @param entity
*/
void submits(PdmBdWorkorder entity);
void loadComplete(PdmBdWorkorder entity);
}

View File

@@ -17,14 +17,17 @@ import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.CommonUtils;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.pda_manage.sch_manage.service.PdaJBService;
import org.nl.wms.pm_manage.enums.WorkOrderStatusEnum;
import org.nl.wms.pm_manage.service.IPdmBdWorkorderService;
import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder;
import org.nl.wms.pm_manage.service.dao.mapper.PdmBdWorkorderMapper;
import org.nl.wms.pm_manage.service.dto.PdmBdWorkorderQuery;
import org.nl.wms.sch_manage.enums.TaskFinishedTypeEnum;
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.util.TaskUtils;
import org.nl.wms.system_manage.service.notice.ISysNoticeService;
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
@@ -56,6 +59,8 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
private ISchBaseTaskService taskService;
@Autowired
private IMdPbGroupplateService groupplateService;
@Autowired
private PdaJBService pdaJBService;
@Override
public IPage<PdmBdWorkorder> queryAll(PdmBdWorkorderQuery query, PageQuery page) {
@@ -166,6 +171,31 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
return pages;
}
@Override
public void submits(PdmBdWorkorder entity) {
JSONObject param = new JSONObject();
param.put("area", "DDJBQ");
param.put("workorder_id", entity.getWorkorder_id());
param.put("point_code", entity.getPoint_code());
pdaJBService.callMaterial(param);
}
@Override
public void loadComplete(PdmBdWorkorder entity) {
PdmBdWorkorder order = getById(entity.getWorkorder_id());
if (ObjectUtil.isEmpty(order)) {
throw new BadRequestException("工单不存在!");
}
int enumCode = Integer.parseInt(WorkOrderStatusEnum.PRODUCING.getCode());
int orderStatus = Integer.parseInt(order.getWorkorder_status());
if (enumCode <= orderStatus) {
throw new BadRequestException("工单状态不是未生产或者执行中!");
}
order.setWorkorder_status(WorkOrderStatusEnum.STOP.getCode());
TaskUtils.setUpdateByType(order, TaskFinishedTypeEnum.MANUAL_PC);
updateById(order);
}
/**
* 判断工单是否下发、当天工单
* 判断逻辑不能过于复杂,因此提取出来

View File

@@ -5,6 +5,8 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.pm_manage.service.dao.PdmBdWorkorder;
import org.nl.wms.sch_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
@@ -104,4 +106,53 @@ public class TaskUtils {
setUpdateByPC(groupPlate);
}
}
public static void setUpdateByAcs(PdmBdWorkorder order) {
order.setUpdate_id(GeneralDefinition.ACS_ID);
order.setUpdate_name(GeneralDefinition.ACS_NAME);
order.setUpdate_time(DateUtil.now());
}
public static void setUpdateByPC(PdmBdWorkorder order) {
order.setUpdate_id(SecurityUtils.getCurrentUserId());
order.setUpdate_name(SecurityUtils.getCurrentNickName());
order.setUpdate_time(DateUtil.now());
}
/**
* 根据类型去判断谁修改的
* @param order
* @param taskFinishedType
*/
public static void setUpdateByType(PdmBdWorkorder order, TaskFinishedTypeEnum taskFinishedType) {
if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) {
setUpdateByAcs(order);
} else {
setUpdateByPC(order);
}
}
public static void setUpdateByAcs(Structattr order) {
order.setUpdate_id(GeneralDefinition.ACS_ID);
order.setUpdate_name(GeneralDefinition.ACS_NAME);
order.setUpdate_time(DateUtil.now());
}
public static void setUpdateByPC(Structattr order) {
order.setUpdate_id(SecurityUtils.getCurrentUserId());
order.setUpdate_name(SecurityUtils.getCurrentNickName());
order.setUpdate_time(DateUtil.now());
}
/**
* 根据类型去判断谁修改的
* @param order
* @param taskFinishedType
*/
public static void setUpdateByType(Structattr order, TaskFinishedTypeEnum taskFinishedType) {
if (taskFinishedType.equals(TaskFinishedTypeEnum.AUTO_ACS)) {
setUpdateByAcs(order);
} else {
setUpdateByPC(order);
}
}
}