物流输送线接口提交

liweidong
liweidong-hj 1 month ago
parent 076604f91c
commit 077946fe06
  1. 4
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 8
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/feign/IPartClient.java
  3. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartController.java
  4. 16
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsTaskBillController.java
  5. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/feign/PartClient.java
  6. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/BsFillingDetailMapper.java
  7. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/DsPartMapper.java
  8. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/FillingDetailMapper.xml
  9. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/mapper/PartMapper.xml
  10. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IBsFillingDetailService.java
  11. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java
  12. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/BsFillingDetailServiceImpl.java
  13. 52
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
  14. 166
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/PipelineController.java

@ -12,9 +12,9 @@ public interface LauncherConstant {
/**
* nacos 命名空间
*/
String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e";
// String NACOS_NAMESPACE = "feaf627f-a847-463b-8b73-24a0538f526e";
// 生产环境
// String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401";
String NACOS_NAMESPACE = "db3f4da1-ae19-4104-8c17-6d9b8f069401";
// 测试环境
// String NACOS_NAMESPACE = "6cdd0310-0d61-4f54-891a-7fb06224d9b8";

@ -26,6 +26,8 @@ public interface IPartClient {
String REWORK_TASK = API_PREFIX + "/reworkTask";
String SYNC_PART = API_PREFIX + "/syncPart";
/**
* 获取零件信息
* @param partCode 零件号
@ -56,4 +58,10 @@ public interface IPartClient {
*/
@GetMapping(REWORK_TASK)
void reworkTask();
/**
* 零件同步
*/
@GetMapping(SYNC_PART)
void syncPart();
}

@ -33,6 +33,7 @@ import lombok.AllArgsConstructor;
import jakarta.validation.Valid;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.annotation.ApiLog;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.mp.support.Condition;
@ -115,8 +116,9 @@ public class DsPartController extends BladeController {
@PostMapping("/save")
@ApiOperationSupport(order = 4)
@Operation(summary = "新增", description = "传入dsPart")
public R syncPDMPart(@Valid @RequestBody DsPartEntity dsPart) {
return R.status(dsPartService.syncPdmPart(dsPart));
@ApiLog(value = "零件信息表 同步零件信息")
public R syncPDMPart() {
return R.status(dsPartService.syncPart());
}
/**

@ -40,6 +40,7 @@ import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.pojo.dto.DsTaskBillDTO;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.service.IBsFillingDetailService;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -70,6 +71,8 @@ public class DsTaskBillController extends BladeController {
private final IDsTaskBillService dsTaskBillService;
private final IBsFillingDetailService bsFillingDetailService;
/**
* 任务单表 详情
*/
@ -177,7 +180,7 @@ public class DsTaskBillController extends BladeController {
* 任务单表 新增
*/
@PostMapping("/handleDsTaskBill")
@ApiOperationSupport(order = 4)
@ApiOperationSupport(order = 11)
@Operation(summary = "处理特殊工艺任务")
public R handleDsTaskBill(@Valid @RequestBody DsTaskBillDTO dto) {
Long tbId = dto.getTbId();
@ -188,4 +191,15 @@ public class DsTaskBillController extends BladeController {
return R.status(dsTaskBillService.handleDsTaskBill(tbId,fillMemo,fillingDetailList,deleteIds));
}
/**
* 任务单表 详情
*/
@GetMapping("/listFillingDetail")
@ApiOperationSupport(order = 12)
@Operation(summary = "详情", description = "传入dsTaskBill")
public R listFillingDetail(@RequestParam Long busId) {
return R.data(bsFillingDetailService.listFillingDetail(busId,BsFillingDetailEntity.DS_TASK_BILL));
}
}

@ -45,5 +45,10 @@ public class PartClient implements IPartClient {
public void reworkTask() {
taskingService.reworkTask();
}
@Override
public void syncPart() {
partService.syncPart();
}
}

@ -45,4 +45,5 @@ import java.util.List;
public interface BsFillingDetailMapper extends BaseMapper<BsFillingDetailEntity> {
List<BsFillingDetailEntity> listFillingDetail(@Param("busId")Long busId, @Param("busType")String busType);
}

@ -35,6 +35,7 @@ import org.apache.ibatis.annotations.Param;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@ -145,4 +146,6 @@ public interface DsPartMapper extends BaseMapper<DsPartEntity> {
DsPartEntity selectByPartCodeAndVersion(@Param("partCode") String partCode, @Param("version")String version);
List<DsPartVersionVO> selectDsPartVersionByIds(@Param("ids") List<Long> idList);
List<DsPartEntity> selectPartByDate(@Param("startDate") Date startDate,@Param("endDate") Date endDate);
}

@ -19,9 +19,11 @@
<result column="UPDATE_USER" property="updateUser"/>
</resultMap>
<select id="listFillingDetail"
resultType="org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity">
select id, bus_id, bus_type, matter, process, create_time, create_user, create_dept, update_time, update_user, remarks, status, is_deleted
from BS_FILLING_DETAIL where IS_DELETED = 0 and BUS_ID = #{busId} and BUS_TYPE = #{busType}
</select>
</mapper>

@ -375,6 +375,11 @@
</foreach>
AND p.is_deleted = 0
</select>
<select id="selectPartByDate" resultType="org.springblade.desk.dashboard.pojo.entity.DsPartEntity">
SELECT * FROM P_RB_SYNC_PART
WHERE update_time BETWEEN TO_DATE(#{startDate}, 'yyyy-mm-dd hh24:mi:ss')
AND TO_DATE(#{endDate}, 'yyyy-mm-dd hh24:mi:ss');
</select>
</mapper>

@ -43,4 +43,11 @@ import java.util.List;
*/
public interface IBsFillingDetailService extends BaseService<BsFillingDetailEntity> {
/**
* 查询填报明细
* @param busId
* @param busType
* @return
*/
List<BsFillingDetailEntity> listFillingDetail(Long busId, String busType);
}

@ -93,10 +93,9 @@ public interface IDsPartService extends BaseService<DsPartEntity> {
/**
* 同步零件信息
* @param dsPart
* @return
*/
boolean syncPdmPart(DsPartEntity dsPart);
boolean syncPart();
/**

@ -29,8 +29,11 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.dashboard.mapper.BsFillingDetailMapper;
import org.springblade.desk.dashboard.pojo.entity.BsFillingDetailEntity;
import org.springblade.desk.dashboard.service.IBsFillingDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 填报明细表 服务实现类
*
@ -40,6 +43,11 @@ import org.springframework.stereotype.Service;
@Service
public class BsFillingDetailServiceImpl extends BaseServiceImpl<BsFillingDetailMapper, BsFillingDetailEntity> implements IBsFillingDetailService {
@Autowired
BsFillingDetailMapper bsFillingDetailMapper;
@Override
public List<BsFillingDetailEntity> listFillingDetail(Long busId, String busType) {
return bsFillingDetailMapper.listFillingDetail(busId,busType);
}
}

@ -16,6 +16,7 @@ import org.springblade.desk.dashboard.mapper.DsPartMapper;
import org.springblade.desk.dashboard.pojo.entity.*;
import org.springblade.desk.dashboard.pojo.vo.*;
import org.springblade.desk.dashboard.service.*;
import org.springblade.desk.dashboard.utils.DateUtils;
import org.springblade.erpdata.feign.IErpDataPartClient;
import org.springblade.erpdata.feign.IErpDataSearchClient;
import org.springblade.erpdata.pojo.dto.AllocationDTO;
@ -192,52 +193,11 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
}
@Override
public boolean syncPdmPart(DsPartEntity dsPart) {
if (null == dsPart) {
return false;
}
//工艺员
String technician = null;
//判断镀种信息是否存在
if(StringUtils.isEmpty(dsPart.getPlate())){
//任务处理
//获取镀种 根据镀种信息分类 找到对应工艺员
BsPlatingEntity bsPlatingEntity = platingService.selectBsPlatingByPlate(dsPart.getPlate());
//查询工艺员
List<BsPlatingTypeAssignEntity> platingTypeAssignEntityList = platingTypeAssignService.selectBsPlatingTypeAssignByPlateType(bsPlatingEntity.getPlateType());
if(null == platingTypeAssignEntityList){
//暂无工艺员 任务分派
}
//排序
List<BsPlatingTypeAssignEntity> collect = platingTypeAssignEntityList.stream().sorted(Comparator.comparing(BsPlatingTypeAssignEntity::getCurrentTaskCount))
.collect(Collectors.toList());
//工艺员
technician = collect.get(0).getUserName();
try {
//信息数据匹配
// 工艺员 technician
// 分配状态 TaskingConstant.TASK_STATUS_ALREADY 已分配
} catch (Exception e) {
e.printStackTrace();
}
}else {
//任务分派 直接入库
// 没有工艺员 TaskingConstant.TASK_STATUS_WAIT 待分配
}
//零件入库
dsPart.setTechnician(technician);
dsPartMapper.insert(dsPart);
public boolean syncPart() {
// 查询零件信息
Date startDate = DateUtils.getPreviousDayStartDate(1);
Date endDate = DateUtils.getPreviousDayEndDate(1);
List<DsPartEntity> partList = dsPartMapper.selectPartByDate(startDate,endDate);
return true;

@ -0,0 +1,166 @@
/**
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.desk.logistics.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.tool.api.R;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
/**
* 输送线 控制器
*
* @author BladeX
* @since 2026-02-28
*/
@RestController
@AllArgsConstructor
@RequestMapping("/pipeline")
@Tag(name = "输送线", description = "输送线接口")
public class PipelineController extends BladeController {
/**
* 根据物料箱号查询已绑定预估重量
*/
@GetMapping("/estimated-weight")
@ApiOperationSupport(order = 1)
@Operation(summary = "根据物料箱号查询已绑定预估重量", description = "传入箱条码")
public R estimatedWeight(@RequestParam String boxBarcode) {
// 1.参数校验
if (StringUtils.isEmpty(boxBarcode)) {
throw new ServiceException("箱条码不能为空");
}
// todo 2.查询箱信息
// //Box box = boxMapper.selectByBarcode(boxBarcode);
// if (box == null) {
// throw new ServiceException("箱号不存在: " + boxBarcode);
// }
//
// // 3.检查是否已绑定
// if (!box.getBound()) {
// throw new ServiceException("该箱号未绑定预估重量");
// }
BigDecimal estimatedWeight = new BigDecimal(50);
return R.data(estimatedWeight);
}
@GetMapping("/verifyConveyorBoxWeighing")
@ApiOperationSupport(order = 2)
@Operation(
summary = "验证输送箱实际重量",
description = "传入箱条码与实际重量,校验是否超重;若超重则解绑物料箱并指令放回输送线"
)
public R getBoundEstimatedWeight(
@Parameter(description = "物料箱条码", required = true)
@RequestParam String boxBarcode,
@Parameter(description = "实际称重重量(单位:kg)", required = true)
@RequestParam BigDecimal actualWeight) {
// 1.参数合法性校验
if (boxBarcode == null || boxBarcode.trim().isEmpty()) {
return R.fail("箱条码不能为空");
}
if (actualWeight == null || actualWeight.compareTo(BigDecimal.ZERO) < 0) {
return R.fail("实际重量必须为非负数");
}
try {
// 2.根据箱条码查询物料箱基础信息
// 3.判断是否超重
BigDecimal ratedWeight = new BigDecimal(50);
int weightCompare = actualWeight.compareTo(ratedWeight);
if (weightCompare > 0) {
// 4.超重:执行解绑操作 + 指令放回输送线
// 超重处理完成返回
return R.data(
false,"物料箱[" + boxBarcode + "]超重(实际:" + actualWeight + "kg,额定:" + ratedWeight + "kg),已解绑并放回输送线"
);
} else {
// 5.未超重:正常返回
return R.data(
true,"物料箱[" + boxBarcode + "]重量校验通过(实际:" + actualWeight + "kg,额定:" + ratedWeight + "kg)"
);
}
} catch (Exception e) {
return R.fail("物料箱重量校验处理异常:" + e.getMessage());
}
}
/**
* 接收物料箱到达输送线末尾信息
*/
@GetMapping("/receiveBoxArriveConveyorEnd")
@ApiOperationSupport(order = 3)
@Operation(summary = "接收物料箱", description = "传入箱条码")
public R receiveBoxArriveConveyorEnd(@RequestParam String boxBarcode) {
// 1.参数校验
if (StringUtils.isEmpty(boxBarcode)) {
throw new ServiceException("箱条码不能为空");
}
return R.data(true);
}
/**
* 接收空物料箱到输送线通知
*/
@GetMapping("/recordEmptyBoxArriveConveyor")
@ApiOperationSupport(order = 4)
@Operation(summary = "接收物料箱", description = "传入箱条码")
public R recordEmptyBoxArriveConveyor(@RequestParam String boxBarcode) {
// 1.参数校验
if (StringUtils.isEmpty(boxBarcode)) {
throw new ServiceException("箱条码不能为空");
}
return R.data(true);
}
}
Loading…
Cancel
Save