Browse Source

重构表结构

jaikuai 3 years ago
parent
commit
66b6996532

+ 8 - 14
src/main/java/cn/fastfun/controller/api/ApiAppDeviceController.java

@@ -1,6 +1,5 @@
 package cn.fastfun.controller.api;
 
-import cn.fastfun.controller.dto.DeviceAttrDTO;
 import cn.fastfun.controller.dto.DevicePageStatDTO;
 import cn.fastfun.controller.param.DeviceBathQueryParam;
 import cn.fastfun.controller.param.DeviceFormParam;
@@ -8,22 +7,17 @@ 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.service.entity.Product;
 import cn.fastfun.util.DateUtils;
-import cn.fastfun.util.VerifyUtil;
 import cn.fastfun.util.ObjectUtil;
-
+import cn.fastfun.util.VerifyUtil;
 import com.bridge.dto.ApiDTO;
 import com.bridge.dto.ApiPageDTO;
 import com.bridge.dto.IdParam;
 import com.bridge.dto.QueryParamExp;
-import com.bridge.service.JpaService;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.extern.slf4j.Slf4j;
-
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.data.domain.Page;
 import org.springframework.util.StringUtils;
@@ -32,8 +26,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -125,7 +117,7 @@ public class ApiAppDeviceController {
     @ApiOperation(value = "设备批次分页搜索列表")
     @RequestMapping(value = "batchNum/pageQuery", method = RequestMethod.POST)
     public ApiPageDTO batchNumPageQuery(@RequestBody DeviceBathQueryParam param) {
-        StringBuffer sql = new StringBuffer("select t1.batch_num,t1.sn,t1.deliver_time,count(0) as total,t1.add_time,t1.received_place from app_device t1");
+        StringBuffer sql = new StringBuffer("select t1.batch_num,t1.sn,t1.deliver_time,count(0) as total,count(if(status > 0,true,null)) as in_storage,count(if(status = 0,true,null)) as transfer,t1.add_time,t1.received_place from app_device t1");
 
         if (!StringUtils.isEmpty(param.getBatchNum())) {
             sql.append(" where t1.batch_num like '%").append(param.getBatchNum()).append("%'");
@@ -142,12 +134,14 @@ public class ApiAppDeviceController {
         // 组装数据
         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());
+            AppDevice device = new AppDevice();
+            device.setSn(ObjectUtil.obj2String(p.get("sn")));
+            appDeviceService.addSnTitle(device);
+
+            p.put("type_title", device.getTypeTitle());
+            p.put("pack_title", device.getPackTitle());
             p.put("deliver_time", DateUtils.toString(ObjectUtil.obj2Date(p.get("deliver_time")), DateUtils.YMD));
             p.put("add_time", DateUtils.toString(ObjectUtil.obj2Date(p.get("add_time")), DateUtils.YMDHMS));
-            p.put("in_storage", 0);
             p.put("operator", "admin");
         }
         page.setData(list);

+ 71 - 7
src/main/java/cn/fastfun/controller/api/ApiAppDeviceLogController.java

@@ -9,10 +9,7 @@ import cn.fastfun.service.entity.AppDevice;
 import cn.fastfun.util.DateUtils;
 import cn.fastfun.util.ObjectUtil;
 import cn.fastfun.util.VerifyUtil;
-import com.bridge.dto.ApiDTO;
-import com.bridge.dto.ApiPageDTO;
-import com.bridge.dto.IdParam;
-import com.bridge.dto.QueryParamExp;
+import com.bridge.dto.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -41,9 +38,6 @@ public class ApiAppDeviceLogController {
     @Resource(name = "appDeviceService")
     AppDeviceService appDeviceService;
 
-    @Resource
-    SysExcelFieldService sysExcelFieldService;
-
     @Resource
     AppDeviceLogService deviceLogService;
 
@@ -76,6 +70,76 @@ public class ApiAppDeviceLogController {
         return ApiDTO.ok();
     }
 
+    @ApiOperation(value = "记录搜索列表")
+    @RequestMapping(value = "pageQuery", method = RequestMethod.POST)
+    public ApiDTO deviceLogPageQuery(@RequestBody QueryParam param) {
+        return ApiDTO.ok(deviceLogService.findByParam(param));
+    }
+
+
+    @ApiOperation(value = "调拨分页搜索列表")
+    @RequestMapping(value = "batchNum/transfer/pageQuery", method = RequestMethod.POST)
+    public ApiPageDTO batchNumPageQuery(@RequestBody LogTransferQueryParam param) {
+        StringBuffer sql = new StringBuffer("select t.batch_num,t.add_time,count(0) as total,t.tf_event,t.tf_device_type,t.tf_used,t.tf_describe,t.out_custom_id,t.operator from app_device_log t where t.type = 2");
+
+        // sn搜索
+        if (!StringUtils.isEmpty(param.getSn())) {
+            sql.append(" where t.sn like '%").append(param.getSn()).append("%'");
+        }
+
+        // 类型搜索
+        if(!StringUtils.isEmpty(param.getType())){
+            sql.append(StringUtils.isEmpty(param.getSn()) ? "where" : "and");
+            sql.append(" t.tf_device_type = '").append(param.getType()).append("'");
+        }
+        sql.append(" group by t.batch_num,t.add_time,t.tf_event,t.tf_device_type,t.tf_used,t.tf_describe,t.out_custom_id,t.operator");
+        if (!StringUtils.isEmpty(param.getOrderBy())) {
+            sql.append(param.getOrderBy());
+        }
+        log.info("SQL: {}", sql.toString());
+
+        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) {
+            p.put("add_time", DateUtils.toString(ObjectUtil.obj2Date(p.get("add_time")), DateUtils.YMDHMS));
+            p.put("operator", "admin");
+        }
+        page.setData(list);
+        return page;
+    }
+
+
+    @ApiOperation(value = "出库分页搜索列表")
+    @RequestMapping(value = "batchNum/out/pageQuery", method = RequestMethod.POST)
+    public ApiPageDTO outPageQuery(@RequestBody LogTransferQueryParam param) {
+        StringBuffer sql = new StringBuffer("select t.batch_num,t.add_time,count(0) as total,t.out_type,t.receiver_name,t.receiver_phone,t.remarks,t.out_custom_id,t.operator from app_device_log t where t.type = 3");
 
+        // sn搜索
+        if (!StringUtils.isEmpty(param.getSn())) {
+            sql.append(" where t.sn like '%").append(param.getSn()).append("%'");
+        }
+
+        // 类型搜索
+        if(!StringUtils.isEmpty(param.getType())){
+            sql.append(StringUtils.isEmpty(param.getSn()) ? "where" : "and");
+            sql.append(" t.out_type = '").append(param.getType()).append("'");
+        }
+        sql.append(" group by t.batch_num,t.add_time,t.out_type,t.receiver_name,t.receiver_phone,t.remarks,t.out_custom_id,t.operator");
+        if (!StringUtils.isEmpty(param.getOrderBy())) {
+            sql.append(param.getOrderBy());
+        }
+        log.info("SQL: {}", sql.toString());
+
+        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) {
+            p.put("add_time", DateUtils.toString(ObjectUtil.obj2Date(p.get("add_time")), DateUtils.YMDHMS));
+            p.put("operator", "admin");
+        }
+        page.setData(list);
+        return page;
+    }
 
 }

+ 17 - 2
src/main/java/cn/fastfun/controller/param/DeviceQueryParam.java

@@ -5,8 +5,11 @@ import com.bridge.dto.QueryParamExp;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
+import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
+import java.util.List;
+
 @Setter
 @Getter
 public class DeviceQueryParam extends QueryParam {
@@ -26,7 +29,19 @@ public class DeviceQueryParam extends QueryParam {
             addParam(QueryParamExp.like("batchNum", "%".concat(batchNum).concat("%")));
     }
 
-    @ApiModelProperty(value = "入库状态", name = "inStorage", example = "0:未入库,1:已入库")
-    private Integer inStorage;
+    @ApiModelProperty(value = "状态", name = "status", example = "0:未入库,1:已入库,2:已调拨,3:已出库,4:已处置")
+    public void setStatus(List<Integer> status) {
+        if (!CollectionUtils.isEmpty(status)) {
+            addParam(QueryParamExp.in("status", status.toArray(new Integer[]{})));
+        }
+    }
+
+    @ApiModelProperty(value = "自检状态", name = "checkStatus", example = "0:未通过,1:已通过")
+    public void setCheckStatus(List<Integer> status) {
+        if (!CollectionUtils.isEmpty(status)) {
+            addParam(QueryParamExp.in("checkStatus", status.toArray(new Integer[]{})));
+        }
+    }
+
 
 }

+ 18 - 0
src/main/java/cn/fastfun/controller/param/LogTransferQueryParam.java

@@ -0,0 +1,18 @@
+package cn.fastfun.controller.param;
+
+import com.bridge.dto.QueryParam;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+@Setter
+@Getter
+public class LogTransferQueryParam extends QueryParam {
+
+    @ApiModelProperty(value = "SN号", name = "sn")
+    private String sn;
+
+    @ApiModelProperty(value = "调拨类型", name = "type")
+    private String type;
+
+}

+ 27 - 8
src/main/java/cn/fastfun/service/entity/AppDeviceLog.java

@@ -2,19 +2,20 @@ package cn.fastfun.service.entity;
 
 
 import cn.fastfun.controller.param.HandelFormParam;
-import cn.fastfun.controller.param.LibraryInFormParam;
 import cn.fastfun.controller.param.LibraryOutFormParam;
 import cn.fastfun.controller.param.TransferFormParam;
+import com.bridge.entity.DateEntity;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
-import javax.persistence.*;
+import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Table;
-
-import com.bridge.entity.DateEntity;
+import java.util.Date;
 
 
 @Entity
@@ -22,6 +23,7 @@ import com.bridge.entity.DateEntity;
 @Setter
 @Getter
 @NoArgsConstructor
+@JsonInclude(JsonInclude.Include.NON_NULL)
 public class AppDeviceLog extends DateEntity {
 
     private static final long serialVersionUID = 1L;
@@ -96,6 +98,15 @@ public class AppDeviceLog extends DateEntity {
     @Column(name = "hf_handle_content")
     private String hfHandleContent;
 
+    @ApiModelProperty(value = "操作者", name = "operator", required = true)
+    @Column(name = "operator")
+    private String operator;
+
+    @ApiModelProperty(value = "批次号", name = "batchNum", required = true, example = "")
+    @Column(name = "batch_num")
+    @JsonIgnore
+    private String batchNum;
+
 
     public AppDeviceLog(String sn, String imei) {
         setSn(sn);
@@ -103,36 +114,44 @@ public class AppDeviceLog extends DateEntity {
     }
 
     // 入库属性
-    public AppDeviceLog toInStorage() {
+    public AppDeviceLog toInStorage(Date addTime, String batchNum) {
         setType(1); // 入库
+        setAddTime(addTime);
+        setBatchNum(batchNum);
         return this;
     }
 
     // 划拨
-    public AppDeviceLog toTransfer(TransferFormParam param) {
+    public AppDeviceLog toTransfer(TransferFormParam param, Date addTime, String batchNum) {
         setType(2); // 划拨
         setTfEvent(param.getEvent()); //
         setTfDeviceType(param.getDeviceType());
         setTfDescribe(param.getDescribe());
         setTfUsed(param.getUsed());
         setOutCustomId(param.getCustomId());
+        setAddTime(addTime);
+        setBatchNum(batchNum);
         return this;
     }
 
     // 出库
-    public AppDeviceLog outStorage(LibraryOutFormParam param) {
+    public AppDeviceLog outStorage(LibraryOutFormParam param, Date addTime, String batchNum) {
         setType(3); // 出库
         setOutType(param.getOutType());
         setReceiverName(param.getReceiverName());
         setReceiverPhone(param.getReceiverPhone());
+        setAddTime(addTime);
+        setBatchNum(batchNum);
         return this;
     }
 
     // 处置
-    public AppDeviceLog toHandle(HandelFormParam param) {
+    public AppDeviceLog toHandle(HandelFormParam param, Date addTime, String batchNum) {
         setType(4);
         setHfEvent(param.getEvent());
         setHfHandleContent(param.getHandleContent());
+        setAddTime(addTime);
+        setBatchNum(batchNum);
         return this;
     }
 

+ 18 - 7
src/main/java/cn/fastfun/service/impl/AppDeviceLogServiceImpl.java

@@ -18,6 +18,8 @@ import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import javax.transaction.Transactional;
+import java.util.Date;
+import java.util.UUID;
 
 @Slf4j
 @Service
@@ -33,13 +35,16 @@ public class AppDeviceLogServiceImpl extends JpaServiceImp<AppDeviceLog, String>
 
         }
         if (!CollectionUtils.isEmpty(param.getSn())) {
+            Date time = new Date();
+            String batchNum = UUID.randomUUID().toString();
             param.getSn().forEach(p -> {
                 AppDevice appDevice = appDeviceService.getOne(QueryParamExp.eq("sn", p));
                 if (null == appDevice) throw new ApiRuntimeException("设备信息不存在!");
-                if (0 != appDevice.getStatus()) throw new ApiRuntimeException("设备已经入库!");
-                appDevice.setStatus(1); // 已入库
-                appDeviceService.save(appDevice);
-                save(new AppDeviceLog(p, appDevice.getImei()).toInStorage()); // 记录入库日志
+                if (appDevice.getStatus() <= 1) {
+                    appDevice.setStatus(1); // 已入库
+                    appDeviceService.save(appDevice);
+                    save(new AppDeviceLog(p, appDevice.getImei()).toInStorage(time, batchNum)); // 记录入库日志
+                }
             });
         }
     }
@@ -48,6 +53,8 @@ public class AppDeviceLogServiceImpl extends JpaServiceImp<AppDeviceLog, String>
     @Transactional
     public void transfer(TransferFormParam param) {
         if (!CollectionUtils.isEmpty(param.getSn())) {
+            Date time = new Date();
+            String batchNum = UUID.randomUUID().toString();
             param.getSn().forEach(p -> {
                 AppDevice appDevice = appDeviceService.getOne(QueryParamExp.eq("sn", p));
                 if (null == appDevice) throw new ApiRuntimeException("设备信息不存在!");
@@ -55,7 +62,7 @@ public class AppDeviceLogServiceImpl extends JpaServiceImp<AppDeviceLog, String>
                 appDevice.setStatus(2); // 已划拨
                 appDevice.setOwnerId(param.getCustomId()); // 设置归属
                 appDeviceService.save(appDevice);
-                save(new AppDeviceLog(p, appDevice.getImei()).toTransfer(param)); // 记录划拨日志
+                save(new AppDeviceLog(p, appDevice.getImei()).toTransfer(param, time, batchNum)); // 记录划拨日志
             });
         }
     }
@@ -63,26 +70,30 @@ public class AppDeviceLogServiceImpl extends JpaServiceImp<AppDeviceLog, String>
     @Override
     @Transactional
     public void outStorage(LibraryOutFormParam param) {
+        Date time = new Date();
+        String batchNum = UUID.randomUUID().toString();
         param.getSn().forEach(p -> {
             AppDevice appDevice = appDeviceService.getOne(QueryParamExp.eq("sn", p));
             if (null == appDevice) throw new ApiRuntimeException("设备信息不存在!");
             if (2 != appDevice.getStatus()) throw new ApiRuntimeException("设备不是划拨状态!");
             appDevice.setStatus(3); // 已出库
             appDeviceService.save(appDevice);
-            save(new AppDeviceLog(p, appDevice.getImei()).outStorage(param)); // 记录出库日志
+            save(new AppDeviceLog(p, appDevice.getImei()).outStorage(param, time, batchNum)); // 记录出库日志
         });
     }
 
     @Override
     @Transactional
     public void handle(HandelFormParam param) {
+        Date time = new Date();
+        String batchNum = UUID.randomUUID().toString();
         param.getSn().forEach(p -> {
             AppDevice appDevice = appDeviceService.getOne(QueryParamExp.eq("sn", p));
             if (null == appDevice) throw new ApiRuntimeException("设备信息不存在!");
             if (1 != appDevice.getStatus()) throw new ApiRuntimeException("设备不是入库状态!");
             appDevice.setStatus(4); // 处置
             appDeviceService.save(appDevice);
-            save(new AppDeviceLog(p, appDevice.getImei()).toHandle(param)); // 记录处置日志
+            save(new AppDeviceLog(p, appDevice.getImei()).toHandle(param, time, batchNum)); // 记录处置日志
         });
     }
 }

+ 6 - 0
src/main/java/cn/fastfun/service/impl/AppDeviceServiceImp.java

@@ -7,6 +7,7 @@ import cn.fastfun.service.entity.AppDevice;
 import cn.fastfun.service.entity.Product;
 import cn.fastfun.service.repository.AppDeviceRepository;
 
+import com.bridge.dto.ApiPageDTO;
 import com.bridge.dto.QueryParamExp;
 import com.bridge.exception.ApiRuntimeException;
 import com.bridge.service.impl.JpaServiceImp;
@@ -70,6 +71,11 @@ public class AppDeviceServiceImp extends JpaServiceImp<AppDevice, String> implem
         device.setSpecTitle("");
     }
 
+    @Override
+    public ApiPageDTO batchNumPageQuery() {
+        return null;
+    }
+
 
     private String getProductTitle(String typeName, String code) {
         Product product = productService.getOne(