Browse Source

feat:"心跳增加apk版本号,MQTT增加上传机器状态,远程制作商品"

soobin 3 weeks ago
parent
commit
8cedc0f2d6

+ 3 - 1
src/main/java/com/szwl/constant/OperationType.java

@@ -22,7 +22,9 @@ public enum OperationType implements IEnum<String> {
     UPDATE_APK("updateApk", "推送APP自动更新"),
     ALARM_RECORD("alarmRecord", "上传报警记录"),
     ELIMINATE("eliminate","消除屏幕报警"),
-    MATERIAL("material","物料监控开关"),;
+    MATERIAL("material","物料监控开关"),
+    MACHINE_STATUS("machineStatus","设备状态"),
+    PRODUCE_GOODS("produceGoods","制作商品");
 
     private String code;
 

+ 54 - 2
src/main/java/com/szwl/controller/TEquipmentController.java

@@ -29,6 +29,7 @@ import com.szwl.model.bo.R;
 import com.szwl.model.bo.ResponseModel;
 import com.szwl.model.bo.UserDetailBO;
 import com.szwl.model.entity.*;
+import com.szwl.model.param.DoSugarParam;
 import com.szwl.model.param.EquipmentParam;
 import com.szwl.model.param.PasswordParam;
 import com.szwl.model.param.SmokeJamParm;
@@ -108,6 +109,9 @@ public class TEquipmentController {
     TLabelService labelService;
 
     @Autowired
+    TSugarDoService tSugarDoService;
+
+    @Autowired
     TokenManager tokenManager;
     /**
      * 超时时间为30秒
@@ -375,7 +379,7 @@ public class TEquipmentController {
             LambdaQueryWrapper<TAdmin> adminQuery = Wrappers.lambdaQuery();
             adminQuery.eq(TAdmin::getUsername, adminName);
             TAdmin tAdmin = tAdminService.getOne(adminQuery);
-            if (tAdmin ==  null) {
+            if (tAdmin == null) {
                 return R.ok(iPageDTO);
             }
             query.eq(TEquipment::getAdminId, tAdmin.getId());
@@ -2128,7 +2132,7 @@ public class TEquipmentController {
 
     @ApiOperation("物料监控开关")
     @PostMapping("/material")
-    public ResponseModel<?> material(@RequestBody TEquipmentDesc equipmentDesc){
+    public ResponseModel<?> material(@RequestBody TEquipmentDesc equipmentDesc) {
         UserDetailBO userDetailBO = Optional.ofNullable(tokenManager.getLoginUserDetails())
                 .orElseThrow(() -> new BizException(ResponseCodesEnum.L0001));
         Long adminId = userDetailBO.getId();
@@ -2142,6 +2146,54 @@ public class TEquipmentController {
         return R.ok();
     }
 
+    @ApiOperation(value = "制作商品")
+    @PostMapping("/produceGoods")
+    public ResponseModel<?> produceGoods(@RequestBody DoSugarParam param) {
+        UserDetailBO userDetailBO = Optional.ofNullable(tokenManager.getLoginUserDetails())
+                .orElseThrow(() -> new BizException(ResponseCodesEnum.L0001));
+        Long adminId = userDetailBO.getId();
+
+        Long equipmentId = param.getEquipmentId();
+        String productName = param.getProductName();
+        String productNo = param.getProductNo();
+        String makeCodes = param.getMakeCodes();
+        if (equipmentId != null) {
+            TEquipment equipment = tEquipmentService.getById(equipmentId);
+            Long equipmentAdminId = equipment.getAdminId();
+            StringBuilder number = new StringBuilder();
+            Random random = new Random();
+            number.append(String.valueOf(equipmentAdminId)).append("-");
+            for (int i = 0; i < 6; i++) {
+                number.append(String.valueOf(random.nextInt(10)));
+            }
+            TSugarDo sugarDo = new TSugarDo();
+            sugarDo.setAdminId(equipmentAdminId);
+            sugarDo.setClientId(equipment.getClientId());
+            sugarDo.setStatus("0");
+            sugarDo.setNo(number.toString());
+            sugarDo.setProductName(productName);
+            Date date = new Date();
+            sugarDo.setCreateDate(date);
+            sugarDo.setModifyDate(date);
+            tSugarDoService.save(sugarDo);
+            String machineType = equipment.getMachineType();
+            JSONObject kindData = new JSONObject();
+            if (StringUtils.isNotEmpty(machineType) && machineType.equals("2")) {
+                // 如果是冰淇淋
+                makeCodes = "[" + makeCodes + "]";
+                kindData.put("makeCodes", makeCodes);
+                kindData.put("no", sugarDo.getNo());
+            } else {
+                kindData.put("productNo", productNo);
+                kindData.put("no", sugarDo.getNo());
+            }
+            String message = PushUtils.buildJson(OperationType.PRODUCE_GOODS.getCode(), kindData.toString()).toString();
+            tEquipmentService.sendRemoteMessage(equipment.getClientId(), OperationType.PRODUCE_GOODS, message, adminId);
+            return R.ok(sugarDo);
+        }
+        return R.fail(ResponseCodesEnum.A0001);
+    }
+
 
     /**
      * 上传日志

+ 1 - 81
src/main/java/com/szwl/controller/TSugarDoController.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.szwl.constant.OperationType;
 import com.szwl.constant.ResponseCodesEnum;
 import com.szwl.model.bo.R;
 import com.szwl.model.bo.ResponseModel;
@@ -64,87 +65,6 @@ public class TSugarDoController {
     TProductService productService;
 
     @ApiOperation(value = "远程做糖")
-    @PostMapping("/doSugar")
-    public ResponseModel<?> doSugar(@RequestBody DoSugarParam param) {
-        Long equipmentId = param.getEquipmentId();
-        String productName = param.getProductName();
-        String makeCodes = param.getMakeCodes();
-        if (equipmentId != null) {
-            TEquipment equipment = tEquipmentService.getById(equipmentId);
-            Long equipmentAdminId = equipment.getAdminId();
-
-            // 判断是否是海外账户,海外账户不限制制作数量
-            TAdmin admin = tAdminService.getById(equipmentAdminId);
-            String ifForeign = admin.getIfForeign();
-
-            if (StringUtils.isNotEmpty(ifForeign) && ifForeign.equals("0")) {
-                //判断本日是否已做二十个糖
-                LambdaQueryWrapper<TSugarDo> query = Wrappers.lambdaQuery();
-                query.eq(TSugarDo::getAdminId, Long.valueOf(equipmentAdminId));
-
-
-                Calendar todayStart = Calendar.getInstance();
-                todayStart.set(Calendar.HOUR_OF_DAY, 0);
-                todayStart.set(Calendar.MINUTE, 0);
-                todayStart.set(Calendar.SECOND, 0);
-                query.gt(TSugarDo::getCreateDate, todayStart.getTime());
-                Calendar todayEnd = Calendar.getInstance();
-                todayEnd.set(Calendar.HOUR_OF_DAY, 23);
-                todayEnd.set(Calendar.MINUTE, 59);
-                todayEnd.set(Calendar.SECOND, 59);
-                query.le(TSugarDo::getCreateDate, todayEnd.getTime());
-                query.eq(TSugarDo::getStatus, "1");
-                List<TSugarDo> sugarDoList = tSugarDoService.list(query);
-                if (sugarDoList.size() > 20) {
-                    return R.fail(ResponseCodesEnum.A0001, "做糖数量已满");
-                }
-            }
-            StringBuilder number = new StringBuilder();
-            Random random = new Random();
-            number.append(String.valueOf(equipmentAdminId)).append("-");
-            for (int i = 0; i < 6; i++) {
-                number.append(String.valueOf(random.nextInt(10)));
-            }
-            TSugarDo sugarDo = new TSugarDo();
-            sugarDo.setAdminId(equipmentAdminId);
-            sugarDo.setClientId(equipment.getClientId());
-            sugarDo.setStatus("0");
-            sugarDo.setNo(number.toString());
-            sugarDo.setProductName(productName);
-            Date date = new Date();
-            sugarDo.setCreateDate(date);
-            sugarDo.setModifyDate(date);
-            tSugarDoService.save(sugarDo);
-            String machineType = equipment.getMachineType();
-            JSONObject kindData = new JSONObject();
-            if (StringUtils.isNotEmpty(machineType) && machineType.equals("2")) {
-                // 如果是冰淇淋
-                makeCodes = "[" + makeCodes + "]";
-                kindData.put("makeCodes", makeCodes);
-                kindData.put("no", sugarDo.getNo());
-                tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("dosugar", kindData.toString()).toString());
-            } else {
-                LambdaQueryWrapper<TProduct> queryWrapper = Wrappers.lambdaQuery();
-                queryWrapper.eq(TProduct::getEquipmentId, equipmentId);
-                queryWrapper.eq(TProduct::getProductName, productName);
-                TProduct product = productService.getOne(queryWrapper);
-                if (product != null) {
-                    LambdaQueryWrapper<TNameDictionary> wrapper = Wrappers.lambdaQuery();
-                    wrapper.eq(TNameDictionary::getNo, product.getNo());
-                    wrapper.eq(TNameDictionary::getLanguage, "zh");
-                    TNameDictionary nameDictionary = nameDictionaryService.getOne(wrapper);
-                    productName = nameDictionary.getName();
-                }
-                kindData.put("productName", productName);
-                kindData.put("no", sugarDo.getNo());
-                tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("dosugar", kindData.toString()).toString());
-            }
-            return R.ok(sugarDo);
-        }
-        return R.fail(ResponseCodesEnum.A0001);
-    }
-
-    @ApiOperation(value = "远程做糖")
     @PostMapping("/remoteProduction")
     public ResponseModel<?> remoteProduction(@RequestBody DoSugarParam param) {
         Long equipmentId = param.getEquipmentId();

+ 3 - 0
src/main/java/com/szwl/handle/response/HeartProcessor.java

@@ -93,6 +93,9 @@ public class HeartProcessor implements ResponseProcessor {
                         equipment.setIsAlarm(false);
                     }
                 }
+                if (StringUtils.isNotEmpty(heartParam.getApkVersion())) {
+                    equipment.setApkVersion(heartParam.getApkVersion());
+                }
 
                 equipment.setGtClientId(heartParam.getGtClientId());
                 equipment.setLatitude(heartParam.getLatitude());

+ 49 - 0
src/main/java/com/szwl/handle/response/MachineStatusProcessor.java

@@ -0,0 +1,49 @@
+package com.szwl.handle.response;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.szwl.constant.OperationType;
+import com.szwl.model.entity.MessageLog;
+import com.szwl.model.entity.TEquipment;
+import com.szwl.model.entity.TEquipmentDesc;
+import com.szwl.service.TEquipmentDescService;
+import com.szwl.service.TEquipmentService;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+
+@Component
+public class MachineStatusProcessor implements ResponseProcessor {
+
+    @Resource
+    private TEquipmentService tEquipmentService;
+
+    @Resource
+    private TEquipmentDescService tEquipmentDescService;
+
+    @Override
+    public void process(MessageLog messageLog) {
+        Integer statusCode = messageLog.getStatusCode();
+        if (statusCode == 200) {
+            Integer direction = messageLog.getDirection();
+            String clientId = messageLog.getClientId();
+            String responseContent = messageLog.getResponseContent();
+
+            LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
+            query.eq(TEquipment::getClientId, clientId);
+            TEquipment tEquipment = tEquipmentService.getOne(query);
+            if (tEquipment != null) {
+                TEquipmentDesc equipmentDesc = tEquipmentDescService.getById(tEquipment.getId());
+                // 机器状态;0:空闲,1:制作中;
+                equipmentDesc.setStatus(responseContent);
+                tEquipmentDescService.updateById(equipmentDesc);
+            }
+        }
+    }
+
+    @Override
+    public String getSupportedOperationType() {
+        return OperationType.MACHINE_STATUS.getCode();
+    }
+}

+ 56 - 0
src/main/java/com/szwl/handle/response/ProduceGoodsProcessor.java

@@ -0,0 +1,56 @@
+package com.szwl.handle.response;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.szwl.constant.OperationType;
+import com.szwl.model.dto.AlarmRecordVo;
+import com.szwl.model.entity.MessageLog;
+import com.szwl.model.entity.TSugarDo;
+import com.szwl.service.TSugarDoService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+
+@Slf4j
+@Component
+public class ProduceGoodsProcessor implements ResponseProcessor {
+
+    @Resource
+    private TSugarDoService sugarDoService;
+
+    @Override
+    public void process(MessageLog messageLog) {
+        Integer statusCode = messageLog.getStatusCode();
+        if (statusCode == 200) {
+            Integer direction = messageLog.getDirection();
+            String clientId = messageLog.getClientId();
+            String responseContent = messageLog.getResponseContent();
+            try {
+                // 转换为对象
+                TSugarDo sugarDo = JSON.parseObject(responseContent, TSugarDo.class);
+                LambdaQueryWrapper<TSugarDo> query = Wrappers.lambdaQuery();
+                query.eq(TSugarDo::getNo, sugarDo.getNo());
+                query.eq(TSugarDo::getClientId, clientId);
+
+                TSugarDo tSugarDo = sugarDoService.getOne(query);
+                if (tSugarDo != null) {
+                    tSugarDo.setStatus(sugarDo.getStatus());
+                    tSugarDo.setNote(sugarDo.getNote());
+                    sugarDoService.updateById(tSugarDo);
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+
+
+        }
+
+    }
+
+    @Override
+    public String getSupportedOperationType() {
+        return OperationType.PRODUCE_GOODS.getCode();
+    }
+}

+ 3 - 0
src/main/java/com/szwl/model/jsonParm/HeartParam.java

@@ -91,4 +91,7 @@ public class HeartParam {
 
     @JsonProperty("workingMode")
     private Integer workingMode;
+
+    @JsonProperty("apkVersion")
+    private String apkVersion;
 }