Browse Source

获得电池类型

jaikuai 3 years ago
parent
commit
febcb60b0f

+ 24 - 2
src/main/java/cn/fastfun/controller/api/ApiAppDeviceController.java

@@ -1,13 +1,15 @@
 package cn.fastfun.controller.api;
 
+import cn.fastfun.controller.dto.DeviceAttrDTO;
+import cn.fastfun.controller.param.DeviceBathQueryParam;
 import cn.fastfun.controller.param.DeviceQueryParam;
 import cn.fastfun.service.AppDeviceService;
 import cn.fastfun.service.SysExcelFieldService;
 import cn.fastfun.service.entity.AppDevice;
+import cn.fastfun.util.ObjectUtil;
 import com.bridge.dto.ApiDTO;
 import com.bridge.dto.ApiPageDTO;
 import com.bridge.dto.IdParam;
-import com.bridge.service.JpaService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -17,8 +19,8 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -85,4 +87,24 @@ public class ApiAppDeviceController {
         return ApiDTO.ok(deviceCount);
     }
 
+    @ApiOperation(value = "设备批次分页搜索")
+    @RequestMapping(value = "batchNum/pageQuery", method = RequestMethod.POST)
+    public ApiPageDTO batchNumPageQuery(@RequestBody DeviceBathQueryParam param) {
+        StringBuffer sql = new StringBuffer("select t.batch_num,t.sn,t.deliver_time,count(0) as total from app_device t");
+        sql.append(" group by t.batch_num");
+
+        ApiPageDTO page = appDeviceService.getListBySQL(sql.toString(), new HashMap<>(), param);
+
+        // 组装数据
+        List<Map<String, Object>> list = (List<Map<String, Object>>) page.getData();
+        for (Map<String, Object> p : list) {
+            DeviceAttrDTO attr = appDeviceService.sn2Attr(ObjectUtil.obj2String(p.get("sn")));
+            p.put("type_title", attr.getTypeTitle());
+            p.put("pack_title", attr.getPackTitle());
+        }
+        page.setData(list);
+
+        return page;
+    }
+
 }

+ 45 - 0
src/main/java/cn/fastfun/controller/dto/DeviceAttrDTO.java

@@ -0,0 +1,45 @@
+package cn.fastfun.controller.dto;
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Setter
+@Getter
+@NoArgsConstructor
+public class DeviceAttrDTO {
+
+    // 批次号
+    private String batchNum;
+
+    // 电池类型
+    private String type;
+
+    // pack厂
+    private String pack;
+
+
+    // 显示名称
+    private String typeTitle;
+
+    private String packTitle;
+
+    /**
+     * 分拆sn号
+     *
+     * @param sn
+     */
+    public DeviceAttrDTO(String batchNum, String sn) {
+        setBatchNum(batchNum);
+        splitSn(sn);
+    }
+
+    public DeviceAttrDTO(String sn) {
+        splitSn(sn);
+    }
+
+    private void splitSn(String sn) {
+        setType(sn.substring(0, 1));
+        setPack(sn.substring(1, 3));
+    }
+}

+ 4 - 0
src/main/java/cn/fastfun/controller/dto/DeviceBathNumDTO.java

@@ -0,0 +1,4 @@
+package cn.fastfun.controller.dto;
+
+public class DeviceBathNumDTO {
+}

+ 6 - 0
src/main/java/cn/fastfun/controller/param/DeviceBathQueryParam.java

@@ -0,0 +1,6 @@
+package cn.fastfun.controller.param;
+
+import com.bridge.dto.QueryParam;
+
+public class DeviceBathQueryParam extends QueryParam {
+}

+ 18 - 1
src/main/java/cn/fastfun/service/AppDeviceService.java

@@ -1,8 +1,9 @@
 package cn.fastfun.service;
 
+import cn.fastfun.controller.dto.DeviceAttrDTO;
 import cn.fastfun.service.entity.AppDevice;
+import cn.fastfun.service.repository.AppDeviceRepository;
 import com.bridge.service.JpaService;
-import com.bridge.service.impl.JpaServiceImp;
 
 import java.util.List;
 import java.util.Map;
@@ -17,4 +18,20 @@ public interface AppDeviceService extends JpaService<AppDevice, String> {
      */
     void importDevice(List<Map<String, Object>> list);
 
+    /**
+     * 获得repository
+     *
+     * @return
+     */
+    AppDeviceRepository getRepository();
+
+
+    /**
+     * sn编号转中文
+     *
+     * @param sn
+     * @return
+     */
+    DeviceAttrDTO sn2Attr(String sn);
+
 }

+ 44 - 4
src/main/java/cn/fastfun/service/impl/AppDeviceServiceImp.java

@@ -1,12 +1,19 @@
 package cn.fastfun.service.impl;
 
+import cn.fastfun.controller.dto.DeviceAttrDTO;
 import cn.fastfun.service.AppDeviceService;
+import cn.fastfun.service.ProductService;
 import cn.fastfun.service.entity.AppDevice;
+import cn.fastfun.service.entity.Product;
+import cn.fastfun.service.entity.SysDict;
+import cn.fastfun.service.repository.AppDeviceRepository;
+import com.bridge.dto.QueryParamExp;
 import com.bridge.exception.ApiRuntimeException;
+import com.bridge.service.JpaService;
 import com.bridge.service.impl.JpaServiceImp;
 import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -18,16 +25,49 @@ import java.util.Map;
 @Service("appDeviceService")
 public class AppDeviceServiceImp extends JpaServiceImp<AppDevice, String> implements AppDeviceService {
 
+    @Resource
+    AppDeviceRepository deviceRepository;
+
+    @Resource
+    ProductService productService;
+
     @Override
     public void importDevice(List<Map<String, Object>> list) {
         List<AppDevice> devices = new ArrayList<>();
-        String diffBatchNum = "";
+        DeviceAttrDTO diffAttrDTO = null;
         for (Map<String, Object> p : list) {
             AppDevice device = new AppDevice(p);
-            if (StringUtils.isEmpty(diffBatchNum)) diffBatchNum = device.getBatchNum();
-            if (!diffBatchNum.equals(device.getBatchNum())) new ApiRuntimeException("存在不同的批次号");
+            // 数据效验
+            if (null == diffAttrDTO) diffAttrDTO = new DeviceAttrDTO(device.getBatchNum(), device.getSn());
+            DeviceAttrDTO temp = new DeviceAttrDTO(device.getBatchNum(), device.getSn());
+            if (!temp.getBatchNum().equals(diffAttrDTO.getBatchNum())) new ApiRuntimeException("存在不同的批次号");
+            if (!temp.getPack().equals(diffAttrDTO.getPack())) new ApiRuntimeException("存在不同的PACK厂");
+            if (!temp.getType().equals(diffAttrDTO.getType())) new ApiRuntimeException("存在不同的电池类型");
             devices.add(device);
         }
         save(devices);
     }
+
+
+    public AppDeviceRepository getRepository() {
+        return deviceRepository;
+    }
+
+    @Override
+    public DeviceAttrDTO sn2Attr(String sn) {
+        DeviceAttrDTO dto = new DeviceAttrDTO(sn);
+
+        dto.setTypeTitle(getProductTitle("产品类型", dto.getType()));
+        dto.setPackTitle(getProductTitle("PACK制造商", dto.getPack()));
+
+        return dto;
+    }
+
+    private String getProductTitle(String typeName, String code) {
+        Product product = productService.getOne(
+                QueryParamExp.eq("snType", typeName),
+                QueryParamExp.eq("snTypeCode", code));
+        if (null != product) return product.getSnTypeDesc();
+        return "未知";
+    }
 }

+ 10 - 3
src/main/java/cn/fastfun/service/repository/AppDeviceRepository.java

@@ -1,12 +1,19 @@
 package cn.fastfun.service.repository;
 
+import cn.fastfun.controller.dto.DeviceBathNumDTO;
 import cn.fastfun.service.entity.AppDevice;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
 
 /**
-* Created by Eye
-* @Author Bridge
-*/
+ * Created by Eye
+ *
+ * @Author Bridge
+ */
 public interface AppDeviceRepository extends JpaRepository<AppDevice, String>, JpaSpecificationExecutor<AppDevice> {
+
+    @Query(value = "select t.batch_num,t.sn,t.deliver_time,count(0) from pdms_oss.app_device t group by t.batch_num", nativeQuery = true)
+    DeviceBathNumDTO selectCount();
+
 }