Browse Source

机台设置

yzc 1 year ago
parent
commit
a40a165c8f

+ 0 - 9
hx-form/src/main/java/com/fjhx/form/service/impl/ReportServiceImpl.java

@@ -47,15 +47,6 @@ public class ReportServiceImpl implements ReportService {
         List<ProductionReportBo> productionReportBos = page.getRecords();
         List<Long> ptIds = productionReportBos.stream().map(ProductionReportBo::getId).collect(Collectors.toList());
 
-        //赋值产品信息
-        productInfoService.attributeAssign(productionReportBos, ProductionReportBo::getProductId, (item, productInfo) -> {
-            item.setProductName(productInfo.getName());
-            item.setProductCode(productInfo.getCustomCode());
-            item.setProductLength(productInfo.getLength());
-            item.setProductWidth(productInfo.getWidth());
-            item.setProductHeight(productInfo.getHeight());
-            item.setProductColor(productInfo.getColor());
-        });
 
         //获取部门列表
         List<SysDept> companyList = deptService.list();

+ 4 - 0
hx-iot/pom.xml

@@ -36,6 +36,10 @@
             <artifactId>qpid-jms-client</artifactId>
             <version>0.61.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.fjhx</groupId>
+            <artifactId>hx-item</artifactId>
+        </dependency>
 
 
     </dependencies>

+ 9 - 11
hx-iot/src/main/java/com/fjhx/iot/controller/tda/TdaDeviceController.java

@@ -2,10 +2,8 @@ package com.fjhx.iot.controller.tda;
 
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.fjhx.iot.constants.RedisConstant;
 import com.fjhx.iot.entity.tda.dto.TdaDeviceDto;
 import com.fjhx.iot.entity.tda.dto.TdaDeviceSelectDto;
-import com.fjhx.iot.entity.tda.po.TdaDevice;
 import com.fjhx.iot.entity.tda.vo.TdaDeviceVo;
 import com.fjhx.iot.service.tda.TdaDeviceService;
 import com.ruoyi.common.core.domain.BaseSelectDto;
@@ -54,20 +52,20 @@ public class TdaDeviceController {
         return tdaDeviceService.getComputerList(dto);
     }
 
-    /**
-     * 设备数据
-     */
-    @PostMapping("/data")
-    public Object getData(@RequestBody TdaDevice tdaDevice) {
-        return redisCache.getCacheObject(RedisConstant.DEVICE_PREFIX + tdaDevice.getDeviceId());
-    }
+//    /**
+//     * 设备数据
+//     */
+//    @PostMapping("/data")
+//    public Object getData(@RequestBody TdaDevice tdaDevice) {
+//        return redisCache.getCacheObject(RedisConstant.DEVICE_PREFIX + tdaDevice.getDeviceId());
+//    }
 
     /**
      * 设备管理明细
      */
     @PostMapping("/detail")
-    public TdaDeviceVo detail(@RequestBody BaseSelectDto dto) {
-        return tdaDeviceService.detail(dto.getId());
+    public TdaDeviceVo detail(@RequestBody TdaDeviceSelectDto dto) {
+        return tdaDeviceService.detail(dto);
     }
 
     /**

+ 5 - 0
hx-iot/src/main/java/com/fjhx/iot/entity/tda/dto/TdaDeviceSelectDto.java

@@ -19,4 +19,9 @@ public class TdaDeviceSelectDto extends BaseSelectDto {
      */
     private Long companyId;
 
+    /**
+     * 用户唯一标识
+     */
+    private String userUuid;
+
 }

+ 33 - 20
hx-iot/src/main/java/com/fjhx/iot/entity/tda/po/TdaDevice.java

@@ -51,35 +51,48 @@ public class TdaDevice extends BasePo {
      */
     private String remark;
 
-    //+=========================================s
-
-    /**
-     * 设备id
-     */
-    private String deviceId;
     /**
-     * 设备密匙
+     * 归属公司Id
      */
-    private String secret;
+    private Long companyId;
 
     /**
-     * 产品表id
+     * 生产模式
      */
-    private Long tdaProductId;
-
+    private Long prodMode;
     /**
-     * 华为tda产品id
+     * 生产任务id
      */
-    private String productId;
-
+    private Long prodTaskId;
     /**
-     * 设备节点(设备标识)
+     * 用户设备唯一标识
      */
-    private String nodeId;
+    private String userUuid;
 
-    /**
-     * 归属公司Id
-     */
-    private Long companyId;
+    //+=========================================s
+
+//    /**
+//     * 设备id
+//     */
+//    private String deviceId;
+//    /**
+//     * 设备密匙
+//     */
+//    private String secret;
+//
+//    /**
+//     * 产品表id
+//     */
+//    private Long tdaProductId;
+//
+//    /**
+//     * 华为tda产品id
+//     */
+//    private String productId;
+//
+//    /**
+//     * 设备节点(设备标识)
+//     */
+//    private String nodeId;
 
 }

+ 32 - 0
hx-iot/src/main/java/com/fjhx/iot/entity/tda/vo/TdaDeviceVo.java

@@ -4,6 +4,7 @@ import com.fjhx.iot.entity.tda.po.TdaDevice;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.Map;
 
@@ -52,4 +53,35 @@ public class TdaDeviceVo extends TdaDevice {
      */
     private String companyName;
 
+    /**
+     * 产品id
+     */
+    private Long productId;
+
+    /**
+     * 产品编号
+     */
+    private String productCode;
+    /**
+     * 产品长
+     */
+    private BigDecimal productLength;
+    /**
+     * 产品宽
+     */
+    private BigDecimal productWidth;
+    /**
+     * 产品高
+     */
+    private BigDecimal productHeight;
+    /**
+     * 产品颜色
+     */
+    private String productColor;
+
+    /**
+     * 生产订单号
+     */
+    private String orderCode;
+
 }

+ 3 - 1
hx-iot/src/main/java/com/fjhx/iot/mapper/tda/TdaDeviceMapper.java

@@ -1,8 +1,8 @@
 package com.fjhx.iot.mapper.tda;
 
-import com.fjhx.iot.entity.tda.po.TdaDevice;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.iot.entity.tda.po.TdaDevice;
 import com.fjhx.iot.entity.tda.vo.TdaDeviceVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
@@ -23,4 +23,6 @@ public interface TdaDeviceMapper extends BaseMapper<TdaDevice> {
      */
     Page<TdaDeviceVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<TdaDevice> wrapper);
 
+    TdaDeviceVo detail(@Param("ew") IWrapper<TdaDevice> wrapper);
+
 }

+ 1 - 1
hx-iot/src/main/java/com/fjhx/iot/service/tda/TdaDeviceService.java

@@ -29,7 +29,7 @@ public interface TdaDeviceService extends BaseService<TdaDevice> {
     /**
      * 设备管理明细
      */
-    TdaDeviceVo detail(Long id);
+    TdaDeviceVo detail(TdaDeviceSelectDto dto);
 
     /**
      * 设备管理新增

+ 45 - 9
hx-iot/src/main/java/com/fjhx/iot/service/tda/impl/TdaDeviceServiceImpl.java

@@ -1,7 +1,8 @@
 package com.fjhx.iot.service.tda.impl;
 
-import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.iot.constants.RedisConstant;
@@ -11,8 +12,12 @@ import com.fjhx.iot.entity.tda.po.TdaDevice;
 import com.fjhx.iot.entity.tda.vo.TdaDeviceVo;
 import com.fjhx.iot.mapper.tda.TdaDeviceMapper;
 import com.fjhx.iot.service.tda.TdaDeviceService;
+import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.tenant.utils.DeptUstil;
+import com.ruoyi.common.core.domain.BasePo;
 import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
@@ -20,10 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -40,6 +42,8 @@ public class TdaDeviceServiceImpl extends ServiceImpl<TdaDeviceMapper, TdaDevice
 
     @Autowired
     private RedisCache redisCache;
+    @Autowired
+    private ProductInfoService productInfoService;
 
     @Override
     public Page<TdaDeviceVo> getPage(TdaDeviceSelectDto dto) {
@@ -48,7 +52,7 @@ public class TdaDeviceServiceImpl extends ServiceImpl<TdaDeviceMapper, TdaDevice
         wrapper.keyword(dto, new SqlField("td.device_name"));
 
         //权限过滤:设备管理-子公司看自己的,总公司看全部
-            wrapper.in("td.company_id", SecurityUtils.getCompanyIds());
+        wrapper.in("td.company_id", SecurityUtils.getCompanyIds());
         wrapper.eq("td.company_id", dto.getCompanyId());
 
 
@@ -110,9 +114,28 @@ public class TdaDeviceServiceImpl extends ServiceImpl<TdaDeviceMapper, TdaDevice
     }
 
     @Override
-    public TdaDeviceVo detail(Long id) {
-        TdaDevice TdaDevice = this.getById(id);
-        TdaDeviceVo result = BeanUtil.toBean(TdaDevice, TdaDeviceVo.class);
+    public TdaDeviceVo detail(TdaDeviceSelectDto dto) {
+        if (ObjectUtil.isEmpty(dto.getId()) && ObjectUtil.isEmpty(dto.getUserUuid())) {
+            throw new ServiceException("设备id/用户唯一标识,其中之一不能为空!");
+        }
+
+        //赋值任务信息
+        IWrapper<TdaDevice> wrapper = getWrapper();
+        wrapper.eq("td", TdaDevice::getId, dto.getId());
+        wrapper.eq("td", TdaDevice::getUserUuid, dto.getUserUuid());
+        TdaDeviceVo result = baseMapper.detail(wrapper);
+
+        //赋值产品信息
+        ProductInfo productInfo = productInfoService.getById(result.getProductId());
+        if (ObjectUtil.isNotEmpty(productInfo)) {
+            result.setProductName(productInfo.getName());
+            result.setProductCode(productInfo.getCustomCode());
+            result.setProductLength(productInfo.getLength());
+            result.setProductWidth(productInfo.getWidth());
+            result.setProductHeight(productInfo.getHeight());
+            result.setProductColor(productInfo.getColor());
+        }
+
         return result;
     }
 
@@ -145,7 +168,20 @@ public class TdaDeviceServiceImpl extends ServiceImpl<TdaDeviceMapper, TdaDevice
     }
 
     @Override
+    @DSTransactional
     public void edit(TdaDeviceDto tdaDeviceDto) {
+        String userUuid = tdaDeviceDto.getUserUuid();
+
+        //机台设置 更新用户设备唯一id
+        if (ObjectUtil.isNotEmpty(userUuid)) {
+            this.update(q -> q
+                    .eq(TdaDevice::getUserUuid, userUuid)
+                    .set(TdaDevice::getUserUuid, null)
+                    .set(BasePo::getUpdateTime, new Date())
+                    .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+            );
+        }
+
         this.updateById(tdaDeviceDto);
     }
 

+ 4 - 6
hx-iot/src/main/java/com/fjhx/iot/service/tda/impl/TdaProductServiceImpl.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.iot.entity.tda.dto.TdaProductDto;
 import com.fjhx.iot.entity.tda.dto.TdaProductSelectDto;
 import com.fjhx.iot.entity.tda.po.TdaApplication;
-import com.fjhx.iot.entity.tda.po.TdaDevice;
 import com.fjhx.iot.entity.tda.po.TdaProduct;
 import com.fjhx.iot.entity.tda.vo.TdaProductVo;
 import com.fjhx.iot.mapper.tda.TdaProductMapper;
@@ -14,7 +13,6 @@ import com.fjhx.iot.service.tda.TdaApplicationService;
 import com.fjhx.iot.service.tda.TdaDeviceService;
 import com.fjhx.iot.service.tda.TdaProductService;
 import com.fjhx.iot.utils.IoTDAUtil;
-import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -84,10 +82,10 @@ public class TdaProductServiceImpl extends ServiceImpl<TdaProductMapper, TdaProd
     public void delete(Long id) {
 
         // 查询产品是否已添加设备,已添加设备则不可删除
-        long count = tdaDeviceService.count(q -> q.eq(TdaDevice::getTdaProductId, id));
-        if (count > 0) {
-            throw new ServiceException("产品已添加设备,无法删除");
-        }
+//        long count = tdaDeviceService.count(q -> q.eq(TdaDevice::getTdaProductId, id));
+//        if (count > 0) {
+//            throw new ServiceException("产品已添加设备,无法删除");
+//        }
 
         // 华为ioDta删除产品
         TdaProduct tdaProduct = getById(id);

+ 13 - 18
hx-iot/src/main/resources/mapper/tda/TdaDeviceMapper.xml

@@ -2,23 +2,6 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.iot.mapper.tda.TdaDeviceMapper">
     <select id="getPage" resultType="com.fjhx.iot.entity.tda.vo.TdaDeviceVo">
-        --         select td.id,
---                td.tda_product_id,
---                td.product_id,
---                td.node_id,
---                td.device_name,
---                td.device_id,
---                td.secret,
---                td.create_user,
---                td.create_time,
---                td.update_user,
---                td.update_time,
---                tp.name        productName,
---                tp.device_type deviceType,
---                ta.app_name
---         from tda_device td
---                  left join tda_product tp on td.tda_product_id = tp.id
---                  left join tda_application ta on tp.tda_application_id = ta.id
         SELECT td.id,
                td.device_id,
                td.device_name,
@@ -32,9 +15,21 @@
                td.create_time,
                td.update_user,
                td.update_time,
-               td.company_id
+               td.company_id,
+               td.prod_mode,
+               td.prod_task_id,
+               td.user_uuid
         FROM tda_device td
             ${ew.customSqlSegment}
     </select>
+    <select id="detail" resultType="com.fjhx.iot.entity.tda.vo.TdaDeviceVo">
+        SELECT td.*,
+               pod.product_id,
+               po.`code` AS orderCode
+        FROM tda_device td
+                 LEFT JOIN production_order_detail pod ON td.prod_task_id = pod.id
+                 LEFT JOIN production_order po ON pod.produce_order_id = po.id
+            ${ew.customSqlSegment}
+    </select>
 
 </mapper>

+ 9 - 0
hx-mes/src/main/java/com/fjhx/mes/controller/production/ProductionSchedulingController.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingDto;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingSelectDto;
 import com.fjhx.mes.entity.production.po.ProductionScheduling;
+import com.fjhx.mes.entity.production.vo.ProductionOrderDetailVo;
 import com.fjhx.mes.entity.production.vo.ProductionSchedulingVo;
 import com.fjhx.mes.service.production.ProductionSchedulingService;
 import com.ruoyi.common.core.domain.BaseSelectDto;
@@ -68,4 +69,12 @@ public class ProductionSchedulingController {
         productionSchedulingService.delete(dto.getId());
     }
 
+    /**
+     * 获取排程任务列表
+     */
+    @PostMapping("/schedulingTaskList")
+    public List<ProductionOrderDetailVo> schedulingTaskList() {
+        return productionSchedulingService.schedulingTaskList();
+    }
+
 }

+ 5 - 0
hx-mes/src/main/java/com/fjhx/mes/mapper/production/ProductionSchedulingMapper.java

@@ -3,6 +3,7 @@ package com.fjhx.mes.mapper.production;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.mes.entity.production.po.ProductionScheduling;
+import com.fjhx.mes.entity.production.vo.ProductionOrderDetailVo;
 import com.fjhx.mes.entity.production.vo.ProductionSchedulingVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
@@ -29,4 +30,8 @@ public interface ProductionSchedulingMapper extends BaseMapper<ProductionSchedul
      */
     List<ProductionSchedulingVo> listSumQuantity(@Param("ew") IWrapper<ProductionScheduling> wrapper);
 
+    /**
+     * 排程任务列表
+     */
+    List<ProductionOrderDetailVo> schedulingTaskList(@Param("ew") IWrapper<Object> wrapper);
 }

+ 5 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/ProductionSchedulingService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingDto;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingSelectDto;
 import com.fjhx.mes.entity.production.po.ProductionScheduling;
+import com.fjhx.mes.entity.production.vo.ProductionOrderDetailVo;
 import com.fjhx.mes.entity.production.vo.ProductionSchedulingVo;
 import com.ruoyi.common.core.service.BaseService;
 
@@ -39,4 +40,8 @@ public interface ProductionSchedulingService extends BaseService<ProductionSched
      */
     void delete(Long id);
 
+    /**
+     * 获取排程任务列表
+     */
+    List<ProductionOrderDetailVo> schedulingTaskList();
 }

+ 24 - 0
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionSchedulingServiceImpl.java

@@ -10,6 +10,7 @@ import com.fjhx.mes.entity.production.dto.ProductionSchedulingDto;
 import com.fjhx.mes.entity.production.dto.ProductionSchedulingSelectDto;
 import com.fjhx.mes.entity.production.po.ProductionOrder;
 import com.fjhx.mes.entity.production.po.ProductionScheduling;
+import com.fjhx.mes.entity.production.vo.ProductionOrderDetailVo;
 import com.fjhx.mes.entity.production.vo.ProductionSchedulingVo;
 import com.fjhx.mes.mapper.production.ProductionSchedulingMapper;
 import com.fjhx.mes.service.production.ProductionSchedulingService;
@@ -131,4 +132,27 @@ public class ProductionSchedulingServiceImpl extends ServiceImpl<ProductionSched
         this.removeById(id);
     }
 
+    @Override
+    public List<ProductionOrderDetailVo> schedulingTaskList() {
+        IWrapper<Object> wrapper = IWrapper.getWrapper();
+        //获取当天排程的任务
+        wrapper.eq("DATEDIFF( now(), ps.scheduling_date )", 0);
+        wrapper.groupBy("pod.id");
+        List<ProductionOrderDetailVo> voList = baseMapper.schedulingTaskList(wrapper);
+
+        //赋值产品信息
+        productInfoService.attributeAssign(voList, ProductionOrderDetailVo::getProductId, (item, productInfo) -> {
+            item.setProductName(productInfo.getName());
+            item.setProductCode(productInfo.getCustomCode());
+            item.setProductLength(productInfo.getLength());
+            item.setProductWidth(productInfo.getWidth());
+            item.setProductHeight(productInfo.getHeight());
+            item.setProductColor(productInfo.getColor());
+        });
+
+        //赋值任务信息
+
+        return voList;
+    }
+
 }

+ 8 - 0
hx-mes/src/main/resources/mapper/production/ProductionSchedulingMapper.xml

@@ -35,5 +35,13 @@
                  JOIN production_processes pp ON ps.processes_id = pp.id
             ${ew.customSqlSegment}
     </select>
+    <select id="schedulingTaskList" resultType="com.fjhx.mes.entity.production.vo.ProductionOrderDetailVo">
+        SELECT pod.*,
+               po.`code` AS orderCode
+        FROM production_order_detail pod
+                 LEFT JOIN production_order po ON pod.produce_order_id = po.id
+                 JOIN production_scheduling ps ON ps.task_id = pod.id
+            ${ew.customSqlSegment}
+    </select>
 
 </mapper>