Browse Source

新增棒一称重数据返回接口

lingpeng.li 2 tuần trước cách đây
mục cha
commit
7f469fb0a9

+ 2 - 0
zgztBus/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java

@@ -168,6 +168,8 @@ public class ShiroConfig {
         filterChainDefinitionMap.put("/actualControl/billetSendRecord/sendData", "anon");
         //轧钢平台退坯通知接口排除
         filterChainDefinitionMap.put("/actualControl/rollbackNotice/rollbackNotice", "anon");
+        //轧钢平台棒一称重数据返回接口排除
+        filterChainDefinitionMap.put("/actualControl/exchange/returnBillet", "anon");
 
         // update-begin--author:liusq Date:20230522 for:[issues/4829]访问不存在的url时会提示Token失效,请重新登录呢
         //错误路径排除

+ 21 - 1
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/actualControl/heatsActuals/controller/BilletExchangeController.java

@@ -1,8 +1,14 @@
 package org.jeecg.modules.actualControl.heatsActuals.controller;
 
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.actualControl.heatsActuals.dto.BilletQueryDTO;
 import org.jeecg.modules.actualControl.heatsActuals.dto.BilletSendRequest;
 import org.jeecg.modules.actualControl.heatsActuals.dto.BilletSendResponse;
+import org.jeecg.modules.actualControl.heatsActuals.service.IBilletSendRecordService;
+import org.jeecg.modules.actualControl.heatsActuals.vo.BilletQueryVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -10,11 +16,15 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+@Api(tags = "钢坯数据交换")
 @RestController
 @RequestMapping("/actualControl/exchange")
 public class BilletExchangeController {
 
-    @ApiOperation(value="轧钢平台钢坯接收测试", notes="轧钢平台钢坯接收测试")
+    @Autowired
+    private IBilletSendRecordService billetSendRecordService;
+
+    @ApiOperation(value = "轧钢平台钢坯接收测试", notes = "轧钢平台钢坯接收测试")
     @PostMapping("/receiveBillet")
     public ResponseEntity<BilletSendResponse> receiveBillet(@RequestBody BilletSendRequest request) {
         // 处理接收到的请求
@@ -37,4 +47,14 @@ public class BilletExchangeController {
             return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResponse);
         }
     }
+
+
+    @ApiOperation(value = "棒一称重数据返回", notes = "棒一称重数据返回")
+    @PostMapping("/returnBillet")
+    public Result<BilletQueryVO> returnBillet(@RequestBody BilletQueryDTO queryDTO) {
+
+        BilletQueryVO billetQueryVO = billetSendRecordService.getBilletQueryVO(queryDTO);
+
+        return Result.ok(billetQueryVO);
+    }
 }

+ 22 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/actualControl/heatsActuals/dto/BilletQueryDTO.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.actualControl.heatsActuals.dto;
+
+import lombok.Data;
+
+@Data
+public class BilletQueryDTO {
+
+    /**
+     * 炉号
+     */
+    private String heatNo;
+
+    /**
+     * 流号
+     */
+    private String strandNo;
+
+    /**
+     * 所属表
+     */
+    private String belongTable;
+}

+ 4 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/actualControl/heatsActuals/service/IBilletSendRecordService.java

@@ -1,7 +1,9 @@
 package org.jeecg.modules.actualControl.heatsActuals.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.actualControl.heatsActuals.dto.BilletQueryDTO;
 import org.jeecg.modules.actualControl.heatsActuals.entity.BilletSendRecord;
+import org.jeecg.modules.actualControl.heatsActuals.vo.BilletQueryVO;
 
 /**
  * @Description: 钢坯接收记录
@@ -12,4 +14,6 @@ import org.jeecg.modules.actualControl.heatsActuals.entity.BilletSendRecord;
 public interface IBilletSendRecordService extends IService<BilletSendRecord> {
 
     void sendHeatsActuals();
+
+    BilletQueryVO getBilletQueryVO(BilletQueryDTO queryDTO);
 }

+ 62 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/actualControl/heatsActuals/service/impl/BilletSendRecordServiceImpl.java

@@ -3,15 +3,24 @@ package org.jeecg.modules.actualControl.heatsActuals.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.actualControl.billetActual.billetActual.entity.BilletBasicInfo;
+import org.jeecg.modules.actualControl.billetActual.billetActual.mapper.BilletBasicInfoMapper;
+import org.jeecg.modules.actualControl.heatsActuals.dto.BilletQueryDTO;
 import org.jeecg.modules.actualControl.heatsActuals.entity.BilletSendRecord;
 import org.jeecg.modules.actualControl.heatsActuals.entity.HeatsActuals;
 import org.jeecg.modules.actualControl.heatsActuals.mapper.BilletSendRecordMapper;
 import org.jeecg.modules.actualControl.heatsActuals.mapper.HeatsActualsMapper;
 import org.jeecg.modules.actualControl.heatsActuals.service.IBilletSendRecordService;
+import org.jeecg.modules.actualControl.heatsActuals.vo.BilletQueryVO;
+import org.jeecg.modules.carUnit.service.ISysDictService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
+import java.math.BigDecimal;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * @Description: 钢坯接收记录
@@ -30,6 +39,12 @@ public class BilletSendRecordServiceImpl extends ServiceImpl<BilletSendRecordMap
     @Autowired
     private BilletSendProcessor billetSendProcessor;
 
+    @Autowired
+    private BilletBasicInfoMapper billetBasicInfoMapper;
+
+    @Autowired
+    private ISysDictService sysDictService;
+
     @Override
     public void sendHeatsActuals() {
         //查询出所有未完成推送的数据
@@ -45,4 +60,51 @@ public class BilletSendRecordServiceImpl extends ServiceImpl<BilletSendRecordMap
         }
     }
 
+    @Override
+    public BilletQueryVO getBilletQueryVO(BilletQueryDTO queryDTO) {
+        // 参数校验
+        if (oConvertUtils.isEmpty(queryDTO.getHeatNo()) && oConvertUtils.isEmpty(queryDTO.getStrandNo())) {
+            throw new IllegalArgumentException("参数异常:炉号和流号不能同时为空!");
+        }
+
+        // 默认表名处理
+        String belongTable = StringUtils.hasText(queryDTO.getBelongTable())
+                ? queryDTO.getBelongTable()
+                : "roll_club_one";
+
+        // 构建查询条件
+        LambdaQueryWrapper<BilletBasicInfo> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(BilletBasicInfo::getHeatNo, queryDTO.getHeatNo())
+                .eq(BilletBasicInfo::getStrandNo, queryDTO.getStrandNo())
+                .eq(BilletBasicInfo::getBelongTable, belongTable)
+                .orderByDesc(BilletBasicInfo::getCreateTime)
+                .last("LIMIT 1");
+
+        // 执行查询
+        BilletBasicInfo billetBasicInfo = billetBasicInfoMapper.selectOne(queryWrapper);
+
+        if (billetBasicInfo == null) {
+            throw new IllegalStateException("未查询到对应钢坯信息,请确认炉号、流号是否正确!");
+        }
+
+        // 钢种牌号处理
+        String brandNum = Optional.ofNullable(billetBasicInfo.getBrandNum())
+                .map(bn -> sysDictService.queryDictTextByKey("billet_spec", bn))
+                .orElseGet(() -> sysDictService.queryDictTextByKey("billet_spec", "5"));
+
+        // 构建返回对象
+        BilletQueryVO billetQueryVO = new BilletQueryVO();
+        billetQueryVO.setBilletNo(billetBasicInfo.getBilletNo());
+        billetQueryVO.setSteelGrade(brandNum);
+        billetQueryVO.setLength(billetBasicInfo.getLength());
+
+        // 重量转 BigDecimal,考虑 null 情况
+        Double billetWeight = billetBasicInfo.getBilletWeight();
+        BigDecimal weight = billetWeight != null ? BigDecimal.valueOf(billetWeight) : BigDecimal.ZERO;
+        billetQueryVO.setPerWeight(weight);
+
+        return billetQueryVO;
+    }
+
+
 }

+ 29 - 0
zgztBus/jeecg-module-sbm/src/main/java/org/jeecg/modules/actualControl/heatsActuals/vo/BilletQueryVO.java

@@ -0,0 +1,29 @@
+package org.jeecg.modules.actualControl.heatsActuals.vo;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class BilletQueryVO {
+
+    /**
+     * 铸坯号
+     */
+    private String billetNo;
+
+    /**
+     * 钢种牌号
+     */
+    private String steelGrade;
+
+    /**
+     * 定尺
+     */
+    private Integer length;
+
+    /**
+     * 单重
+     */
+    private BigDecimal perWeight;
+}