Przeglądaj źródła

Merge branch 'master' of http://123.57.213.14:3001/zgzt/dosb-sys-java

guoqiang 3 tygodni temu
rodzic
commit
82647e96cb

+ 42 - 30
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/controller/BilletHotsendBaseController.java

@@ -7,43 +7,55 @@ import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.modules.billetActual.entity.BilletHotsend;
+import org.jeecg.modules.billetActual.entity.FurnaceChangeData;
 import org.jeecg.modules.billetActual.service.IBilletHotsendBaseService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+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;
+
 /**
-* @Description: 钢坯热送基础信息
-* @Author: jeecg-boot
-* @Date:   2024-04-29
-* @Version: V1.0
-*/
-@Api(tags="钢坯热送基础信息")
+ * @Description: 钢坯热送基础信息
+ * @Author: jeecg-boot
+ * @Date: 2024-04-29
+ * @Version: V1.0
+ */
+@Api(tags = "钢坯热送基础信息")
 @RestController
 @RequestMapping("/billetHotsendBase/billetHotsendBase")
 @Slf4j
 public class BilletHotsendBaseController extends JeecgController<BilletHotsend, IBilletHotsendBaseService> {
 
-   @Autowired
-   private IBilletHotsendBaseService billetHotsendBaseService;
-
-   @ApiOperation(value="自动化新增5号机直轧棒1和6号机高线保存", notes="自动化新增5号机直轧棒1和6号机高线保存")
-   @PostMapping(value = "/autoAddRodLineCommon")
-   public Result<?> autoAddRodLineCommon(@RequestBody JSONObject jsonObject){
-      billetHotsendBaseService.autoAddRodLineCommon(jsonObject);
-      return Result.OK("自动化新增棒线测试成功!");
-   }
-
-   @ApiOperation(value="自动化5、6号机轧钢外运保存", notes="自动化5、6号机轧钢外运保存")
-   @PostMapping(value = "/autoAddRodLine")
-   public Result<?> autoAddRodLine(@RequestBody JSONObject jsonObject){
-      billetHotsendBaseService.autoAddRodLine(jsonObject);
-      return Result.OK("自动化新增棒线测试成功!");
-   }
-
-   @ApiOperation(value="自动化5、6号机轧钢外运轧钢外运直接发车", notes="自动化5、6号机轧钢外运轧钢外运直接发车")
-   @PostMapping(value = "/autoDirectDepart")
-   public Result<?> autoDirectDepart(@RequestBody JSONObject jsonObject){
-      billetHotsendBaseService.autoDepartTrucking(jsonObject);
-      return Result.OK("自动化轧钢外运直接发车成功!");
-   }
+    @Autowired
+    private IBilletHotsendBaseService billetHotsendBaseService;
+
+    @ApiOperation(value = "自动化新增5号机直轧棒1和6号机高线保存", notes = "自动化新增5号机直轧棒1和6号机高线保存")
+    @PostMapping(value = "/autoAddRodLineCommon")
+    public Result<?> autoAddRodLineCommon(@RequestBody JSONObject jsonObject) {
+        billetHotsendBaseService.autoAddRodLineCommon(jsonObject);
+        return Result.OK("自动化新增棒线测试成功!");
+    }
+
+    @ApiOperation(value = "自动化5、6号机轧钢外运保存", notes = "自动化5、6号机轧钢外运保存")
+    @PostMapping(value = "/autoAddRodLine")
+    public Result<?> autoAddRodLine(@RequestBody JSONObject jsonObject) {
+        billetHotsendBaseService.autoAddRodLine(jsonObject);
+        return Result.OK("自动化新增棒线测试成功!");
+    }
+
+    @ApiOperation(value = "自动化5、6号机轧钢外运轧钢外运直接发车", notes = "自动化5、6号机轧钢外运轧钢外运直接发车")
+    @PostMapping(value = "/autoDirectDepart")
+    public Result<?> autoDirectDepart(@RequestBody JSONObject jsonObject) {
+        billetHotsendBaseService.autoDepartTrucking(jsonObject);
+        return Result.OK("自动化轧钢外运直接发车成功!");
+    }
+
+    @ApiOperation(value = "换炉推送消息", notes = "换炉推送消息")
+    @PostMapping(value = "/furnaceChange")
+    public Result<?> furnaceChange(@RequestBody FurnaceChangeData data) {
+        billetHotsendBaseService.furnaceChange(data);
+        return Result.OK("换炉推送消息成功!");
+    }
 
 }

+ 6 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/entity/BilletHotsend.java

@@ -166,6 +166,12 @@ public class BilletHotsend implements Serializable {
     @Excel(name = "是否已编辑", width = 15)
     @ApiModelProperty(value = "是否已编辑")
     private Boolean isUpd;
+    /**
+     * 牌号
+     */
+    @Excel(name = "牌号", width = 15)
+    @ApiModelProperty(value = "牌号")
+    private String brandNum;
 
 }
 

+ 16 - 0
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/entity/FurnaceChangeData.java

@@ -0,0 +1,16 @@
+package org.jeecg.modules.billetActual.entity;
+
+import lombok.Data;
+
+@Data
+public class FurnaceChangeData {
+
+    private String ccmNo;        // 铸机号
+    private String heatNo;       // 炉号
+    private String netWeight;    // 钢水毛重
+    private String ladleNo;      // 钢包号
+    private String grade;        // 钢种
+    private String startPourTime;// 开浇时间
+    private String spec;         // 规格
+    private String sendTime;     // 发送时间
+}

+ 3 - 3
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/service/IBilletHotsendBaseService.java

@@ -3,9 +3,7 @@ package org.jeecg.modules.billetActual.service;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.billetActual.entity.BilletHotsend;
-import org.jeecg.modules.billetActual.entity.BilletHotsendDetailsVo;
-
-import java.util.List;
+import org.jeecg.modules.billetActual.entity.FurnaceChangeData;
 
 /**
  * @Description: 钢坯热送基础信息
@@ -20,4 +18,6 @@ public interface IBilletHotsendBaseService extends IService<BilletHotsend> {
     void autoAddRodLineCommon(JSONObject jsonObject);
 
     void autoDepartTrucking(JSONObject jsonObject);
+
+    void furnaceChange(FurnaceChangeData data);
 }

+ 62 - 5
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/billetActual/service/impl/BilletHotsendBaseServiceImpl.java

@@ -7,8 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang.StringUtils;
-import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.billetActual.entity.*;
@@ -24,8 +23,11 @@ import org.jeecg.modules.billetHotsendConfig.entity.BilletHotsendTypeConfig;
 import org.jeecg.modules.billetHotsendConfig.service.IBilletHotsendTypeConfigService;
 import org.jeecg.modules.billetLiftingBill.entity.BilletLiftingBill;
 import org.jeecg.modules.billetLiftingBill.service.IBilletLiftingBillService;
+import org.jeecg.modules.connConfig.configMqtt.mapper.ConfigMqttMapper;
 import org.jeecg.modules.operateLog.entity.OperateLog;
 import org.jeecg.modules.operateLog.service.IOperateLogService;
+import org.jeecg.modules.push.utils.MqttClientUtil;
+import org.jeecg.modules.push.utils.TopicType;
 import org.jeecg.modules.rollClubOne.entity.RollClubOne;
 import org.jeecg.modules.rollClubOne.entity.RollClubOneDetails;
 import org.jeecg.modules.rollClubOne.service.IRollClubOneDetailsService;
@@ -46,12 +48,9 @@ import org.jeecg.modules.rollOutShipp.entity.RollOutShipp;
 import org.jeecg.modules.rollOutShipp.entity.RollOutShippDetails;
 import org.jeecg.modules.rollOutShipp.service.IRollOutShippDetailsService;
 import org.jeecg.modules.rollOutShipp.service.IRollOutShippService;
-import org.jeecg.modules.storageBill.entity.ShiftEnum;
-import org.jeecg.modules.storageBill.entity.ShiftGroupEnum;
 import org.jeecg.modules.storageBill.entity.StorageBill;
 import org.jeecg.modules.storageBill.service.IStorageBillService;
 import org.jeecg.modules.storageCarLog.entity.StorageCarLog;
-import org.jeecg.modules.storageCarLog.mapper.StorageCarLogMapper;
 import org.jeecg.modules.storageCarLog.service.IStorageCarLogService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -61,6 +60,8 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.math.BigDecimal;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
@@ -76,6 +77,8 @@ import java.util.stream.Collectors;
 @Slf4j
 public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseMapper, BilletHotsend> implements IBilletHotsendBaseService {
 
+	private static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
 	@Autowired
 	private IStorageCarLogService storageCarLogService;
 	@Autowired
@@ -116,6 +119,8 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 	private IBilletLiftingBillService billetLiftingBillService;
 	@Autowired
 	private IOperateLogService operateLogService;
+	@Autowired
+	private ConfigMqttMapper configMqttMapper;
 
 	/**
 	 * 自动化新增 5号机 直轧棒1   6号机 高线
@@ -553,6 +558,58 @@ public class BilletHotsendBaseServiceImpl extends ServiceImpl<BilletHotsendBaseM
 
 	}
 
+    @Override
+    public void furnaceChange(FurnaceChangeData data) {
+        String ccmNo = data.getCcmNo();   // 铸机号
+        String heatNo = data.getHeatNo(); // 炉号
+        String startPourTime = data.getStartPourTime(); // 开浇时间
+        if (oConvertUtils.isEmpty(ccmNo) || oConvertUtils.isEmpty(heatNo) || oConvertUtils.isEmpty(startPourTime)) {
+            throw new JeecgBootException("换炉失败:铸机号或炉号或开浇时间不能为空!");
+        }
+
+        // 构建最终要传递的对象
+        FurnaceChangeData finalData = new FurnaceChangeData();
+        finalData.setCcmNo(ccmNo);
+        finalData.setHeatNo(heatNo);
+        finalData.setStartPourTime(startPourTime);
+        finalData.setNetWeight(data.getNetWeight());
+        finalData.setLadleNo(data.getLadleNo());
+        finalData.setGrade(data.getGrade());
+        finalData.setSpec(data.getSpec());
+        finalData.setSendTime(formatDate(new Date()));
+
+        // 发送mqtt消息
+        sendFurnaceChangeToMqtt(finalData);
+    }
+
+    public void sendFurnaceChangeToMqtt(FurnaceChangeData data) {
+        try {
+            Map<String, Object> mapSendInfo = new HashMap<>();
+            mapSendInfo.put("netWeight", data.getNetWeight());
+            mapSendInfo.put("ladleNo", data.getLadleNo());
+            mapSendInfo.put("heatNo", data.getHeatNo());
+            mapSendInfo.put("grade", data.getGrade());
+            mapSendInfo.put("startPourTime", data.getStartPourTime());
+            mapSendInfo.put("spec", data.getSpec());
+            mapSendInfo.put("ccmNo", data.getCcmNo());
+            mapSendInfo.put("sendTime", data.getSendTime());
+
+            // 执行MQTT推送,设置合理的超时时间
+            MqttClientUtil mqttClientUtilBe = new MqttClientUtil();
+            mqttClientUtilBe.pushCData(configMqttMapper, mapSendInfo, TopicType.SYN_PUSHBILLETHOTSEND_NEXTSEND.getTopicValue());
+            log.info("B端传递换炉参数,发送MQTT成功: {}", mapSendInfo);
+        } catch (Exception e) {
+            log.error("B端传递换炉参数,发送MQTT异常!", e);
+        }
+    }
+
+    private String formatDate(Date date) {
+        return date != null ? date.toInstant()
+                .atZone(ZoneId.systemDefault())
+                .toLocalDateTime()
+                .format(DATETIME_FORMATTER) : null;
+    }
+
 
 	/**
 	 * 6号机高线,吊运单保存

+ 1 - 1
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/push/utils/MqttClientUtil.java

@@ -237,7 +237,7 @@ public class MqttClientUtil implements ApplicationRunner {
         MqttTopic topic = mqttClient.getTopic(topicInfo);
         MqttMessage message = new MqttMessage();
         message.setPayload(JSON.toJSON(map).toString().getBytes());
-        message.setQos(0);
+        message.setQos(2);
         message.setRetained(true);
         if (null == topic) {
             log.error("topic is not exist");

+ 5 - 1
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/push/utils/TopicType.java

@@ -74,7 +74,11 @@ public enum TopicType {
     /**
      * 回传堆垛被占位置总数
      */
-    SYN_PLACEHOLDER_PASSBACK("syn/placeholderSum/passback");
+    SYN_PLACEHOLDER_PASSBACK("syn/placeholderSum/passback"),
+    /**
+     * 换炉传递参数
+     */
+    SYN_PUSHBILLETHOTSEND_NEXTSEND("syn/pushbillethotsend/nexthosend");
 
     private String topicValue;
 

+ 18 - 21
zgzt-sys-java/jeecg-module-conn/src/main/java/org/jeecg/modules/stackingAndLoadingVehicles/service/impl/StackingAndLoadingVehiclesServiceImpl.java

@@ -335,7 +335,6 @@ public class StackingAndLoadingVehiclesServiceImpl extends ServiceImpl<StackingA
         billetLiftingBill.setLayer(layer);
         billetLiftingBill.setVehicleNumber(jsonObject.getString("vehicleNumber"));
         billetLiftingBill.setPositionNum(Integer.valueOf(positionNum));
-        billetLiftingBill.setPlateOrStack(jsonObject.getString("plateOrStack"));
         billetLiftingBill.setLocation(jsonObject.getString("location"));
         String liftingTime = jsonObject.getString("liftingTime");
         if (oConvertUtils.isNotEmpty(liftingTime)){
@@ -381,6 +380,23 @@ public class StackingAndLoadingVehiclesServiceImpl extends ServiceImpl<StackingA
             log.info("{}{}", "钢坯基础信息为空,C端自动化垛位装车保存失败", stackingAndLoadingVehiclesInfo.getBilletNos());
             return;
         }
+
+        // 2025 3.3,C端自动化推送保存、B端手动发车临时方案,
+        LambdaQueryWrapper<StorageBill> queryWrapper2 = new LambdaQueryWrapper<>();
+        queryWrapper2.eq(StorageBill::getCcmNo, ccmNo)
+                .eq(StorageBill::getPositionNum, Integer.valueOf(positionNum))
+                .isNull(StorageBill::getOutTime);
+        StorageBill isStorageBill = storageBillService.getOne(queryWrapper2);
+        if (oConvertUtils.isEmpty(isStorageBill)) {
+            log.info("未查询到钢坯装运单信息,车位号为:{},C端自动化垛位装车保存失败!", positionNum);
+            return;
+        }
+        loadingParams.setStorageBill(isStorageBill);
+
+        log.info("{}{}", "自动化堆垛装车保存StorageBill数据:", JSON.toJSON(isStorageBill));
+
+        StorageBill storageBill = loadingParams.getStorageBill();
+
         final double billetWeightTotal = billetBasicInfoList.stream().mapToDouble(BilletBasicInfo::getBilletWeight).sum();
 
         // 根据坯号查询吊运单信息。更新billetWeightTotal
@@ -391,6 +407,7 @@ public class StackingAndLoadingVehiclesServiceImpl extends ServiceImpl<StackingA
             billetLiftingBillUpdate.setBilletWeight(billetWeightTotal);
             billetLiftingBillUpdate.setAssemblyNumber(getAssemblyNumber(billetBasicInfoList));
             billetLiftingBillUpdate.setBilletsNo(allBilletNos);
+            billetLiftingBillUpdate.setPlateOrStack(storageBill.getLicensePlate());
             billetLiftingBillService.updateById(billetLiftingBillUpdate);
         }
 
@@ -403,24 +420,6 @@ public class StackingAndLoadingVehiclesServiceImpl extends ServiceImpl<StackingA
             rollClubCommonList.add(rollClubCommon);
         });
 
-        // 2025 3.3,C端自动化推送保存、B端手动发车临时方案,
-        LambdaQueryWrapper<StorageBill> queryWrapper2 = new LambdaQueryWrapper<>();
-        queryWrapper2.eq(StorageBill::getCcmNo, ccmNo)
-                .eq(StorageBill::getPositionNum, Integer.valueOf(positionNum))
-//                .eq(StorageBill::getShiftGroup, shiftGroupHandle(ccmNo))
-//                .eq(StorageBill::getShift, shiftHandle(ccmNo))
-                .isNull(StorageBill::getOutTime);
-        StorageBill isStorageBill = storageBillService.getOne(queryWrapper2);
-        if (oConvertUtils.isEmpty(isStorageBill)) {
-            log.info("未查询到钢坯装运单信息,车位号为:{},C端自动化垛位装车保存失败!", positionNum);
-            return;
-        }
-        loadingParams.setStorageBill(isStorageBill);
-
-        log.info("{}{}", "自动化堆垛装车保存StorageBill数据:", JSON.toJSON(isStorageBill));
-
-        StorageBill storageBill = loadingParams.getStorageBill();
-
         // 轧钢外运保存时,先判断装运单中的目的地ID是否为1024,如果为1024、明细暂存临时表billet_auto_tmp
         if ("1024".equals(isStorageBill.getTypeConfigId())){
             loadingParams.setBelongTable("billet_auto_tmp");
@@ -444,8 +443,6 @@ public class StackingAndLoadingVehiclesServiceImpl extends ServiceImpl<StackingA
 
         log.info("{}{}", "自动化堆垛装车保存热送单数据:", JSON.toJSON(billetHotsend));
 
-        log.info("{}{}", "自动化堆垛装车保存钢坯实绩数据:", JSON.toJSON(rollClubCommonList));
-
         //堆垛保存、堆垛发车公共处理
         handleStackDepartCommon(billetHotsend, loadingParams.getStackingAndLoadingVehiclesList(), loadingParams, billetHotsendTypeConfig, storageBill, rollClubCommonList);