add:手持功能
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package org.nl.wms.pda.smallbox_management.controller;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.pda.smallbox_management.service.PdaSmallBoxInService;
|
||||
import org.nl.wms.pda.smallbox_management.service.PdaVehicleOutService;
|
||||
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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 料箱入库
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-03
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/pdaSmallBox")
|
||||
@Slf4j
|
||||
public class PdaSmallBoxInController {
|
||||
|
||||
@Autowired
|
||||
private PdaSmallBoxInService pdaSmallBoxInService;
|
||||
|
||||
/**
|
||||
* 确认入库
|
||||
*/
|
||||
@PostMapping("/confirmIn")
|
||||
@Log("确认入库")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> confirmIn(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaSmallBoxInService.confirmIn(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package org.nl.wms.pda.smallbox_management.controller;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.pda.smallbox_management.service.PdaSmallBoxPublicService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 平板小料箱公共接口 控制层
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-03
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/pdaSmallBoxPublic")
|
||||
@Slf4j
|
||||
public class PdaSmallBoxPublicController {
|
||||
|
||||
@Autowired
|
||||
private PdaSmallBoxPublicService pdaSmallBoxPublicService;
|
||||
|
||||
@PostMapping("/queryGroupInfo")
|
||||
@Log("查询组盘记录")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryGroupInfo(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(PdaResponse.requestParamOk(pdaSmallBoxPublicService.queryGroupInfo(whereJson)), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/querySectCode")
|
||||
@Log("查询库区")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> querySectCode() {
|
||||
return new ResponseEntity<>(PdaResponse.requestParamOk(pdaSmallBoxPublicService.querySectCode()), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/queryInBillType")
|
||||
@Log("查询入库业务类型")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryInBillType() {
|
||||
return new ResponseEntity<>(PdaResponse.requestParamOk(pdaSmallBoxPublicService.queryInBillType()), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package org.nl.wms.pda.smallbox_management.controller;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.pda.smallbox_management.service.PdaVehicleInService;
|
||||
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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 空载具入库
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-02
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/pdaVehicleIn")
|
||||
@Slf4j
|
||||
public class PdaVehicleInController {
|
||||
|
||||
@Autowired
|
||||
private PdaVehicleInService pdaVehicleInService;
|
||||
|
||||
/**
|
||||
* 呼叫入库
|
||||
*/
|
||||
@PostMapping("/vehicleIn")
|
||||
@Log("呼叫入库")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> vehicleIn(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaVehicleInService.vehicleIn(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package org.nl.wms.pda.smallbox_management.controller;
|
||||
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.pda.smallbox_management.service.PdaVehicleOutService;
|
||||
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;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 空载具出库
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-03
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/pdaVehicleOut")
|
||||
@Slf4j
|
||||
public class PdaVehicleOutController {
|
||||
|
||||
@Autowired
|
||||
private PdaVehicleOutService pdaVehicleOutService;
|
||||
|
||||
/**
|
||||
* 呼叫出库
|
||||
*/
|
||||
@PostMapping("/vehicleOut")
|
||||
@Log("新增空载具入库任务")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> vehicleOut(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(pdaVehicleOutService.vehicleOut(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package org.nl.wms.pda.smallbox_management.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 平板料箱入库入库 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-03
|
||||
*/
|
||||
public interface PdaSmallBoxInService {
|
||||
/**
|
||||
* @param whereJson {
|
||||
* bill_type: 入库类型
|
||||
* point_code: 入库点位
|
||||
* rows: [
|
||||
* storagevehicle_code: 载具编码
|
||||
* group_id: 载具编码
|
||||
* material_id: 物料ID
|
||||
* material_code: 物料编码
|
||||
* material_name: 物料名称
|
||||
* pcsn: 批号
|
||||
* qty: 重量
|
||||
* produce_time: 生产日期
|
||||
* supp_code: 供应商编码
|
||||
* supp_name: 供应商名称
|
||||
* material_spec: 规格
|
||||
* material_model: 型号
|
||||
* quality_time_day: 有效期
|
||||
* execution_stand: 执行标准
|
||||
* quality_type: 品质类型
|
||||
* bake_num: 烘干次数
|
||||
* qty_unit_id: 计量单位标识
|
||||
* qty_unit_name: 计量单位名称
|
||||
* ]
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse confirmIn(JSONObject whereJson);
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
package org.nl.wms.pda.smallbox_management.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 平板小料箱公共接口 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-03
|
||||
*/
|
||||
public interface PdaSmallBoxPublicService {
|
||||
|
||||
/**
|
||||
* 查询组盘信息
|
||||
* @param whereJSON {
|
||||
* storagevehicle_code: 载具编码
|
||||
* }
|
||||
* @return List<JSONObject>
|
||||
*/
|
||||
List<JSONObject> queryGroupInfo(JSONObject whereJSON);
|
||||
|
||||
/**
|
||||
* 查询库区
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse querySectCode();
|
||||
|
||||
/**
|
||||
* 查询入库业务类型
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse queryInBillType();
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package org.nl.wms.pda.smallbox_management.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 平板空载具入库 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-02
|
||||
*/
|
||||
public interface PdaVehicleInService {
|
||||
|
||||
/**
|
||||
*
|
||||
* @param whereJson {
|
||||
* point_code: 入库点位
|
||||
* storagevehicle_code: 载具编码
|
||||
* sect_code: 库区编码
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse vehicleIn(JSONObject whereJson);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package org.nl.wms.pda.smallbox_management.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 平板空载具出库 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-03
|
||||
*/
|
||||
public interface PdaVehicleOutService {
|
||||
|
||||
/**
|
||||
* @param whereJson {
|
||||
* point_code: 出库点位
|
||||
* sect_code: 库区编码
|
||||
* out_qty: 出库数量
|
||||
* vehicle_type: 载具类型
|
||||
* }
|
||||
* @return PdaResponse
|
||||
*/
|
||||
PdaResponse vehicleOut(JSONObject whereJson);
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
package org.nl.wms.pda.smallbox_management.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.nl.wms.basedata_manage.service.dao.Sectattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.SectattrMapper;
|
||||
import org.nl.wms.pda.smallbox_management.service.PdaSmallBoxInService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.KwzdInTask;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
|
||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 平板料箱入库 实现类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-03
|
||||
*/
|
||||
@Service
|
||||
public class PdaSmallBoxInServiceImpl implements PdaSmallBoxInService {
|
||||
|
||||
/**
|
||||
* 入库服务
|
||||
*/
|
||||
@Autowired
|
||||
private IRawAssistIStorService iRawAssistIStorService;
|
||||
|
||||
/**
|
||||
* 入库明细服务
|
||||
*/
|
||||
@Autowired
|
||||
private IOStorInvDtlMapper ioStorInvDtlMapper;
|
||||
|
||||
/**
|
||||
* 库外站点入库任务类
|
||||
*/
|
||||
@Autowired
|
||||
private KwzdInTask kwzdInTask;
|
||||
|
||||
/**
|
||||
* 库区mapper
|
||||
*/
|
||||
@Autowired
|
||||
private SectattrMapper sectattrMapper;
|
||||
|
||||
@Override
|
||||
public PdaResponse confirmIn(JSONObject whereJson) {
|
||||
// 判断点位是否是称重位:是:直接生成入库任务;否:生成点对点搬运任务
|
||||
if (whereJson.getString("point_code").equals(IOSConstant.CZW_POINT)) {
|
||||
this.createSmallBoxIn(whereJson);
|
||||
} else {
|
||||
// 创建库外站点任务
|
||||
List<JSONObject> rows = whereJson.getJSONArray("rows").toJavaList(JSONObject.class);
|
||||
JSONObject group = rows.get(0);
|
||||
|
||||
JSONObject paramTask = new JSONObject();
|
||||
paramTask.put("point_code1", whereJson.getString("point_code"));
|
||||
paramTask.put("point_code2", IOSConstant.CZW_POINT);
|
||||
paramTask.put("vehicle_code", group.getString("storagevehicle_code"));
|
||||
paramTask.put("material_id", group.getString("material_id"));
|
||||
paramTask.put("material_qty", group.getString("qty"));
|
||||
kwzdInTask.create(paramTask);
|
||||
}
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
|
||||
/**
|
||||
* 下发入库任务
|
||||
*
|
||||
* @param whereJson {
|
||||
* <p>
|
||||
* }
|
||||
*/
|
||||
private void createSmallBoxIn(JSONObject whereJson) {
|
||||
|
||||
List<JSONObject> rows = whereJson.getJSONArray("rows").toJavaList(JSONObject.class);
|
||||
JSONObject group = rows.get(0);
|
||||
|
||||
// 组织主表数据
|
||||
Map<String, Object> jsonMst = new HashMap<>();
|
||||
// 仓库默认焊材库
|
||||
jsonMst.put("stor_id", IOSConstant.STOR_ID);
|
||||
jsonMst.put("bill_status", IOSEnum.BILL_STATUS.code("生成"));
|
||||
jsonMst.put("total_qty", group.getString("qty"));
|
||||
jsonMst.put("detail_count", 1);
|
||||
jsonMst.put("bill_type", whereJson.getString("bill_type"));
|
||||
jsonMst.put("biz_date", DateUtil.now());
|
||||
|
||||
// 组织明细数据
|
||||
ArrayList<HashMap> tableData = new ArrayList<>();
|
||||
HashMap<String, String> dtl = new HashMap<>();
|
||||
dtl.put("storagevehicle_code", group.getString("storagevehicle_code"));
|
||||
dtl.put("pcsn", group.getString("pcsn"));
|
||||
dtl.put("qty_unit_id", group.getString("qty_unit_id"));
|
||||
dtl.put("qty_unit_name", group.getString("qty_unit_name"));
|
||||
dtl.put("qty", group.getString("qty"));
|
||||
dtl.put("material_code", group.getString("material_code"));
|
||||
dtl.put("material_name", group.getString("material_name"));
|
||||
dtl.put("material_id", group.getString("material_id"));
|
||||
dtl.put("plan_qty", group.getString("qty"));
|
||||
// 调用新增
|
||||
tableData.add(dtl);
|
||||
jsonMst.put("tableData", tableData);
|
||||
String iostorinv_id = iRawAssistIStorService.insertDtl(jsonMst);
|
||||
|
||||
// 调用分配
|
||||
// 组织主数据
|
||||
Map<String, Object> jsonDivMst = new HashMap<>();
|
||||
jsonDivMst.put("checked", true);
|
||||
jsonDivMst.put("sect_id", getSect_code(group.getString("quality_type")));
|
||||
jsonDivMst.put("stor_id", IOSConstant.STOR_ID);
|
||||
// 组织明细数据
|
||||
IOStorInvDtl dtlDao = ioStorInvDtlMapper.selectOne(
|
||||
new QueryWrapper<IOStorInvDtl>().lambda()
|
||||
.eq(IOStorInvDtl::getIostorinv_id, iostorinv_id)
|
||||
);
|
||||
// 查找分配明细
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("iostorinvdtl_id", dtlDao.getIostorinvdtl_id());
|
||||
List<IOStorInvDisDto> disDtl = iRawAssistIStorService.getDisDtl(map);
|
||||
// 类型转换
|
||||
ArrayList<LinkedHashMap> tableMater = new ArrayList<>();
|
||||
disDtl.forEach(item -> {
|
||||
tableMater.add(JSONObject.parseObject(JSONObject.toJSONString(item), LinkedHashMap.class));
|
||||
});
|
||||
jsonDivMst.put("tableMater", tableMater);
|
||||
// 调用分配
|
||||
iRawAssistIStorService.divStruct(jsonDivMst);
|
||||
|
||||
// 返回数据
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("storagevehicle_code", disDtl.get(0).getStoragevehicle_code());
|
||||
result.put("point_code", IOSConstant.CZW_POINT);
|
||||
result.put("sect_id", disDtl.get(0).getSect_id());
|
||||
result.put("iostorinv_id", disDtl.get(0).getIostorinv_id());
|
||||
// 下发入库任务
|
||||
sendTask(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 下发入库任务
|
||||
*
|
||||
* @param whereJson {
|
||||
* storagevehicle_code:载具编码
|
||||
* point_code:点位编码
|
||||
* sect_id:库区
|
||||
* iostorinv_id: id
|
||||
* }
|
||||
*/
|
||||
private void sendTask(JSONObject whereJson) {
|
||||
// 组织主数据
|
||||
Map<String, Object> jsonMst = new HashMap<>();
|
||||
jsonMst.put("point_code", whereJson.getString("point_code"));
|
||||
// 组织明细数据
|
||||
IOStorInvDtl dtlDao = ioStorInvDtlMapper.selectOne(
|
||||
new QueryWrapper<IOStorInvDtl>().lambda()
|
||||
.eq(IOStorInvDtl::getIostorinv_id, whereJson.getString("iostorinv_id"))
|
||||
);
|
||||
// 查找分配明细
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("iostorinvdtl_id", dtlDao.getIostorinvdtl_id());
|
||||
List<IOStorInvDisDto> disDtl = iRawAssistIStorService.getDisDtl(map);
|
||||
// 类型转换
|
||||
ArrayList<LinkedHashMap> tableMater = new ArrayList<>();
|
||||
disDtl.forEach(item -> {
|
||||
tableMater.add(JSONObject.parseObject(JSONObject.toJSONString(item), LinkedHashMap.class));
|
||||
});
|
||||
jsonMst.put("tableMater", tableMater);
|
||||
|
||||
iRawAssistIStorService.divPoint(jsonMst);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据品质类型获取库区
|
||||
* @param quality_type 品质类型
|
||||
* @return sect_id
|
||||
*/
|
||||
private String getSect_code(String quality_type) {
|
||||
String sect_code = "";
|
||||
switch (quality_type) {
|
||||
case "1" :
|
||||
sect_code = IOSEnum.SECT_CODE.code("待检区");
|
||||
break;
|
||||
case "2" :
|
||||
sect_code = IOSEnum.SECT_CODE.code("合格区");
|
||||
break;
|
||||
case "3" :
|
||||
sect_code = IOSEnum.SECT_CODE.code("不合格区");
|
||||
break;
|
||||
}
|
||||
Sectattr sectattr = sectattrMapper.selectOne(
|
||||
new QueryWrapper<Sectattr>().lambda()
|
||||
.eq(Sectattr::getSect_code, sect_code)
|
||||
);
|
||||
|
||||
return sectattr.getSect_id();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package org.nl.wms.pda.smallbox_management.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.pda.smallbox_management.service.PdaSmallBoxPublicService;
|
||||
import org.nl.wms.pda.util.PDAEnum;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 平板小料箱公共接口 实现类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-03
|
||||
*/
|
||||
@Service
|
||||
public class PdaSmallBoxPublicServiceImpl implements PdaSmallBoxPublicService {
|
||||
|
||||
/**
|
||||
* 组盘mapper服务
|
||||
*/
|
||||
@Autowired
|
||||
private MdPbGroupplateMapper mdPbGroupplateMapper;
|
||||
|
||||
@Override
|
||||
public List<JSONObject> queryGroupInfo(JSONObject whereJSON) {
|
||||
return mdPbGroupplateMapper.pdaQueryGroupInfo(whereJSON);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse querySectCode() {
|
||||
return PdaResponse.requestParamOk(PDAEnum.SECT_CODE.getDict());
|
||||
}
|
||||
|
||||
@Override
|
||||
public PdaResponse queryInBillType() {
|
||||
return PdaResponse.requestParamOk(PDAEnum.IN_BILL_TYPE.getDict());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package org.nl.wms.pda.smallbox_management.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.pda.smallbox_management.service.PdaVehicleInService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.warehouse_management.service.VehicleInService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 平板空载具入库 实现类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-02
|
||||
*/
|
||||
@Service
|
||||
public class PdaVehicleInServiceImpl implements PdaVehicleInService {
|
||||
|
||||
/**
|
||||
* 空载具入库服务类
|
||||
*/
|
||||
@Resource
|
||||
private VehicleInService vehicleInService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse vehicleIn(JSONObject whereJson) {
|
||||
vehicleInService.create(whereJson);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package org.nl.wms.pda.smallbox_management.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.nl.wms.pda.smallbox_management.service.PdaVehicleOutService;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.warehouse_management.service.VehicleOutService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 平板空载具出库 实现类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-03
|
||||
*/
|
||||
@Service
|
||||
public class PdaVehicleOutServiceImpl implements PdaVehicleOutService {
|
||||
|
||||
@Autowired
|
||||
private VehicleOutService vehicleOutService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public PdaResponse vehicleOut(JSONObject whereJson) {
|
||||
vehicleOutService.create(whereJson);
|
||||
return PdaResponse.requestOk();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package org.nl.wms.pda.util;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.MapOf;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 手持枚举类
|
||||
*
|
||||
* @author Liuxy
|
||||
* @Date 2025/05/23
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum PDAEnum {
|
||||
|
||||
// 入库业务类型
|
||||
IN_BILL_TYPE(MapOf.of("收货入库","0001", "退料入库","0002", "其他入库", "0009"
|
||||
)),
|
||||
|
||||
// 库区编码
|
||||
SECT_CODE(MapOf.of("合格区", "HG01", "待检区", "DJ01", "不合格区", "BHG01")),
|
||||
|
||||
;
|
||||
|
||||
private Map<String, String> code;
|
||||
|
||||
public String code(String desc) {
|
||||
String code = this.getCode().get(desc);
|
||||
if (StringUtils.isNotEmpty(code)) {
|
||||
return code;
|
||||
}
|
||||
throw new BadRequestException(this.name() + "对应类型" + desc + "未定义");
|
||||
}
|
||||
|
||||
public String check(String code) {
|
||||
for (Map.Entry<String, String> entry : this.getCode().entrySet())
|
||||
if (entry.getValue().equals("code")) {
|
||||
return entry.getValue();
|
||||
}
|
||||
throw new BadRequestException(this.name() + "对应类型" + code + "未定义");
|
||||
}
|
||||
|
||||
public List<JSONObject> getDict() {
|
||||
Map<String, String> code = this.getCode();
|
||||
|
||||
List<JSONObject> list = new ArrayList<>();
|
||||
for (String key : code.keySet()) {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("label", key);
|
||||
json.put("value", code.get(key));
|
||||
list.add(json);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
||||
@@ -129,10 +129,7 @@ public class BackInTask extends AbstractTask {
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
rawAssistIStorService.taskFinish(taskObj);
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark("已完成");
|
||||
taskService.updateById(taskObj);
|
||||
this.finishTask(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,223 @@
|
||||
package org.nl.wms.sch_manage.service.util.tasks;
|
||||
|
||||
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 com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.config.IdUtil;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.pda.smallbox_management.service.PdaSmallBoxInService;
|
||||
import org.nl.wms.pda.smallbox_management.service.PdaSmallBoxPublicService;
|
||||
import org.nl.wms.sch_manage.enums.TaskEnum;
|
||||
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.sch_manage.service.util.TaskType;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
|
||||
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 库外站点入库任务类
|
||||
* </p>
|
||||
*
|
||||
* @author Liuxy
|
||||
* @since 2025-09-03
|
||||
*/
|
||||
@Component(value = "KwzdInTask")
|
||||
@TaskType("KwzdInTask")
|
||||
public class KwzdInTask extends AbstractTask {
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
/**
|
||||
* 平板小料箱公共接口服务
|
||||
*/
|
||||
@Resource
|
||||
private PdaSmallBoxPublicService pdaSmallBoxPublicService;
|
||||
|
||||
/**
|
||||
* 点位服务
|
||||
*/
|
||||
@Autowired
|
||||
private ISchBasePointService iSchBasePointService;
|
||||
|
||||
/**
|
||||
* 小料箱入库服务
|
||||
*/
|
||||
@Autowired
|
||||
private PdaSmallBoxInService pdaSmallBoxInService;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setTask_status(TaskStatus.CREATE.getCode());
|
||||
task.setConfig_code(KwzdInTask.class.getSimpleName());
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setMaterial_id(json.getString("material_id"));
|
||||
task.setMaterial_qty(json.getBigDecimal("material_qty"));
|
||||
task.setGroup_id(json.getString("group_id"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setTask_type(TaskEnum.TASK_TYPE.code("料箱"));
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
taskService.save(task);
|
||||
|
||||
// 下发任务
|
||||
this.sendTaskOne(task.getTask_id());
|
||||
return task.getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
|
||||
// 组织下发给acs的数据
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_id(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
acsTaskDto.setPriority(taskDao.getPriority());
|
||||
acsTaskDto.setVehicle_code(taskDao.getVehicle_code());
|
||||
acsTaskDto.setTask_type("1");
|
||||
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@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);
|
||||
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark("已完成");
|
||||
taskService.updateById(taskObj);
|
||||
// 更新起点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.set(SchBasePoint::getVehicle_code, "")
|
||||
.set(SchBasePoint::getIng_task_code, "")
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("空位"))
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
|
||||
);
|
||||
// 更新终点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code())
|
||||
.set(SchBasePoint::getIng_task_code, taskObj.getTask_id())
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有箱有料"))
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
|
||||
);
|
||||
this.taskConfirm(taskObj.getTask_code());
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
// 取消任务
|
||||
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
|
||||
.set(SchBaseTask::getIs_delete, BaseDataEnum.IS_YES_NOT.code("是"))
|
||||
.set(SchBaseTask::getTask_status, TaskStatus.CANCELED.getCode())
|
||||
.set(SchBaseTask::getRemark, "已取消")
|
||||
.eq(SchBaseTask::getTask_id, taskObj.getTask_id())
|
||||
);
|
||||
|
||||
// 更新任务状态
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark("已取消");
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void taskConfirm(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
// 查询组盘信息
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("storagevehicle_code", taskObj.getVehicle_code());
|
||||
List<JSONObject> rows = pdaSmallBoxPublicService.queryGroupInfo(json);
|
||||
|
||||
if (ObjectUtil.isEmpty(rows)) {
|
||||
throw new BadRequestException("此载具没有生成状态的组盘信息【"+taskObj.getVehicle_code()+"】");
|
||||
}
|
||||
|
||||
// 组织入库数据
|
||||
JSONObject jsonInParam = new JSONObject();
|
||||
jsonInParam.put("bill_type",IOSEnum.IN_BILL_TYPE.code("收货入库"));
|
||||
jsonInParam.put("point_code", IOSConstant.CZW_POINT);
|
||||
jsonInParam.put("rows", rows);
|
||||
|
||||
// 调用平板服务
|
||||
pdaSmallBoxInService.confirmIn(jsonInParam);
|
||||
}
|
||||
}
|
||||
@@ -106,6 +106,11 @@ public class IOSConstant {
|
||||
*/
|
||||
public final static String CZW_POINT = "CZW01";
|
||||
|
||||
/**
|
||||
* 仓库ID
|
||||
*/
|
||||
public final static String STOR_ID = "1582991156504039424";
|
||||
|
||||
/**
|
||||
* 物料id:焊丝(盘状)
|
||||
*/
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package org.nl.wms.warehouse_management.enums;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.MapOf;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -133,4 +136,18 @@ public enum IOSEnum {
|
||||
}
|
||||
throw new BadRequestException(this.name() + "对应类型" + code + "未定义");
|
||||
}
|
||||
|
||||
public List<JSONObject> getDict() {
|
||||
Map<String, String> code = this.getCode();
|
||||
|
||||
List<JSONObject> list = new ArrayList<>();
|
||||
for (String key : code.keySet()) {
|
||||
JSONObject json = new JSONObject();
|
||||
json.put("label", key);
|
||||
json.put("value", code.get(key));
|
||||
list.add(json);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,4 +36,13 @@ public interface MdPbGroupplateMapper extends BaseMapper<GroupPlate> {
|
||||
* @return IPage<StIvtMoveinv>
|
||||
*/
|
||||
IPage<JSONObject> queryAllByPage(Page<JSONObject> page, @Param("param") Map whereJson);
|
||||
|
||||
/**
|
||||
* 手持小料箱公共查询
|
||||
* @param whereJson {
|
||||
* storagevehicle_code: 载具编码
|
||||
* }
|
||||
* @return List<JSONObject>
|
||||
*/
|
||||
List<JSONObject> pdaQueryGroupInfo(@Param("param") JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -54,4 +54,29 @@
|
||||
</where>
|
||||
ORDER BY late.create_time Desc
|
||||
</select>
|
||||
|
||||
<select id="pdaQueryGroupInfo" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT
|
||||
late.*,
|
||||
mater.material_code,
|
||||
mater.material_name,
|
||||
mater.material_spec,
|
||||
mater.material_model,
|
||||
mater.quality_time AS quality_time_day,
|
||||
supp.supp_name
|
||||
FROM
|
||||
md_pb_groupplate late
|
||||
INNER JOIN md_me_materialbase mater ON mater.material_id = late.material_id
|
||||
INNER JOIN md_cs_supplierbase supp ON supp.supp_code = late.supp_code
|
||||
<where>
|
||||
late.status = '1'
|
||||
|
||||
<if test="param.storagevehicle_code != null and param.storagevehicle_code != ''">
|
||||
AND
|
||||
late.storagevehicle_code = #{param.storagevehicle_code}
|
||||
</if>
|
||||
</where>
|
||||
|
||||
ORDER BY late.create_time Desc
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -131,7 +131,7 @@ public class VehicleInServiceImpl implements VehicleInService {
|
||||
}
|
||||
|
||||
// 根据库区查询对应库位
|
||||
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class)
|
||||
List<Structattr> structattr = iStructattrService.list(new LambdaQueryWrapper<>(Structattr.class)
|
||||
.eq(Structattr::getSect_code, whereJson.getString("sect_code"))
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.eq(Structattr::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
@@ -143,6 +143,6 @@ public class VehicleInServiceImpl implements VehicleInService {
|
||||
if (ObjectUtil.isEmpty(structattr)) {
|
||||
throw new BadRequestException("未找到满足的仓位");
|
||||
}
|
||||
return structattr;
|
||||
return structattr.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,7 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -88,7 +89,7 @@ public class VehicleOutServiceImpl implements VehicleOutService {
|
||||
private Structattr autoDivStruct(JSONObject whereJson) {
|
||||
|
||||
// 根据库区查询对应载具
|
||||
Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class)
|
||||
List<Structattr> structattr = iStructattrService.list(new LambdaQueryWrapper<>(Structattr.class)
|
||||
.eq(Structattr::getSect_code, whereJson.getString("sect_code"))
|
||||
.eq(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.eq(Structattr::getIs_delete, IOSConstant.IS_DELETE_NO)
|
||||
@@ -101,6 +102,6 @@ public class VehicleOutServiceImpl implements VehicleOutService {
|
||||
if (ObjectUtil.isEmpty(structattr)) {
|
||||
throw new BadRequestException("未找到满足的仓位");
|
||||
}
|
||||
return structattr;
|
||||
return structattr.get(0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user