From 73f1492a2e14fec08df159d4ab9a88e1d660c572 Mon Sep 17 00:00:00 2001
From: shichongfu <shi_chongfu@163.com>
Date: 星期日, 08 十月 2023 10:01:35 +0800
Subject: [PATCH] 设备

---
 src/main/java/com/product/mobile/core/service/ide/INavBarManagerService.java    |    8 +
 src/main/java/com/product/mobile/core/service/SystemTableMetaService.java       |   86 ++++++++++
 src/main/java/com/product/mobile/core/controller/SystemTableMetaController.java |   54 ++++++
 src/main/java/com/product/mobile/core/service/NavBarManagerService.java         |   83 ++++++++++
 src/main/java/com/product/mobile/device/controller/DeviceManagerController.java |  232 +++++++++++++++++++++++++++++
 5 files changed, 463 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/product/mobile/core/controller/SystemTableMetaController.java b/src/main/java/com/product/mobile/core/controller/SystemTableMetaController.java
new file mode 100644
index 0000000..b47f106
--- /dev/null
+++ b/src/main/java/com/product/mobile/core/controller/SystemTableMetaController.java
@@ -0,0 +1,54 @@
+package com.product.mobile.core.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+import com.product.admin.config.SystemCode;
+import com.product.common.lang.StringUtils;
+import com.product.core.config.CoreConst;
+import com.product.core.controller.support.AbstractBaseController;
+import com.product.core.entity.FieldSetEntity;
+import com.product.core.entity.RequestParameterEntity;
+import com.product.core.spring.context.SpringMVCContextHolder;
+import com.product.mobile.core.service.ApplicationsService;
+import com.product.mobile.core.service.SystemTableMetaService;
+import com.product.module.sys.version.ApiVersion;
+
+/**
+ * App鎸囧畾琛ㄧ粨鏋勪俊鎭�
+ *
+ * @author shicf
+ */
+@RequestMapping("/api/mobile")
+@RestController
+public class SystemTableMetaController extends AbstractBaseController {
+    @Autowired
+    SystemTableMetaService systemTableMetaService;
+
+    /**
+     * 鑾峰彇鎸囧畾琛ㄧ殑鏁版嵁缁撴瀯淇℃伅
+     *
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/system/table/list-meta/{version}", method = RequestMethod.POST)
+    @ApiVersion(1)
+    public String tableMetaList(HttpServletRequest request) {
+        FieldSetEntity fse = null;
+        Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
+        if (bean != null) {
+            RequestParameterEntity reqp = (RequestParameterEntity) bean;
+            fse = reqp.getFormData();
+        }
+        if (bean == null || fse == null) {
+            SpringMVCContextHolder.getSystemLogger().error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
+            return this.error(SystemCode.SYSTEM_FORM_NODATA.getValue(), SystemCode.SYSTEM_FORM_NODATA.getText());
+        }
+        return this.OK_List(systemTableMetaService.getSystemTableMeta(fse));
+    }
+
+}
diff --git a/src/main/java/com/product/mobile/core/service/NavBarManagerService.java b/src/main/java/com/product/mobile/core/service/NavBarManagerService.java
index 8950b72..9f5f1f6 100644
--- a/src/main/java/com/product/mobile/core/service/NavBarManagerService.java
+++ b/src/main/java/com/product/mobile/core/service/NavBarManagerService.java
@@ -199,6 +199,89 @@
 		}
 		return null;
 	}
+	/**
+	 * 璁惧绠$悊
+	 * 绉诲姩绔幏鍙栧鑸爮锛堝睍绀鸿烦杞級
+	 *
+	 * @return
+	 * @throws BaseException
+	 */
+	@Override
+	public List<Object> getDeviceNarBarTree() throws BaseException {
+		SystemUser currentUser = SpringMVCContextHolder.getCurrentUser();
+		if (currentUser == null) {
+			return null;
+		}
+		StringBuilder sql = new StringBuilder();
+		sql.append(" SELECT ");
+		sql.append(" a.function_uuid, ");
+		sql.append(" a.nav_bar_img, ");
+		sql.append(" a.nav_bar_name, ");
+		sql.append(" a.module_category, ");
+		sql.append(" b.route_name, ");
+		sql.append(" concat( '/', b.uuid ) path, ");
+		sql.append(" a.uuid, ");
+		sql.append(" a.sequence,a.module_sequence ");
+		sql.append(" FROM ");
+		sql.append(" product_sys_app_nav_bar a ");
+		sql.append(" JOIN product_sys_functions c ON a.function_uuid = c.uuid ");
+		sql.append(" AND c.status_uuid = 1 ");
+		sql.append(" and c.function_type_uuid=1 ");
+		sql.append(" AND concat( ',', c.client_type_uuid, ',' ) LIKE '%,App,%' ");
+		sql.append(" JOIN product_sys_function_buttons b ON a.function_uuid = b.function_uuid ");
+		sql.append(" AND b.button_type = 1 ");
+		sql.append(" AND b.is_main = 1 ");
+		sql.append(" AND b.client_type_uuid = 'App' ");
+		sql.append(" JOIN product_sys_function_permission permission ON concat( ',', permission.button_uuid, ',' ) LIKE concat( ',%', b.uuid, '%,' ) ");
+		sql.append(" JOIN product_sys_role role on role.uuid=permission.role_uuid and role.is_used=1 ");
+		//浣跨敤瑙掕壊鍋氬姛鑳芥潈闄愰檺鍒�
+        sql.append(" and ").append(BaseUtil.buildQuestionMarkFilter("role.uuid", currentUser.getRoles().split(","), true));
+		//娣诲姞璁惧绠$悊妯″潡杩囨护鏉′欢
+        //sql.append(" and a.module_category='璁惧绠$悊' ");
+        
+        sql.append(" GROUP BY a.function_uuid, ");
+		sql.append(" a.nav_bar_img, ");
+		sql.append(" a.nav_bar_name, ");
+		sql.append(" a.module_category, ");
+		sql.append(" a.uuid ,");
+		sql.append(" concat( '/', b.uuid ) ,");
+		sql.append(" a.sequence, ");
+		sql.append(" b.route_name,a.module_sequence ");
+		sql.append(" order by a.module_sequence,a.sequence");
+		DataTableEntity dt = getBaseDao().listTable(sql.toString(), new Object[]{});
+		if (!DataTableEntity.isEmpty(dt)) {
+			Map<String, List<NavBarEntity>> map = new LinkedHashMap<>();
+			for (int i = 0; i < dt.getRows(); i++) {
+				String module_name = dt .getString(i, MobileCoreConst.MODULE_CATEGORY);
+				List<NavBarEntity> navBarEntities = map.get(module_name);
+				if (navBarEntities == null) {
+					navBarEntities = new ArrayList<>();
+					map.put(module_name, navBarEntities);
+				}
+				String file_uuid = dt.getString(i, MobileCoreConst.NAV_BAR_IMG);
+				try {
+					String bytes = null;
+					byte[] fileContent = fileManagerService.getFileContent(file_uuid);
+					if (fileContent != null && fileContent.length > 0) {
+						bytes = Base64.encodeBase64String(fileContent);
+					}
+					dt.setFieldValue(i, MobileCoreConst.NAV_BAR_IMG, bytes);
+				} catch (Exception e) {
+					dt.setFieldValue(i, MobileCoreConst.NAV_BAR_IMG, null);
+				}
+				navBarEntities.add(new NavBarEntity(dt.getFieldSetEntity(i)));
 
+			}
+			List<Object> list = new ArrayList<>();
+			map.forEach((k, v) -> {
+				Map<String, Object> m = new HashMap<>();
+				m.put("name", k);
+				m.put("functions", v);
+				list.add(m);
+			});
+			return list;
+		}
+		return null;
+	}
 
 }
diff --git a/src/main/java/com/product/mobile/core/service/SystemTableMetaService.java b/src/main/java/com/product/mobile/core/service/SystemTableMetaService.java
new file mode 100644
index 0000000..4ce9460
--- /dev/null
+++ b/src/main/java/com/product/mobile/core/service/SystemTableMetaService.java
@@ -0,0 +1,86 @@
+package com.product.mobile.core.service;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import com.product.common.lang.StringUtils;
+import com.product.core.dao.BaseDao;
+import com.product.core.entity.DataTableEntity;
+import com.product.core.entity.FieldSetEntity;
+import com.product.core.exception.BaseException;
+import com.product.core.service.support.AbstractBaseService;
+import com.product.util.BaseUtil;
+
+/**
+ * 鎵嬫満绔紝鑾峰彇鐢ㄦ埛鎵�鏈夊簲鐢�
+ * @author Administrator
+ *
+ */
+@Component
+public class SystemTableMetaService extends AbstractBaseService{
+    @Autowired
+    public BaseDao baseDao;
+    /**
+     * 	鏁版嵁琛ㄧ粨鏋勪俊鎭�
+     * @param cpage
+     * @param pagesize
+     * @return
+     * @throws BaseException
+     */
+    public FieldSetEntity getSystemTableMeta(FieldSetEntity fse) throws BaseException{
+   
+    	Map<Object,Object> vs=fse.getValues();
+		StringBuilder b=new StringBuilder();
+		b.append("select t.table_name,f.field_name,f.field_length,f.field_show_name,f.field_type,f.field_reference,f.is_more_value from product_sys_datamodel_field f left join product_sys_datamodel_table t on f.table_uuid=t.uuid");
+		List<Object> ps=new ArrayList<>();
+    	if(vs!=null && vs.size()>0) {
+    		b.append(" where ");
+    		Iterator keys=vs.keySet().iterator();
+    		int c=0;
+    		while(keys.hasNext()) {
+    			Object key=keys.next();
+    			Object field=vs.get(key);
+//    			if(StringUtils.isEmpty(field)) {
+//    				continue;
+//    			}
+    			if(c>0) {
+    				b.append(" or ");
+    			}
+    			Object fp[]=BaseUtil.buildQuestionMarkFilter("f.field_name","in",field.toString());
+    			b.append("(t.table_name=? ");
+    			ps.add(key);
+    			if(fp!=null && fp.length>1) {
+    				b.append(" and ");
+    				b.append(fp[0]);
+    				ps.addAll((List)fp[1]);
+    			}
+    			b.append(")");
+    			c++;
+    		}
+    		b.append(" order by  t.table_name ");
+    		FieldSetEntity fs=new FieldSetEntity("product_sys_datamodel_field");
+    		DataTableEntity dt=baseDao.listTable(b.toString(), ps.toArray());
+    		String table=null;
+    		DataTableEntity sub=new DataTableEntity();
+    		for(int i=0;i<dt.getRows();i++) {
+    			String tb=dt.getString(i, "table_name");
+    			if(table!=null && !table.equals(tb)) {
+    				sub.getMeta().getTableName()[0]=table;
+    				fs.addSubDataTable(sub);
+    				sub=new DataTableEntity();
+    			}
+    			table=tb;
+    			sub.addFieldSetEntity(dt.getFieldSetEntity(i));
+    		}
+    		sub.getMeta().getTableName()[0]=table;
+    		fs.addSubDataTable(sub);
+    		return fs;
+    	}
+        return null;
+    }
+}
diff --git a/src/main/java/com/product/mobile/core/service/ide/INavBarManagerService.java b/src/main/java/com/product/mobile/core/service/ide/INavBarManagerService.java
index 85d7847..c0ff143 100644
--- a/src/main/java/com/product/mobile/core/service/ide/INavBarManagerService.java
+++ b/src/main/java/com/product/mobile/core/service/ide/INavBarManagerService.java
@@ -54,5 +54,13 @@
      * @throws BaseException
      */
     List<Object> getNarBarTree() throws BaseException;
+    /**
+     * 璁惧绠$悊
+     * 绉诲姩绔幏鍙栧鑸爮锛堝睍绀鸿烦杞級
+     *
+     * @return
+     * @throws BaseException
+     */
+    List<Object> getDeviceNarBarTree() throws BaseException;
 
 }
diff --git a/src/main/java/com/product/mobile/device/controller/DeviceManagerController.java b/src/main/java/com/product/mobile/device/controller/DeviceManagerController.java
new file mode 100644
index 0000000..448beec
--- /dev/null
+++ b/src/main/java/com/product/mobile/device/controller/DeviceManagerController.java
@@ -0,0 +1,232 @@
+package com.product.mobile.device.controller;
+
+import com.alibaba.druid.util.StringUtils;
+import com.product.core.config.CoreConst;
+import com.product.core.controller.support.AbstractBaseController;
+import com.product.core.entity.DataTableEntity;
+import com.product.core.entity.FieldSetEntity;
+import com.product.core.entity.RequestParameterEntity;
+import com.product.core.exception.BaseException;
+import com.product.core.spring.context.SpringMVCContextHolder;
+import com.product.device.config.DeviceCode;
+import com.product.device.service.DeviceMainenanceService;
+import com.product.device.service.DeviceManagerService;
+import com.product.device.service.ide.IDeviceMainenanceService;
+import com.product.mobile.core.config.MobileCoreCode;
+import com.product.mobile.core.config.MobileCoreConst;
+import com.product.module.sys.entity.SystemUser;
+import com.product.module.sys.version.ApiVersion;
+import com.product.task.device.service.DeviceManagerTaskService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @Author cheng
+ * @Date 2022/2/22 15:59
+ * @Desc 瀵艰埅鏍忕鐞�
+ */
+@RestController
+@RequestMapping("/api/mobile/device")
+public class DeviceManagerController extends AbstractBaseController {
+
+
+    @Autowired
+    DeviceManagerTaskService deviceManagerTaskService;
+    @Autowired
+    DeviceManagerService  deviceManagerService;
+    @Autowired
+    DeviceMainenanceService deviceMainenanceService;
+    /**
+     * 浠诲姟鍒楄〃
+     *
+     * @param request
+     * @return
+     */
+    @PostMapping("/list-new-task/{version}")
+    @ApiVersion(1)
+    public String listConfig(HttpServletRequest request) {
+        try {
+        	 SystemUser curUser = SpringMVCContextHolder.getCurrentUser();
+            FieldSetEntity fse = null;
+            Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
+            if (bean != null) {
+                RequestParameterEntity reqp = (RequestParameterEntity) bean;
+                fse = reqp.getFormData();
+            }
+            if (bean == null || fse == null) {
+                SpringMVCContextHolder.getSystemLogger().error(MobileCoreCode.SYSTEM_FORM_NODATA.getValue(), MobileCoreCode.SYSTEM_FORM_NODATA.getText());
+                return this.error(MobileCoreCode.SYSTEM_FORM_NODATA.getValue(), MobileCoreCode.SYSTEM_FORM_NODATA.getText());
+            }
+            // 鍒ゆ柇鍒嗛〉鍙傛暟鏄惁姝e父
+            if (StringUtils.isEmpty(fse.getString(MobileCoreConst.PAGESIZE))
+                    || StringUtils.isEmpty(fse.getString(MobileCoreConst.CPAGE))) {
+                SpringMVCContextHolder.getSystemLogger().error(MobileCoreCode.SYSTEM_FORM_COUNT.getValue(), MobileCoreCode.SYSTEM_FORM_COUNT.getText());
+                return this.error(MobileCoreCode.SYSTEM_FORM_COUNT.getValue(), MobileCoreCode.SYSTEM_FORM_COUNT.getText());
+            }
+            String result=OK_List(deviceManagerTaskService.getsPersionNewTask(curUser));
+            System.out.println(result);
+            return result;
+        } catch (BaseException e) {
+            e.printStackTrace();
+            return error(e);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return error(MobileCoreCode.GET_NAV_BAR_CONFIG_LIST_FAIL);
+        }
+    }
+    
+    /**
+     * 璁惧淇℃伅
+     *
+     * @param request
+     * @return
+     */
+    @PostMapping("/find-device/{version}")
+    @ApiVersion(1)
+    public String findDevice(HttpServletRequest request) {
+        try {
+            FieldSetEntity fse = null;
+            Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
+            if (bean != null) {
+                RequestParameterEntity reqp = (RequestParameterEntity) bean;
+                fse = reqp.getFormData();
+            }
+            if (bean == null || fse == null) {
+                SpringMVCContextHolder.getSystemLogger().error(MobileCoreCode.SYSTEM_FORM_NODATA.getValue(), MobileCoreCode.SYSTEM_FORM_NODATA.getText());
+                return this.error(MobileCoreCode.SYSTEM_FORM_NODATA);
+            }
+            if (StringUtils.isEmpty(fse.getString("uuid")) && StringUtils.isEmpty(fse.getString("asset_code"))  ) {
+                SpringMVCContextHolder.getSystemLogger().error(MobileCoreCode.SYSTEM_ACQUIRE_PARAM_FAIL.getValue(), MobileCoreCode.SYSTEM_ACQUIRE_PARAM_FAIL.getText());
+                return this.error(MobileCoreCode.SYSTEM_ACQUIRE_PARAM_FAIL);
+            }
+            String result=OK_List(deviceManagerService.findDeviceAndSub(fse.getString("uuid"),fse.getString("asset_code")));
+            System.out.println(result);
+            return result;
+        } catch (BaseException e) {
+            e.printStackTrace();
+            return error(e);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return error(MobileCoreCode.GET_NAV_BAR_CONFIG_LIST_FAIL);
+        }
+    }
+    /**
+     * 鍒涘缓璁惧鏁呴殰鐢虫姤
+     * @param content
+     * @param servletResponse
+     * @throws IOException
+     */
+    @RequestMapping(value = "/failure/create/{version}", method = RequestMethod.POST)
+	@ApiVersion(1)
+    public String createFailure(HttpServletRequest request) throws IOException {
+    	
+    	 try {
+             FieldSetEntity fse = null;
+             Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
+             if (bean != null) {
+                 RequestParameterEntity reqp = (RequestParameterEntity) bean;
+                 fse = reqp.getFormData();
+             }
+             if (bean == null || fse == null) {
+                 SpringMVCContextHolder.getSystemLogger().error(DeviceCode.SYSTEM_FORM_NODATA);
+                 return this.error(DeviceCode.SYSTEM_FORM_NODATA);
+             }
+             if (StringUtils.isEmpty(fse.getString("uuid")) && StringUtils.isEmpty(fse.getString("asset_code"))  ) {
+            	 SpringMVCContextHolder.getSystemLogger().error(DeviceCode.SYSTEM_FORM_NODATA);
+                 return this.error(DeviceCode.SYSTEM_FORM_NODATA);
+             }
+             IDeviceMainenanceService service = (IDeviceMainenanceService) getProxyInstance(deviceMainenanceService);
+             String uuid=service.saveDeviceFailure(fse);
+             System.out.println(uuid);
+             return !StringUtils.isEmpty(uuid)? this.OK_Add(uuid):this.error(new BaseException(DeviceCode.DEVICE_CREATE_FAILURE_ERROR));
+         } catch (BaseException e) {
+             e.printStackTrace();
+             return error(e);
+         } catch (Exception e) {
+             e.printStackTrace();
+             return error(DeviceCode.DEVICE_CREATE_INSPECTION_ERROR);
+         }
+    }
+    /**
+     * 璁惧鐨勭浉鍏充汉鍛樹俊鎭�
+     * @param content
+     * @param servletResponse
+     * @throws IOException
+     */
+    @RequestMapping(value = "/persion/{version}", method = RequestMethod.POST)
+	@ApiVersion(1)
+    public String devicePersion(HttpServletRequest request) throws IOException {
+    	
+    	 try {
+             FieldSetEntity fse = null;
+             Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
+             if (bean != null) {
+                 RequestParameterEntity reqp = (RequestParameterEntity) bean;
+                 fse = reqp.getFormData();
+             }
+             if (bean == null || fse == null) {
+                 SpringMVCContextHolder.getSystemLogger().error(DeviceCode.SYSTEM_FORM_NODATA);
+                 return this.error(DeviceCode.SYSTEM_FORM_NODATA);
+             }
+             if (StringUtils.isEmpty(fse.getString("asset_code"))  ) {
+            	 SpringMVCContextHolder.getSystemLogger().error(DeviceCode.SYSTEM_FORM_NODATA);
+                 return this.error(DeviceCode.SYSTEM_FORM_NODATA);
+             }
+             DataTableEntity dt=deviceManagerService.findDevicePersion(fse.getString("asset_code"));
+             
+             return this.OK_List( dt );
+         } catch (BaseException e) {
+             e.printStackTrace();
+             return error(e);
+         } catch (Exception e) {
+             e.printStackTrace();
+             return error(DeviceCode.DEVICE_CREATE_INSPECTION_ERROR);
+         }
+    }
+    /**
+     * 璁惧鐨勭浉鍏充汉鍛樹俊鎭�
+     * @param content
+     * @param servletResponse
+     * @throws IOException
+     */
+    @RequestMapping(value = "/create/maintain/task/{version}", method = RequestMethod.POST)
+	@ApiVersion(1)
+    public String deviceMainTainTaskPersion(HttpServletRequest request) throws IOException {
+    	
+    	 try {
+             FieldSetEntity fse = null;
+             Object bean = request.getAttribute(CoreConst.API_POST_REQUEST_DATA);
+             if (bean != null) {
+                 RequestParameterEntity reqp = (RequestParameterEntity) bean;
+                 fse = reqp.getFormData();
+             }
+             if (bean == null || fse == null) {
+                 SpringMVCContextHolder.getSystemLogger().error(DeviceCode.SYSTEM_FORM_NODATA);
+                 return this.error(DeviceCode.SYSTEM_FORM_NODATA);
+             }
+             if (StringUtils.isEmpty(fse.getString("asset_code"))  ) {
+            	 SpringMVCContextHolder.getSystemLogger().error(DeviceCode.SYSTEM_FORM_NODATA);
+                 return this.error(DeviceCode.SYSTEM_FORM_NODATA);
+             }
+             if (StringUtils.isEmpty(fse.getString("uuid"))  ) {
+            	 SpringMVCContextHolder.getSystemLogger().error(DeviceCode.SYSTEM_FORM_NODATA);
+                 return this.error(DeviceCode.SYSTEM_FORM_NODATA);
+             }
+             deviceMainenanceService.createMaintainTask(fse);
+             return this.OK();
+         } catch (BaseException e) {
+             e.printStackTrace();
+             return error(e);
+         } catch (Exception e) {
+             e.printStackTrace();
+             return error(DeviceCode.DEVICE_CREATE_INSPECTION_ERROR);
+         }
+    }
+}

--
Gitblit v1.9.2