Pārlūkot izejas kodu

农科院洗消员工与账号管理

wwh 1 gadu atpakaļ
vecāks
revīzija
c00825083d
33 mainītis faili ar 1259 papildinājumiem un 337 dzēšanām
  1. 16 16
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/config/ApiPrefixAutoConfiguration.java
  2. 77 77
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/config/InterceptorConfig.java
  3. 82 82
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/config/JWTInterceptor.java
  4. 20 2
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/controller/BaseLocationController.java
  5. 37 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/controller/BaseWorkTypeController.java
  6. 20 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/controller/BillDryController.java
  7. 20 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/controller/BillIsolateController.java
  8. 33 3
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/controller/SysAccountMultilevelController.java
  9. 205 2
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/controller/SysUserController.java
  10. 46 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/entity/BaseWorkType.java
  11. 136 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/entity/BillDry.java
  12. 136 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/entity/BillIsolate.java
  13. 1 40
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/entity/SysAccountMultilevel.java
  14. 7 56
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/entity/SysUser.java
  15. 1 58
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/entity/vo/UserVo.java
  16. 16 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/mapper/BaseWorkTypeMapper.java
  17. 16 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/mapper/BillDryMapper.java
  18. 16 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/mapper/BillIsolateMapper.java
  19. 7 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/mapper/SysUserMapper.java
  20. 16 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/IBaseWorkTypeService.java
  21. 16 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/IBillDryService.java
  22. 16 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/IBillIsolateService.java
  23. 14 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/ISysAccountMultilevelService.java
  24. 16 1
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/ISysUserService.java
  25. 20 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/impl/BaseWorkTypeServiceImpl.java
  26. 20 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/impl/BillDryServiceImpl.java
  27. 20 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/impl/BillIsolateServiceImpl.java
  28. 72 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/impl/SysAccountMultilevelServiceImpl.java
  29. 106 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/impl/SysUserServiceImpl.java
  30. 36 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/resources/com/huimv/secure/mapper/SysUserMapper.xml
  31. 5 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/resources/mapper/BaseWorkTypeMapper.xml
  32. 5 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/resources/mapper/BillDryMapper.xml
  33. 5 0
      huimv.nongke.secure/huimv.nongke.secure/src/main/resources/mapper/BillIsolateMapper.xml

+ 16 - 16
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/config/ApiPrefixAutoConfiguration.java

@@ -1,16 +1,16 @@
-package com.huimv.secure.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-@Configuration
-public class ApiPrefixAutoConfiguration implements WebMvcConfigurer {
-
-    @Override
-    public void configurePathMatch(PathMatchConfigurer configurer) {
-        configurer.addPathPrefix("/secureApi",  c -> c.isAnnotationPresent(RestController.class));
-    }
-
-}
+//package com.huimv.secure.config;
+//
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.web.bind.annotation.RestController;
+//import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
+//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+//
+//@Configuration
+//public class ApiPrefixAutoConfiguration implements WebMvcConfigurer {
+//
+//    @Override
+//    public void configurePathMatch(PathMatchConfigurer configurer) {
+//        configurer.addPathPrefix("/secureApi",  c -> c.isAnnotationPresent(RestController.class));
+//    }
+//
+//}

+ 77 - 77
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/config/InterceptorConfig.java

@@ -1,77 +1,77 @@
-
-package com.huimv.secure.config;
-
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
-
-/**
- * @Description: 注册验证tocken的拦截器
- * @Author
- * @Date 2021/4/19 20:41
- * @Version V1.0
- */
-@Configuration
-public class InterceptorConfig implements WebMvcConfigurer {
-    @Bean
-    public JWTInterceptor jwtInterceptor(){
-        return new JWTInterceptor();
-    }
-
-    @Override
-    public void addInterceptors(InterceptorRegistry registry) {
-        registry.addInterceptor(jwtInterceptor()).
-                excludePathPatterns("/secureApi/admin/my/*","/secureApi/bill-access-door/getDoorData","/secureApi/bill-gate/getGateData", "/swagger-resources/**")
-                .excludePathPatterns("/secureApi/receive/feed","/secureApi/bill-personnel-admission/printAdmission"
-                        ,"/secureApi/bill-personnel-admission/printAdmission"
-                        ,"/secureApi/bill-pcr/printPcr"
-                        ,"/secureApi/bill-clean/printClean"
-                        ,"/secureApi/bill-isolate/printIsolate"
-                        ,"/secureApi/bill-luggage/printLuggage"
-                        ,"/secureApi/admin/user/printUser"
-                        ,"/secureApi/admin/accountMultilevel/printAccount"
-                        ,"/secureApi/base-device/printDevice"
-                        ,"/secureApi/bill-personnel-admission/listDoor"
-
-                        //后台统计接口开放
-                        ,"/secureApi/bill-personnel-admission/countAdmission"
-                        ,"/secureApi/bill-personnel-admission/listTop"
-                        ,"/secureApi/bill-personnel-admission/admissionTail"
-                        ,"/secureApi/bill-personnel-admission/selectList"
-                        ,"/secureApi/bill-personnel-admission/uploadImgAndAdmissin"
-                        ,"/secureApi/bill-personnel-admission/delete"
-
-                        ,"/secureApi/bill-pcr/pcrWhole"
-                        ,"/secureApi/bill-pcr/listType"
-                        ,"/secureApi/bill-pcr/listLocation"
-                        ,"/secureApi/bill-pcr/listAll"
-                        ,"/secureApi/bill-pcr/selectList"
-                        ,"/secureApi/bill-pcr/delete"
-
-
-                        ,"/secureApi/bill-clean/listCount"
-                        ,"/secureApi/bill-clean/allList"
-                        ,"/secureApi/bill-clean/CleanSelect"
-                        ,"/secureApi/bill-clean/delete"
-                        ,"/secureApi/bill-clean/listScreen"
-
-
-                        ,"/secureApi/bill-isolate/isolateList"
-                        ,"/secureApi/bill-isolate/isolateSelect"
-                        ,"/secureApi/bill-isolate/delete"
-
-                        ,"/secureApi/bill-luggage/listLuggage"
-                        ,"/secureApi/bill-luggage/selectLuggage"
-                        ,"/secureApi/bill-luggage/delete"
-
-
-
-
-                        ,"/secureApi/bill-personnel-admission/jingJiAdmission"
-                        ,"/secureApi/bill-personnel-admission/allCount"
-                        ,"/secureApi/bill-pcr/pcrList"
-                        ,"/secureApi/bill-goods-inventory/listAll"
-                        );
-    }
-}
+//
+//package com.huimv.secure.config;
+//
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Configuration;
+//import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+//import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+//
+///**
+// * @Description: 注册验证tocken的拦截器
+// * @Author
+// * @Date 2021/4/19 20:41
+// * @Version V1.0
+// */
+//@Configuration
+//public class InterceptorConfig implements WebMvcConfigurer {
+//    @Bean
+//    public JWTInterceptor jwtInterceptor(){
+//        return new JWTInterceptor();
+//    }
+//
+//    @Override
+//    public void addInterceptors(InterceptorRegistry registry) {
+//        registry.addInterceptor(jwtInterceptor()).
+//                excludePathPatterns("/secureApi/admin/my/*","/secureApi/bill-access-door/getDoorData","/secureApi/bill-gate/getGateData", "/swagger-resources/**")
+//                .excludePathPatterns("/secureApi/receive/feed","/secureApi/bill-personnel-admission/printAdmission"
+//                        ,"/secureApi/bill-personnel-admission/printAdmission"
+//                        ,"/secureApi/bill-pcr/printPcr"
+//                        ,"/secureApi/bill-clean/printClean"
+//                        ,"/secureApi/bill-isolate/printIsolate"
+//                        ,"/secureApi/bill-luggage/printLuggage"
+//                        ,"/secureApi/admin/user/printUser"
+//                        ,"/secureApi/admin/accountMultilevel/printAccount"
+//                        ,"/secureApi/base-device/printDevice"
+//                        ,"/secureApi/bill-personnel-admission/listDoor"
+//
+//                        //后台统计接口开放
+//                        ,"/secureApi/bill-personnel-admission/countAdmission"
+//                        ,"/secureApi/bill-personnel-admission/listTop"
+//                        ,"/secureApi/bill-personnel-admission/admissionTail"
+//                        ,"/secureApi/bill-personnel-admission/selectList"
+//                        ,"/secureApi/bill-personnel-admission/uploadImgAndAdmissin"
+//                        ,"/secureApi/bill-personnel-admission/delete"
+//
+//                        ,"/secureApi/bill-pcr/pcrWhole"
+//                        ,"/secureApi/bill-pcr/listType"
+//                        ,"/secureApi/bill-pcr/listLocation"
+//                        ,"/secureApi/bill-pcr/listAll"
+//                        ,"/secureApi/bill-pcr/selectList"
+//                        ,"/secureApi/bill-pcr/delete"
+//
+//
+//                        ,"/secureApi/bill-clean/listCount"
+//                        ,"/secureApi/bill-clean/allList"
+//                        ,"/secureApi/bill-clean/CleanSelect"
+//                        ,"/secureApi/bill-clean/delete"
+//                        ,"/secureApi/bill-clean/listScreen"
+//
+//
+//                        ,"/secureApi/bill-isolate/isolateList"
+//                        ,"/secureApi/bill-isolate/isolateSelect"
+//                        ,"/secureApi/bill-isolate/delete"
+//
+//                        ,"/secureApi/bill-luggage/listLuggage"
+//                        ,"/secureApi/bill-luggage/selectLuggage"
+//                        ,"/secureApi/bill-luggage/delete"
+//
+//
+//
+//
+//                        ,"/secureApi/bill-personnel-admission/jingJiAdmission"
+//                        ,"/secureApi/bill-personnel-admission/allCount"
+//                        ,"/secureApi/bill-pcr/pcrList"
+//                        ,"/secureApi/bill-goods-inventory/listAll"
+//                        );
+//    }
+//}

+ 82 - 82
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/config/JWTInterceptor.java

@@ -1,82 +1,82 @@
-package com.huimv.secure.config;
-
-import com.alibaba.fastjson.JSONObject;
-import com.huimv.secure.common.token.TokenConstant;
-import com.huimv.secure.common.token.TokenSign;
-import io.jsonwebtoken.Claims;
-import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.ModelAndView;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * <p>
- * jwt拦截器
- * </p>
- *
- * @since 2021/4/19
- */
-public class JWTInterceptor implements HandlerInterceptor {
-
-
-    @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-        // 如果不是映射到方法,则直接通过
-        if (!(handler instanceof HandlerMethod)) {
-            return true;
-        }
-
-        response.setContentType("application/json;charset=utf-8");
-        // 获取token
-        String token = request.getHeader("accessToken");
-
-
-        if (null == token) {
-            Map<String, Object> map = new HashMap<>();
-            map.put("data", "token is null");
-            map.put("code", "401");
-            response.setStatus(401);
-            response.getWriter().write(JSONObject.toJSONString(map));
-            return false;
-        } else {
-            Claims claims = TokenSign.getClaims(token);
-            if (claims == null) {
-                Map<String, Object> map = new HashMap<>();
-                map.put("data", "token is overdue");
-                map.put("code", "403");
-                response.setStatus(403);
-                response.getWriter().write(JSONObject.toJSONString(map));
-                return false;
-            }
-
-            boolean result = TokenSign.verify(token);
-            if (result) {
-                //更新存储的token信息
-                TokenConstant.updateTokenMap(token);
-                return true;
-            }
-            Map<String, Object> map = new HashMap<>();
-            map.put("data", "token is null");
-            map.put("code", "401");
-            response.setStatus(401);
-            response.getWriter().write(JSONObject.toJSONString(map));
-            return false;
-
-        }
-    }
-
-
-    @Override
-    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
-
-    }
-
-    @Override
-    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
-
-    }
-}
+//package com.huimv.secure.config;
+//
+//import com.alibaba.fastjson.JSONObject;
+//import com.huimv.secure.common.token.TokenConstant;
+//import com.huimv.secure.common.token.TokenSign;
+//import io.jsonwebtoken.Claims;
+//import org.springframework.web.method.HandlerMethod;
+//import org.springframework.web.servlet.HandlerInterceptor;
+//import org.springframework.web.servlet.ModelAndView;
+//
+//import javax.servlet.http.HttpServletRequest;
+//import javax.servlet.http.HttpServletResponse;
+//import java.util.HashMap;
+//import java.util.Map;
+//
+///**
+// * <p>
+// * jwt拦截器
+// * </p>
+// *
+// * @since 2021/4/19
+// */
+//public class JWTInterceptor implements HandlerInterceptor {
+//
+//
+//    @Override
+//    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+//        // 如果不是映射到方法,则直接通过
+//        if (!(handler instanceof HandlerMethod)) {
+//            return true;
+//        }
+//
+//        response.setContentType("application/json;charset=utf-8");
+//        // 获取token
+//        String token = request.getHeader("accessToken");
+//
+//
+//        if (null == token) {
+//            Map<String, Object> map = new HashMap<>();
+//            map.put("data", "token is null");
+//            map.put("code", "401");
+//            response.setStatus(401);
+//            response.getWriter().write(JSONObject.toJSONString(map));
+//            return false;
+//        } else {
+//            Claims claims = TokenSign.getClaims(token);
+//            if (claims == null) {
+//                Map<String, Object> map = new HashMap<>();
+//                map.put("data", "token is overdue");
+//                map.put("code", "403");
+//                response.setStatus(403);
+//                response.getWriter().write(JSONObject.toJSONString(map));
+//                return false;
+//            }
+//
+//            boolean result = TokenSign.verify(token);
+//            if (result) {
+//                //更新存储的token信息
+//                TokenConstant.updateTokenMap(token);
+//                return true;
+//            }
+//            Map<String, Object> map = new HashMap<>();
+//            map.put("data", "token is null");
+//            map.put("code", "401");
+//            response.setStatus(401);
+//            response.getWriter().write(JSONObject.toJSONString(map));
+//            return false;
+//
+//        }
+//    }
+//
+//
+//    @Override
+//    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
+//
+//    }
+//
+//    @Override
+//    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
+//
+//    }
+//}

+ 20 - 2
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/controller/BaseLocationController.java

@@ -1,9 +1,15 @@
 package com.huimv.secure.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.secure.common.utils.Result;
+import com.huimv.secure.common.utils.ResultCode;
+import com.huimv.secure.entity.BaseLocation;
+import com.huimv.secure.service.IBaseLocationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import java.util.List;
 
 /**
  * <p>
@@ -15,6 +21,18 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("/base-location")
+@CrossOrigin
 public class BaseLocationController {
 
+    @Autowired
+    private IBaseLocationService locationService;
+
+    /*获取工作地点的列表*/
+    @GetMapping("/getListWorkLocation")
+    public Result getLocation(@RequestParam("farmId") String farmId) {
+        QueryWrapper<BaseLocation> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId);
+        List<BaseLocation> baseLocations = locationService.list(queryWrapper);
+        return new Result(ResultCode.SUCCESS,baseLocations);
+    }
 }

+ 37 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/controller/BaseWorkTypeController.java

@@ -0,0 +1,37 @@
+package com.huimv.secure.controller;
+
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.huimv.secure.common.utils.Result;
+import com.huimv.secure.common.utils.ResultCode;
+import com.huimv.secure.entity.BaseWorkType;
+import com.huimv.secure.service.IBaseWorkTypeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 工作岗位列表 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+@RestController
+@RequestMapping("/base-work-type")
+@CrossOrigin
+public class BaseWorkTypeController {
+    @Autowired
+    private IBaseWorkTypeService workTypeService;
+
+    /*
+    * 获取工作岗位的列表
+    * */
+    @GetMapping("/getWorkType")
+    public Result getWorkType(@RequestParam("farmId") String farmId) {
+        List<BaseWorkType> list = workTypeService.list(new QueryWrapper<BaseWorkType>().eq("farm_id", farmId));
+        return new Result(ResultCode.SUCCESS,list);
+    }
+}

+ 20 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/controller/BillDryController.java

@@ -0,0 +1,20 @@
+package com.huimv.secure.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 洗消表 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+@RestController
+@RequestMapping("/bill-dry")
+public class BillDryController {
+
+}

+ 20 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/controller/BillIsolateController.java

@@ -0,0 +1,20 @@
+package com.huimv.secure.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 隔离 前端控制器
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+@RestController
+@RequestMapping("/bill-isolate")
+public class BillIsolateController {
+
+}

+ 33 - 3
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/controller/SysAccountMultilevelController.java

@@ -1,13 +1,19 @@
 package com.huimv.secure.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.huimv.secure.common.token.TokenSign;
+import com.huimv.secure.common.utils.Result;
+import com.huimv.secure.entity.SysAccountMultilevel;
+import com.huimv.secure.service.ISysAccountMultilevelService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
-import org.springframework.web.bind.annotation.RestController;
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
 
 /**
  * <p>
- *  前端控制器
+ * 前端控制器
  * </p>
  *
  * @author author
@@ -15,6 +21,30 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("/sys-account-multilevel")
+@CrossOrigin
 public class SysAccountMultilevelController {
+    @Autowired
+    private ISysAccountMultilevelService accountMultilevelService;
+
+
+    @PostMapping("/add")
+    public Result add(@RequestBody SysAccountMultilevel sysAccountMultilevel ){
+        return accountMultilevelService.add(sysAccountMultilevel);
+    }
+
+    @PostMapping("/update")
+    public Result update(@RequestBody Map<String,String> paramsMap ){
+        return accountMultilevelService.update(paramsMap);
+    }
+
+    @PostMapping("/listAccount")
+    public Result listAccount(@RequestBody Map<String,String> paramsMap){
+        return accountMultilevelService.listAccount(paramsMap);
+    }
+
+    @PostMapping("/deleteAccount")
+    public Result deleteAccount(@RequestBody Map<String,String> paramsMap ){
+        return accountMultilevelService.deleteAccount(paramsMap);
+    }
 
 }

+ 205 - 2
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/controller/SysUserController.java

@@ -1,9 +1,31 @@
 package com.huimv.secure.controller;
 
 
-import org.springframework.web.bind.annotation.RequestMapping;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.huimv.secure.common.utils.IDCardValidator;
+import com.huimv.secure.common.utils.PhoneNumberValidator;
+import com.huimv.secure.common.utils.Result;
+import com.huimv.secure.common.utils.UploadImage;
+import com.huimv.secure.entity.SysAccountMultilevel;
+import com.huimv.secure.entity.SysUser;
+import com.huimv.secure.entity.pojo.UserPagePojo;
+import com.huimv.secure.entity.vo.UserVo;
+import com.huimv.secure.service.ISysAccountMultilevelService;
+import com.huimv.secure.service.ISysUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
-import org.springframework.web.bind.annotation.RestController;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -15,6 +37,187 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("/sys-user")
+@CrossOrigin
 public class SysUserController {
+    @Autowired
+    private ISysUserService sysUserService;
 
+    @Autowired
+    private UploadImage uploadImage;
+    @Autowired
+    private ISysAccountMultilevelService accountMultilevelService;
+
+    //员工新增
+    @PostMapping("/add")
+    public Result add(@RequestParam("userId") String userId,
+                      @RequestParam(value = "userName",required = false) String userName,
+                      @RequestParam(value = "gender",required = false) String gender,
+                      @RequestParam(value = "birthday",required = false) String birthday,
+                      @RequestParam(value = "cardNum",required = false) String cardNum,
+                      @RequestParam(value = "userPhone",required = false) String userPhone,
+                      @RequestParam(value = "publicPhone",required = false) String publicPhone,
+                      @RequestParam(value = "entryTime",required = false) String entryTime,
+                      @RequestParam(value = "job",required = false) String job,
+                      @RequestParam(value = "workLocation",required = false) String workLocation,
+                      @RequestParam(value = "farmId",required = false) String farmId,
+                      @RequestParam(value = "sheng",required = false) String sheng,
+                      @RequestParam(value = "shi",required = false) String shi,
+                      @RequestParam(value = "xxdz",required = false) String xxdz,
+                      @RequestParam("imgUrl") MultipartFile imgUrl) throws IOException {
+        SysUser sysUser = new SysUser();
+        sysUser.setUserName(userName);
+        sysUser.setUserId(userId);
+        sysUser.setGender(Integer.parseInt(gender));
+        sysUser.setBirthday(DateUtil.parse(birthday,"yyyy-MM-dd"));
+        sysUser.setCardNum(cardNum);
+        sysUser.setUserPhone(userPhone);
+        sysUser.setPublicPhone(publicPhone);
+        if (StringUtils.isNotBlank(entryTime)){
+            sysUser.setEntryTime(DateUtil.parse(entryTime,"yyyy-MM-dd"));
+        }
+        sysUser.setJob(job);
+        sysUser.setWorkLocation(workLocation);
+        sysUser.setFarmId(farmId);
+        sysUser.setSheng(sheng);
+        sysUser.setShi(shi);
+        sysUser.setXxdz(xxdz);
+        if (ObjectUtil.isNotEmpty(imgUrl)) {
+            String imageCom = uploadImage.getImageCom(imgUrl);
+            if ("上传失败".equals(imageCom)) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return new Result(10001, "图片上传失败", false);
+            }else {
+                sysUser.setImgUrl(imageCom);
+            }
+        }
+        if (!IDCardValidator.isValidIDCard(cardNum)) {
+            return new Result(10001,"身份证格式不正确",false);
+        }
+        if (!PhoneNumberValidator.isValidPhoneNumber(userPhone)) {
+            return new Result(10001,"手机号格式不正确",false);
+        }
+        int count = sysUserService.count(new QueryWrapper<SysUser>().eq("card_num", cardNum));
+        if (count >0) {
+            return new Result(10001,"身份证已存在",false);
+        }
+        int countUserPhone = sysUserService.count(new QueryWrapper<SysUser>().eq("user_phone", userPhone));
+        if (countUserPhone >0) {
+            return new Result(10001,"手机号已存在",false);
+        }
+        if (ObjectUtil.isNotEmpty(sysUser.getBirthday())){
+            sysUser.setAge(DateUtil.ageOfNow(sysUser.getBirthday()));
+        }
+        sysUserService.save(sysUser);
+        return new Result(10000,"保存成功",true);
+    }
+
+    /*员工修改*/
+    @PostMapping("/update")
+    public Result update(@RequestBody UserVo sysUser) {
+        String cardNum = sysUser.getCardNum();
+        String userPhone = sysUser.getUserPhone();
+        if(StringUtils.isNotBlank(userPhone)){
+            if (!PhoneNumberValidator.isValidPhoneNumber(userPhone)) {
+                return new Result(10001,"手机号格式不正确",false);
+            }
+            int count = sysUserService.count(new QueryWrapper<SysUser>().eq("user_phone", userPhone)) ;
+            if (count >1) {
+                return new Result(10001,"手机号已存在",false);
+            }
+        }
+        if(StringUtils.isNotBlank(cardNum)){
+            if (!IDCardValidator.isValidIDCard(cardNum)) {
+                return new Result(10001,"身份证格式不正确",false);
+            }
+            int countUserPhone = sysUserService.count(new QueryWrapper<SysUser>().eq("card_num", cardNum));
+            if (countUserPhone >1) {
+                return new Result(10001,"身份证已存在",false);
+            }
+        }
+        if (ObjectUtil.isNotEmpty(sysUser.getBirthday())){
+            sysUser.setAge(DateUtil.ageOfNow(sysUser.getBirthday()));
+        }
+        SysUser user = new SysUser();
+        user.setId(sysUser.getId());
+        user.setAge(sysUser.getAge());
+        user.setBirthday(sysUser.getBirthday());
+        user.setCardNum(sysUser.getCardNum());
+        user.setEntryTime(sysUser.getEntryTime());
+        user.setFarmId(sysUser.getFarmId());
+        user.setGender(sysUser.getGender());
+        user.setPublicPhone(sysUser.getPublicPhone());
+        user.setSheng(sysUser.getSheng());
+        user.setShi(sysUser.getShi());
+        user.setUserId(sysUser.getUserId());
+        user.setUserName(sysUser.getUserName());
+        user.setUserPhone(sysUser.getUserPhone());
+        user.setWorkLocation(sysUser.getWorkLocation());
+        user.setXxdz(sysUser.getXxdz());
+        String s = "";
+        List<String> job = sysUser.getJob();
+        //TODO 判空
+        if(ObjectUtil.isNotEmpty(job)){
+            for (String s1 : job) {
+                s = s+s1 + ",";
+            }
+        }
+        user.setJob(s.substring(0, s.length() - 1));
+        sysUserService.updateById(user);
+        QueryWrapper<SysAccountMultilevel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id", sysUser.getUserId());
+        SysAccountMultilevel one = accountMultilevelService.getOne(queryWrapper);
+        one.setUserName(sysUser.getUserName());
+        one.setType(Integer.parseInt(s.substring(0, s.length() - 1).split(",")[0]));
+        one.setWorkLocation(sysUser.getWorkLocation());
+        accountMultilevelService.updateById(one);
+        return new Result(10000,"修改成功",true);
+    }
+
+    /*员工修改照片*/
+    @PostMapping("/uploadUserImg")
+    public Result uploadUserImg(@RequestParam("imgUrl") MultipartFile imgUrl,
+                                @RequestParam("id") Integer id) throws IOException {
+
+        return sysUserService.uploadUserImg(imgUrl,id);
+
+    }
+
+    /*员工删除*/
+    @PostMapping("/remove")
+    @Transactional
+    public Result remove(@RequestBody Map<String,String> map) {
+        String ids = map.get("ids");
+        if (StringUtils.isBlank(ids)) {
+            return new Result(10001,"所选用户不存在",false);
+        }
+        List<String> collection = Arrays.stream(ids.split(","))
+                .collect(Collectors.toList());
+        sysUserService.removeByIds(collection);
+        //删除账号
+        accountMultilevelService.remove(new QueryWrapper<SysAccountMultilevel>().in("user_id",collection));
+        return new Result(10000,"删除成功",true);
+    }
+
+
+
+    //员工分页查询
+    @PostMapping("/page")
+    public Result page(@RequestBody UserPagePojo userPagePojo) {
+        return sysUserService.pageAll(userPagePojo);
+    }
+    //性别年龄分布
+    @PostMapping("/userAgeAndGender")
+    public Result userAgeAndGender(@RequestBody Map<String,String> map) {
+        return  sysUserService.userAgeAndGender(map);
+    }
+    //岗位分布
+    @PostMapping("/userJob")
+    public Result userJob(@RequestBody Map<String,String> map) {
+        return  sysUserService.userJob(map);
+    }
+    //查询工作地点
+    @PostMapping("/listWorkLocation")
+    public Result listWorkLocation(@RequestBody Map map) {
+        return sysUserService.listWorkLocation(map);
+    }
 }

+ 46 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/entity/BaseWorkType.java

@@ -0,0 +1,46 @@
+package com.huimv.secure.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 工作岗位列表
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("base_work_type")
+public class BaseWorkType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 工作岗位 1场长 2 紧急进程审核员 3生物安全负责人 4 pcr 检测人员 5洗消站点工作人员 
+     */
+    private Integer type;
+
+    /**
+     * 岗位名称
+     */
+    private String typeName;
+
+
+    /*
+     * 牧场id
+     * */
+    private String farmId;
+
+}

+ 136 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/entity/BillDry.java

@@ -0,0 +1,136 @@
+package com.huimv.secure.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 洗消表
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("bill_dry")
+public class BillDry implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 来访类型 0人员  1环保车 2拉猪车 3饲料车  4送猪车 5物资车  6送餐
+     */
+    private Integer vistitType;
+
+    /**
+     * 目的地
+     */
+    private String destName;
+
+    /**
+     * 目的地 id
+     */
+    private Integer destId;
+
+    /**
+     * 申请人
+     */
+    private String admissionUserName;
+
+    /**
+     * 申请人id
+     */
+    private Integer admissionUserId;
+
+    /**
+     * 来访时间
+     */
+    private LocalDateTime vistitDate;
+
+    /**
+     * 提交时间
+     */
+    private LocalDateTime subDate;
+
+    private Integer farmId;
+
+    /**
+     * 当前状态 0待审批 1合格  2异常
+     */
+    private Integer billStatus;
+
+    /**
+     * 处理时间
+     */
+    private LocalDateTime passDate;
+
+    /**
+     * 处理人
+     */
+    private String passUserName;
+
+    /**
+     * 处理人id
+     */
+    private Integer passUserId;
+
+    /**
+     * 进程id
+     */
+    private Integer processId;
+
+    /**
+     * 检测时间
+     */
+    private LocalDateTime checkDate;
+
+    /**
+     * 检测地点
+     */
+    private String testLocation;
+
+    private Integer testLocationId;
+
+    /**
+     * 手机号
+     */
+    private String phone;
+
+    /**
+     * 车牌号
+     */
+    private String carNum;
+
+    /**
+     * 烘干照片
+     */
+    private String imgUrl;
+
+    /**
+     * 0待上传 1已上传
+     */
+    private Integer imgStatus;
+
+    /**
+     * 烘干时长
+     */
+    private String dryTime;
+
+    /**
+     * 烘干温度
+     */
+    private String dryTem;
+
+
+}

+ 136 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/entity/BillIsolate.java

@@ -0,0 +1,136 @@
+package com.huimv.secure.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 隔离
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("bill_isolate")
+public class BillIsolate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 来访类型 0人员  1环保车 2拉猪车 3饲料车  4送猪车 5物资车  6送餐
+     */
+    private Integer vistitType;
+
+    /**
+     * 目的地
+     */
+    private String destName;
+
+    /**
+     * 目的地 id
+     */
+    private Integer destId;
+
+    /**
+     * 申请人
+     */
+    private String admissionUserName;
+
+    /**
+     * 申请人id
+     */
+    private Integer admissionUserId;
+
+    /**
+     * 来访时间
+     */
+    private LocalDateTime vistitDate;
+
+    /**
+     * 提交时间
+     */
+    private LocalDateTime subDate;
+
+    private Integer farmId;
+
+    /**
+     * 当前状态 0待隔离 1隔离中  2已完成 3提前解除
+     */
+    private Integer billStatus;
+
+    /**
+     * 处理时间
+     */
+    private LocalDateTime passDate;
+
+    /**
+     * 处理人
+     */
+    private String passUserName;
+
+    /**
+     * 处理人id
+     */
+    private Integer passUserId;
+
+    /**
+     * 进程id
+     */
+    private Integer processId;
+
+    /**
+     * 隔离地点
+     */
+    private String isolateLocation;
+
+    private Integer isolateLocationId;
+
+    /**
+     * 隔离开始时间
+     */
+    private LocalDateTime isolateStartDate;
+
+    /**
+     * 隔离结束时间
+     */
+    private LocalDateTime isolateEndDate;
+
+    /**
+     * 隔离天数
+     */
+    private String isolateDayNum;
+
+    /**
+     * 真实隔离天数
+     */
+    private String isolateRealDayNum;
+
+    /**
+     * 真实隔离结束时间
+     */
+    private LocalDateTime isolateRealEndDate;
+
+    /**
+     * 手机号
+     */
+    private String phone;
+
+    /**
+     * 车牌号
+     */
+    private String carNum;
+
+
+}

+ 1 - 40
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/entity/SysAccountMultilevel.java

@@ -32,36 +32,19 @@ public class SysAccountMultilevel implements Serializable {
      */
     private String account;
 
-    /**
-     * 父级
-     */
-    private Integer pid;
-
-    /**
-     * 多级父级
-     */
-    private String pids;
 
     /**
      * 状态 1启用,0未启用
      */
     private Integer accountStatus;
 
-    /**
-     * 所属牧场
-     */
-    private String farmIds;
 
     private String color;
 
-    private Boolean mode;
 
-    private Integer lastFarmId;
 
     private String userName;
 
-    private String farmNames;
-
     /**
      * 0管理员,1 场长 2 紧急进程审核员  ,3生物安全负责人 ,4 pcr 检测人员,5洗消站点工作人员 , 6员工,7访客
      */
@@ -77,40 +60,19 @@ public class SysAccountMultilevel implements Serializable {
      */
     private Integer workLocationType;
 
-    /**
-     * 工作岗位 1 场长 2 紧急进程审核员  ,3生物安全负责人 ,4 pcr 检测人员,5洗消站点工作人员 , 6员工
-     */
-    private Integer workPost;
-
-    /**
-     * 手机号
-     */
-    private String phone;
 
     /**
      * 头像图片
      */
     private String imgUrl;
 
-    /**
-     * 单位名称
-     */
-    private String workName;
 
-    /**
-     * 证件类型 0身份证 ,1护照
-     */
-    private String papersType;
 
     /**
      * 密码
      */
     private String password;
 
-    /**
-     * 证件号码
-     */
-    private String papersCode;
 
     /**
      * 微信标识
@@ -127,9 +89,8 @@ public class SysAccountMultilevel implements Serializable {
      */
     private Integer userId;
 
-    private Integer farmId;
 
-    private String jobs;
+    private String farmId;
 
 
 }

+ 7 - 56
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/entity/SysUser.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import java.io.Serializable;
+import java.util.Date;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -26,7 +28,7 @@ public class SysUser implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
+    private Integer id;
 
     /**
      * 员工工号
@@ -43,40 +45,15 @@ public class SysUser implements Serializable {
      */
     private Integer gender;
 
-    /**
-     * 民族
-     */
-    private String nation;
-
-    /**
-     * 籍贯
-     */
-    private String nativePlace;
 
     /**
      * 出生日期
      */
-    private LocalDateTime birthday;
+    private Date birthday;
 
-    /**
-     * 政治面貌
-     */
-    private String politicsPace;
 
-    /**
-     * 户口类型
-     */
-    private String peopleType;
 
-    /**
-     * 教育水平
-     */
-    private String educationalLevel;
 
-    /**
-     * 证件类型
-     */
-    private String cardType;
 
     /**
      * 年龄
@@ -98,40 +75,20 @@ public class SysUser implements Serializable {
      */
     private String publicPhone;
 
-    /**
-     * 个人邮箱
-     */
-    private String userMali;
 
-    /**
-     * 办公邮箱
-     */
-    private String publicMali;
 
     /**
      * 入职时间
      */
-    private LocalDateTime entryTime;
-
-    /**
-     * 试用期
-     */
-    private String probation;
+    private Date entryTime;
 
-    /**
-     * 部门
-     */
-    private String department;
 
     /**
      * 工作岗位 1 场长,3生物安全负责人 ,4 pcr 检测人员,5洗消站点工作人员
      */
     private String job;
 
-    /**
-     * 工作性质
-     */
-    private String jobType;
+
 
     /**
      * 工作地点
@@ -143,11 +100,9 @@ public class SysUser implements Serializable {
      */
     private Integer workLocationType;
 
-    private Integer farmId;
+    private String farmId;
 
-    private String emergentUser;
 
-    private String emergentUserPhone;
 
     /**
      * 省
@@ -164,10 +119,6 @@ public class SysUser implements Serializable {
      */
     private String xxdz;
 
-    /**
-     * 邮政编码
-     */
-    private String yzbm;
 
     /**
      * 图片

+ 1 - 58
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/entity/vo/UserVo.java

@@ -47,15 +47,7 @@ public class UserVo implements Serializable {
      */
     private Integer gender;
 
-    /**
-     * 民族
-     */
-    private String nation;
 
-    /**
-     * 籍贯
-     */
-    private String nativePlace;
 
     /**
      * 出生日期
@@ -64,25 +56,7 @@ public class UserVo implements Serializable {
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date birthday;
 
-    /**
-     * 政治面貌
-     */
-    private String politicsPace;
-
-    /**
-     * 户口类型
-     */
-    private String peopleType;
-
-    /**
-     * 教育水平
-     */
-    private String educationalLevel;
 
-    /**
-     * 证件类型
-     */
-    private String cardType;
 
     /**
      * 年龄
@@ -104,15 +78,7 @@ public class UserVo implements Serializable {
      */
     private String publicPhone;
 
-    /**
-     * 个人邮箱
-     */
-    private String userMali;
 
-    /**
-     * 办公邮箱
-     */
-    private String publicMali;
 
     /**
      * 入职时间
@@ -121,44 +87,21 @@ public class UserVo implements Serializable {
     @DateTimeFormat(pattern = "yyyy-MM-dd")
     private Date entryTime;
 
-    /**
-     * 试用期
-     */
-    private String probation;
 
-    /**
-     * 部门
-     */
-    private String department;
 
     /**
      * 工作岗位 1 场长,3生物安全负责人 ,4 pcr 检测人员,5洗消站点工作人员
      */
     private List<String> job;
 
-
-    /**
-     * 工作性质
-     */
-    private String jobType;
+    private String farmId;
 
     /**
      * 工作地点
      */
     private String workLocation;
-
-    /**
-     * 1人员初级洗消站 2净区 3人员二级洗消站 4场内 5生产区 6车辆初级洗消站 7车辆二级洗消站 8中转料塔外围 9车辆三级洗消站 10销售中转站 11环保区洗消中心 12环保区净区 13洗消中心净区
-     */
-    private Integer workLocationType;
-    private String farmId;
-    private String emergentUser;
-    private String emergentUserPhone;
     private String sheng;
     private String shi;
     private String xxdz;
-    private String yzbm;
-    private String imgUrl;
-
 
 }

+ 16 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/mapper/BaseWorkTypeMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.secure.mapper;
+
+import com.huimv.secure.entity.BaseWorkType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 工作岗位列表 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+public interface BaseWorkTypeMapper extends BaseMapper<BaseWorkType> {
+
+}

+ 16 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/mapper/BillDryMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.secure.mapper;
+
+import com.huimv.secure.entity.BillDry;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 洗消表 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+public interface BillDryMapper extends BaseMapper<BillDry> {
+
+}

+ 16 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/mapper/BillIsolateMapper.java

@@ -0,0 +1,16 @@
+package com.huimv.secure.mapper;
+
+import com.huimv.secure.entity.BillIsolate;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 隔离 Mapper 接口
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+public interface BillIsolateMapper extends BaseMapper<BillIsolate> {
+
+}

+ 7 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/mapper/SysUserMapper.java

@@ -2,6 +2,11 @@ package com.huimv.secure.mapper;
 
 import com.huimv.secure.entity.SysUser;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.huimv.secure.entity.vo.UserAgeAndGender;
+import com.huimv.secure.entity.vo.UserJob;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +17,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2024-01-03
  */
 public interface SysUserMapper extends BaseMapper<SysUser> {
+    List<UserAgeAndGender> userAgeAndGender(@Param("farmId")String farmId);
 
+    List<UserJob> userJob(@Param("farmId")String farmId);
 }

+ 16 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/IBaseWorkTypeService.java

@@ -0,0 +1,16 @@
+package com.huimv.secure.service;
+
+import com.huimv.secure.entity.BaseWorkType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 工作岗位列表 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+public interface IBaseWorkTypeService extends IService<BaseWorkType> {
+
+}

+ 16 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/IBillDryService.java

@@ -0,0 +1,16 @@
+package com.huimv.secure.service;
+
+import com.huimv.secure.entity.BillDry;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 洗消表 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+public interface IBillDryService extends IService<BillDry> {
+
+}

+ 16 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/IBillIsolateService.java

@@ -0,0 +1,16 @@
+package com.huimv.secure.service;
+
+import com.huimv.secure.entity.BillIsolate;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 隔离 服务类
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+public interface IBillIsolateService extends IService<BillIsolate> {
+
+}

+ 14 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/ISysAccountMultilevelService.java

@@ -1,8 +1,11 @@
 package com.huimv.secure.service;
 
+import com.huimv.secure.common.utils.Result;
 import com.huimv.secure.entity.SysAccountMultilevel;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.Map;
+
 /**
  * <p>
  *  服务类
@@ -13,4 +16,15 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ISysAccountMultilevelService extends IService<SysAccountMultilevel> {
 
+    /*添加账号*/
+    Result add(SysAccountMultilevel sysAccountMultilevel);
+
+    /*修改账号*/
+    Result update(Map<String,String> paramsMap);
+
+    /*账号列表展示*/
+    Result listAccount(Map<String,String> paramsMap);
+
+    /*删除账号*/
+    Result deleteAccount(Map<String,String> paramsMap);
 }

+ 16 - 1
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/ISysUserService.java

@@ -1,11 +1,17 @@
 package com.huimv.secure.service;
 
+import com.huimv.secure.common.utils.Result;
 import com.huimv.secure.entity.SysUser;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.huimv.secure.entity.pojo.UserPagePojo;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.Map;
 
 /**
  * <p>
- *  服务类
+ * 服务类
  * </p>
  *
  * @author author
@@ -13,4 +19,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface ISysUserService extends IService<SysUser> {
 
+    Result pageAll(UserPagePojo userPagePojo);
+
+    Result uploadUserImg(MultipartFile imgUrl, Integer id) throws IOException;
+
+    Result userAgeAndGender(Map<String, String> map);
+
+    Result userJob(Map<String, String> map);
+
+    Result listWorkLocation(Map map);
 }

+ 20 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/impl/BaseWorkTypeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.secure.service.impl;
+
+import com.huimv.secure.entity.BaseWorkType;
+import com.huimv.secure.mapper.BaseWorkTypeMapper;
+import com.huimv.secure.service.IBaseWorkTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 工作岗位列表 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+@Service
+public class BaseWorkTypeServiceImpl extends ServiceImpl<BaseWorkTypeMapper, BaseWorkType> implements IBaseWorkTypeService {
+
+}

+ 20 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/impl/BillDryServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.secure.service.impl;
+
+import com.huimv.secure.entity.BillDry;
+import com.huimv.secure.mapper.BillDryMapper;
+import com.huimv.secure.service.IBillDryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 洗消表 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+@Service
+public class BillDryServiceImpl extends ServiceImpl<BillDryMapper, BillDry> implements IBillDryService {
+
+}

+ 20 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/impl/BillIsolateServiceImpl.java

@@ -0,0 +1,20 @@
+package com.huimv.secure.service.impl;
+
+import com.huimv.secure.entity.BillIsolate;
+import com.huimv.secure.mapper.BillIsolateMapper;
+import com.huimv.secure.service.IBillIsolateService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 隔离 服务实现类
+ * </p>
+ *
+ * @author author
+ * @since 2024-01-04
+ */
+@Service
+public class BillIsolateServiceImpl extends ServiceImpl<BillIsolateMapper, BillIsolate> implements IBillIsolateService {
+
+}

+ 72 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/impl/SysAccountMultilevelServiceImpl.java

@@ -1,11 +1,21 @@
 package com.huimv.secure.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.secure.common.utils.Result;
+import com.huimv.secure.common.utils.ResultCode;
+import com.huimv.secure.common.utils.UploadImage;
 import com.huimv.secure.entity.SysAccountMultilevel;
 import com.huimv.secure.mapper.SysAccountMultilevelMapper;
 import com.huimv.secure.service.ISysAccountMultilevelService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Map;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +27,66 @@ import org.springframework.stereotype.Service;
 @Service
 public class SysAccountMultilevelServiceImpl extends ServiceImpl<SysAccountMultilevelMapper, SysAccountMultilevel> implements ISysAccountMultilevelService {
 
+    @Autowired
+    private SysAccountMultilevelMapper accountMultilevelMapper;
+    @Autowired
+    private UploadImage uploadImage;
+
+    @Override
+    public Result add(SysAccountMultilevel sysAccountMultilevel) {
+        int account = this.count(new QueryWrapper<SysAccountMultilevel>().eq("account", sysAccountMultilevel.getAccount()));
+        if (account > 0) {
+            return new Result(10001, "该账号已经存在,请重新创建", false);
+        }
+        accountMultilevelMapper.insert(sysAccountMultilevel);
+        return new Result(10000, "添加成功", true);
+    }
+
+    @Override
+    public Result update(Map<String, String> paramsMap) {
+        String id = paramsMap.get("id");
+        String farmId = paramsMap.get("farmId");
+        String account = paramsMap.get("account");
+        String password = paramsMap.get("password");
+        QueryWrapper<SysAccountMultilevel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("account", account).eq("farm_id", farmId).ne("id", id);
+        if (ObjectUtil.isNotEmpty(accountMultilevelMapper.selectOne(queryWrapper))) {
+            return new Result(10001, "该账号名已被使用,请重新修改", false);
+        } else {
+            SysAccountMultilevel accountMultilevel = accountMultilevelMapper.selectById(id);
+            accountMultilevel.setAccount(account);
+            accountMultilevel.setPassword(password);
+            accountMultilevelMapper.updateById(accountMultilevel);
+            return new Result(10000, "修改成功", true);
+        }
+
+    }
+
+    @Override
+    public Result listAccount(Map<String, String> paramsMap) {
+        String farmId = paramsMap.get("farmId");
+        String userName = paramsMap.get("userName");//员工工号或姓名
+        String workType = paramsMap.get("workType");//工作岗位
+        String workLocation = paramsMap.get("workLocation");//工作地点
+        String pageNum = paramsMap.get("pageNum");
+        String pageSize = paramsMap.get("pageSize");
+        Page<SysAccountMultilevel> page = new Page<>(Integer.parseInt(pageNum), Integer.parseInt(pageSize));
+        QueryWrapper<SysAccountMultilevel> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("farm_id", farmId);
+        queryWrapper.like(StringUtils.isNotBlank(userName), "account", userName).or()
+                .like(StringUtils.isNotBlank(userName), "user_id", userName)
+                .eq(StringUtils.isNotBlank(workType),"type", workType)
+                .eq(StringUtils.isNotBlank(workLocation),"work_location_type", workLocation);
+        return new Result(ResultCode.SUCCESS, accountMultilevelMapper.selectPage(page, queryWrapper));
+    }
+
+    @Override
+    public Result deleteAccount(Map<String, String> paramsMap) {
+        String ids = paramsMap.get("ids");
+        String[] split = ids.split(",");
+        for (String s : split) {
+            accountMultilevelMapper.deleteById(s);
+        }
+        return new Result(10000, "删除成功", true);
+    }
 }

+ 106 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/java/com/huimv/secure/service/impl/SysUserServiceImpl.java

@@ -1,10 +1,31 @@
 package com.huimv.secure.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.huimv.secure.common.utils.Result;
+import com.huimv.secure.common.utils.ResultCode;
+import com.huimv.secure.common.utils.UploadImage;
+import com.huimv.secure.entity.SysAccountMultilevel;
 import com.huimv.secure.entity.SysUser;
+import com.huimv.secure.entity.pojo.UserPagePojo;
+import com.huimv.secure.entity.vo.UserAgeAndGender;
+import com.huimv.secure.entity.vo.UserJob;
+import com.huimv.secure.mapper.SysAccountMultilevelMapper;
 import com.huimv.secure.mapper.SysUserMapper;
 import com.huimv.secure.service.ISysUserService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -17,4 +38,89 @@ import org.springframework.stereotype.Service;
 @Service
 public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService {
 
+
+    @Autowired
+    private SysUserMapper userMapper;
+
+    @Autowired
+    private SysAccountMultilevelMapper sysAccountMultilevelMapper;
+    @Autowired
+    private UploadImage uploadImage;
+
+    @Override
+    public Result pageAll(UserPagePojo userPagePojo) {
+        Integer pageNum = userPagePojo.getPageNum();
+        Integer pageSize = userPagePojo.getPageSize();
+        Integer job = userPagePojo.getJob();
+        Integer workLocationType = userPagePojo.getWorkLocationType();
+        String workLocation = userPagePojo.getWorkLocation();
+        Integer gender = userPagePojo.getGender();
+        String farmId = userPagePojo.getFarmId();
+        String searchStr = userPagePojo.getSearchStr();
+
+
+        QueryWrapper<SysUser> wrapper = new QueryWrapper<>();
+        if (ObjectUtil.isEmpty(pageNum) || pageNum<1) {
+            pageNum = 1;
+        }
+        if (ObjectUtil.isEmpty(pageSize) || pageSize<1 ) {
+            pageSize = 10;
+        }
+        wrapper.eq("farm_id",farmId);
+        wrapper.eq(ObjectUtil.isNotEmpty(job),"job",job);
+        wrapper.eq(ObjectUtil.isNotEmpty(workLocation),"work_location",workLocation);
+        wrapper.eq(ObjectUtil.isNotEmpty(workLocationType),"work_location_type",workLocationType);
+        wrapper.eq(ObjectUtil.isNotEmpty(gender),"gender",gender);
+        if (StringUtils.isNotBlank(searchStr)) {
+            wrapper.and(i -> i.like("user_name",searchStr).or().like("user_phone",searchStr));
+        }
+        wrapper.orderByDesc("id");
+        IPage<SysUser> page = this.page(new Page<>(pageNum, pageSize), wrapper);
+        return new Result(ResultCode.SUCCESS,page);
+
+    }
+
+    @Override
+    public Result userAgeAndGender(Map<String, String> map) {
+        String farmId = map.get("farmId");
+        List<UserAgeAndGender> userAgeAndGenders=  userMapper.userAgeAndGender(farmId);
+        return new Result(ResultCode.SUCCESS,userAgeAndGenders);
+    }
+
+    @Override
+    public Result userJob(Map<String, String> map) {
+        String farmId = map.get("farmId");
+        List<UserJob>  userJobs=  userMapper.userJob(farmId);
+        return new Result(ResultCode.SUCCESS,userJobs);
+
+    }
+
+    @Override
+    public Result listWorkLocation(Map map) {
+
+        return null;
+    }
+
+    @Override
+    public Result uploadUserImg(MultipartFile imgUrl, Integer id) throws IOException {
+        String imageCom = uploadImage.getImageCom(imgUrl);
+        if (ObjectUtil.isNotEmpty(imgUrl)) {
+            if (imageCom.equals("上传失败")) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return new Result(10001, "图片上传失败", false);
+            }
+
+        }
+        SysUser sysUser = new SysUser();
+        sysUser.setId(id);
+        sysUser.setImgUrl(imageCom);
+        userMapper.updateById(sysUser);
+
+        SysAccountMultilevel sysAccountMultilevel = new SysAccountMultilevel();
+        sysAccountMultilevel.setImgUrl(imageCom);
+        sysAccountMultilevelMapper.update(sysAccountMultilevel,new UpdateWrapper<SysAccountMultilevel>().eq("user_id",id));
+        return new Result(10000,"修改成功",true);
+
+    }
+
 }

+ 36 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/resources/com/huimv/secure/mapper/SysUserMapper.xml

@@ -2,4 +2,40 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.huimv.secure.mapper.SysUserMapper">
 
+    <select id="userAgeAndGender" resultType="com.huimv.secure.entity.vo.UserAgeAndGender">
+
+SELECT ar.`age_range` ,IFNULL(a.male_count,0) male_count ,IFNULL(a.female_count ,0) female_count,IFNULL(a.total_count,0) total_count FROM `age_ranges` ar LEFT JOIN
+(SELECT
+    age_range,
+    SUM(CASE WHEN gender = 0 THEN 1 ELSE 0 END) AS male_count,
+    SUM(CASE WHEN gender = 1 THEN 1 ELSE 0 END) AS female_count,
+    COUNT(*) AS total_count
+FROM (
+    SELECT
+        CASE
+	        WHEN age BETWEEN 18 AND 30 THEN '18-30'
+            WHEN age BETWEEN 30 AND 40 THEN '30-40'
+            WHEN age BETWEEN 40 AND 50 THEN '40-50'
+            WHEN age BETWEEN 50 AND 60 THEN '50-60'
+            WHEN age >= 60  THEN '60+'
+        END AS age_range,
+        gender
+    FROM `sys_user`  WHERE farm_id= #{farmId}
+) AS age_gender
+GROUP BY age_range
+) a ON ar.age_range = a.age_range  ORDER BY ar.`age_range`
+    </select>
+
+    <select id="userJob" resultType="com.huimv.secure.entity.vo.UserJob">
+
+      SELECT
+        IFNULL (SUM(CASE WHEN job LIKE "%5%"  THEN 1 ELSE 0 END) ,0)AS clean,
+        IFNULL (SUM(CASE WHEN job LIKE "%4%"  THEN 1 ELSE 0 END) ,0) AS pcr,
+        IFNULL (SUM(CASE WHEN job LIKE "%3%"  THEN 1 ELSE 0 END)  ,0)AS safe,
+       IFNULL ( SUM(CASE WHEN job LIKE "%1%"  THEN 1 ELSE 0 END)  ,0)AS factory
+    FROM
+       `sys_user`
+       WHERE farm_id = #{farmId}
+
+    </select>
 </mapper>

+ 5 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/resources/mapper/BaseWorkTypeMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.secure.mapper.BaseWorkTypeMapper">
+
+</mapper>

+ 5 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/resources/mapper/BillDryMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.secure.mapper.BillDryMapper">
+
+</mapper>

+ 5 - 0
huimv.nongke.secure/huimv.nongke.secure/src/main/resources/mapper/BillIsolateMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.huimv.secure.mapper.BillIsolateMapper">
+
+</mapper>