diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/controller/PdaSmallBoxInController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/controller/PdaSmallBoxInController.java new file mode 100644 index 0000000..757fc56 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/controller/PdaSmallBoxInController.java @@ -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; + +/** + *

+ * 料箱入库 + *

+ * + * @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 confirmIn(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaSmallBoxInService.confirmIn(whereJson), HttpStatus.OK); + } + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/controller/PdaSmallBoxPublicController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/controller/PdaSmallBoxPublicController.java new file mode 100644 index 0000000..e81451e --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/controller/PdaSmallBoxPublicController.java @@ -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; + +/** + *

+ * 平板小料箱公共接口 控制层 + *

+ * + * @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 queryGroupInfo(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(PdaResponse.requestParamOk(pdaSmallBoxPublicService.queryGroupInfo(whereJson)), HttpStatus.OK); + } + + @PostMapping("/querySectCode") + @Log("查询库区") + @SaIgnore + public ResponseEntity querySectCode() { + return new ResponseEntity<>(PdaResponse.requestParamOk(pdaSmallBoxPublicService.querySectCode()), HttpStatus.OK); + } + + @PostMapping("/queryInBillType") + @Log("查询入库业务类型") + @SaIgnore + public ResponseEntity queryInBillType() { + return new ResponseEntity<>(PdaResponse.requestParamOk(pdaSmallBoxPublicService.queryInBillType()), HttpStatus.OK); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/controller/PdaVehicleInController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/controller/PdaVehicleInController.java new file mode 100644 index 0000000..db6d91f --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/controller/PdaVehicleInController.java @@ -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; + +/** + *

+ * 空载具入库 + *

+ * + * @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 vehicleIn(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaVehicleInService.vehicleIn(whereJson), HttpStatus.OK); + } + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/controller/PdaVehicleOutController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/controller/PdaVehicleOutController.java new file mode 100644 index 0000000..e7013e0 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/controller/PdaVehicleOutController.java @@ -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; + +/** + *

+ * 空载具出库 + *

+ * + * @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 vehicleOut(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaVehicleOutService.vehicleOut(whereJson), HttpStatus.OK); + } + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/PdaSmallBoxInService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/PdaSmallBoxInService.java new file mode 100644 index 0000000..d08a0f1 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/PdaSmallBoxInService.java @@ -0,0 +1,43 @@ +package org.nl.wms.pda.smallbox_management.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.pda.util.PdaResponse; + +/** + *

+ * 平板料箱入库入库 服务类 + *

+ * + * @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); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/PdaSmallBoxPublicService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/PdaSmallBoxPublicService.java new file mode 100644 index 0000000..1ac224f --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/PdaSmallBoxPublicService.java @@ -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; + +/** + *

+ * 平板小料箱公共接口 服务类 + *

+ * + * @author Liuxy + * @since 2025-09-03 + */ +public interface PdaSmallBoxPublicService { + + /** + * 查询组盘信息 + * @param whereJSON { + * storagevehicle_code: 载具编码 + * } + * @return List + */ + List queryGroupInfo(JSONObject whereJSON); + + /** + * 查询库区 + * @return PdaResponse + */ + PdaResponse querySectCode(); + + /** + * 查询入库业务类型 + * @return PdaResponse + */ + PdaResponse queryInBillType(); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/PdaVehicleInService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/PdaVehicleInService.java new file mode 100644 index 0000000..f7f0148 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/PdaVehicleInService.java @@ -0,0 +1,26 @@ +package org.nl.wms.pda.smallbox_management.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.pda.util.PdaResponse; + +/** + *

+ * 平板空载具入库 服务类 + *

+ * + * @author Liuxy + * @since 2025-09-02 + */ +public interface PdaVehicleInService { + + /** + * + * @param whereJson { + * point_code: 入库点位 + * storagevehicle_code: 载具编码 + * sect_code: 库区编码 + * } + * @return PdaResponse + */ + PdaResponse vehicleIn(JSONObject whereJson); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/PdaVehicleOutService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/PdaVehicleOutService.java new file mode 100644 index 0000000..1fd459a --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/PdaVehicleOutService.java @@ -0,0 +1,26 @@ +package org.nl.wms.pda.smallbox_management.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.pda.util.PdaResponse; + +/** + *

+ * 平板空载具出库 服务类 + *

+ * + * @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); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/impl/PdaSmallBoxInServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/impl/PdaSmallBoxInServiceImpl.java new file mode 100644 index 0000000..827c8ac --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/impl/PdaSmallBoxInServiceImpl.java @@ -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.*; + +/** + *

+ * 平板料箱入库 实现类 + *

+ * + * @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 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 { + *

+ * } + */ + private void createSmallBoxIn(JSONObject whereJson) { + + List rows = whereJson.getJSONArray("rows").toJavaList(JSONObject.class); + JSONObject group = rows.get(0); + + // 组织主表数据 + Map 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 tableData = new ArrayList<>(); + HashMap 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 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().lambda() + .eq(IOStorInvDtl::getIostorinv_id, iostorinv_id) + ); + // 查找分配明细 + Map map = new HashMap<>(); + map.put("iostorinvdtl_id", dtlDao.getIostorinvdtl_id()); + List disDtl = iRawAssistIStorService.getDisDtl(map); + // 类型转换 + ArrayList 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 jsonMst = new HashMap<>(); + jsonMst.put("point_code", whereJson.getString("point_code")); + // 组织明细数据 + IOStorInvDtl dtlDao = ioStorInvDtlMapper.selectOne( + new QueryWrapper().lambda() + .eq(IOStorInvDtl::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + // 查找分配明细 + Map map = new HashMap<>(); + map.put("iostorinvdtl_id", dtlDao.getIostorinvdtl_id()); + List disDtl = iRawAssistIStorService.getDisDtl(map); + // 类型转换 + ArrayList 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().lambda() + .eq(Sectattr::getSect_code, sect_code) + ); + + return sectattr.getSect_id(); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/impl/PdaSmallBoxPublicServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/impl/PdaSmallBoxPublicServiceImpl.java new file mode 100644 index 0000000..3436463 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/impl/PdaSmallBoxPublicServiceImpl.java @@ -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; + +/** + *

+ * 平板小料箱公共接口 实现类 + *

+ * + * @author Liuxy + * @since 2025-09-03 + */ +@Service +public class PdaSmallBoxPublicServiceImpl implements PdaSmallBoxPublicService { + + /** + * 组盘mapper服务 + */ + @Autowired + private MdPbGroupplateMapper mdPbGroupplateMapper; + + @Override + public List 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()); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/impl/PdaVehicleInServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/impl/PdaVehicleInServiceImpl.java new file mode 100644 index 0000000..4c78229 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/impl/PdaVehicleInServiceImpl.java @@ -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; + +/** + *

+ * 平板空载具入库 实现类 + *

+ * + * @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(); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/impl/PdaVehicleOutServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/impl/PdaVehicleOutServiceImpl.java new file mode 100644 index 0000000..eae31c6 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/smallbox_management/service/impl/PdaVehicleOutServiceImpl.java @@ -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; + +/** + *

+ * 平板空载具出库 实现类 + *

+ * + * @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(); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PDAEnum.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PDAEnum.java new file mode 100644 index 0000000..306a178 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/util/PDAEnum.java @@ -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 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 entry : this.getCode().entrySet()) + if (entry.getValue().equals("code")) { + return entry.getValue(); + } + throw new BadRequestException(this.name() + "对应类型" + code + "未定义"); + } + + public List getDict() { + Map code = this.getCode(); + + List 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; + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java index 2783c55..516ca86 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/BackInTask.java @@ -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 diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/KwzdInTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/KwzdInTask.java new file mode 100644 index 0000000..c2cf0eb --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/KwzdInTask.java @@ -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; + +/** + *

+ * 库外站点入库任务类 + *

+ * + * @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().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().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() + .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 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); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java index a0df44c..aaee171 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java @@ -106,6 +106,11 @@ public class IOSConstant { */ public final static String CZW_POINT = "CZW01"; + /** + * 仓库ID + */ + public final static String STOR_ID = "1582991156504039424"; + /** * 物料id:焊丝(盘状) */ diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java index 48081e8..4a99329 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java @@ -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 getDict() { + Map code = this.getCode(); + + List 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; + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/MdPbGroupplateMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/MdPbGroupplateMapper.java index 86ca69d..8b9571f 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/MdPbGroupplateMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/MdPbGroupplateMapper.java @@ -36,4 +36,13 @@ public interface MdPbGroupplateMapper extends BaseMapper { * @return IPage */ IPage queryAllByPage(Page page, @Param("param") Map whereJson); + + /** + * 手持小料箱公共查询 + * @param whereJson { + * storagevehicle_code: 载具编码 + * } + * @return List + */ + List pdaQueryGroupInfo(@Param("param") JSONObject whereJson); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/MdPbGroupplateMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/MdPbGroupplateMapper.xml index 0ba8121..785a439 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/MdPbGroupplateMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/MdPbGroupplateMapper.xml @@ -54,4 +54,29 @@ ORDER BY late.create_time Desc + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/VehicleInServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/VehicleInServiceImpl.java index 1e162ed..c64c4a4 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/VehicleInServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/VehicleInServiceImpl.java @@ -131,7 +131,7 @@ public class VehicleInServiceImpl implements VehicleInService { } // 根据库区查询对应库位 - Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class) + List 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); } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/VehicleOutServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/VehicleOutServiceImpl.java index 89088c7..d1d9649 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/VehicleOutServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/VehicleOutServiceImpl.java @@ -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 = 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); } }