diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0c49f02..0d9c990 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -1,21 +1,35 @@ package com.casic.missiles.modular.app.service; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.model.AppUser; + +import java.util.List; + public interface IAppUserService { - Object login(); + Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser); - Object listPage(); + Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser); - Object add(); + Page listPage(Page page, AppUserListDTO appUserListDTO); - Object update(); + Object add(AppUserSaveDTO appUserDTO); - Object project(); + Object update(AppUserSaveDTO appUserDTO); - Object unbind(); + Object project(String openId); - Object batchImport(); + Object unbind(Long id); - Object delete(); + List batchImport(List results); + + Object delete(Long id); + + AppUser getAppUserByAccount(String account); + + } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0c49f02..0d9c990 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -1,21 +1,35 @@ package com.casic.missiles.modular.app.service; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.model.AppUser; + +import java.util.List; + public interface IAppUserService { - Object login(); + Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser); - Object listPage(); + Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser); - Object add(); + Page listPage(Page page, AppUserListDTO appUserListDTO); - Object update(); + Object add(AppUserSaveDTO appUserDTO); - Object project(); + Object update(AppUserSaveDTO appUserDTO); - Object unbind(); + Object project(String openId); - Object batchImport(); + Object unbind(Long id); - Object delete(); + List batchImport(List results); + + Object delete(Long id); + + AppUser getAppUserByAccount(String account); + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java index a656f48..0d784e9 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java @@ -1,31 +1,40 @@ package com.casic.missiles.modular.app.service; -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.model.WellPreAdd; + +import java.util.List; +import java.util.Map; + public interface IAppWellPreService { - Object listPage(); + Page listPage(Page preAddPage, WellPreDTO wellPreDTO); /** * 预录入点位信息新增 */ - Object add(); + Object add(WellPreAdd wellPreAdd); /** * 预录入点位信息批量导入 */ - Object batchImport(); + List addWellPreBatch(List wellPreAdds); /** * 预录入点位信息编辑 */ - Object update(); + Object update(WellPreAdd wellPreAdd); /** * 预录入点位信息删除 */ - Object delete(); + Object delete(Long id); + + Map getProjestNameMap(); + + Map getProjestIdMap(); + } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0c49f02..0d9c990 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -1,21 +1,35 @@ package com.casic.missiles.modular.app.service; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.model.AppUser; + +import java.util.List; + public interface IAppUserService { - Object login(); + Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser); - Object listPage(); + Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser); - Object add(); + Page listPage(Page page, AppUserListDTO appUserListDTO); - Object update(); + Object add(AppUserSaveDTO appUserDTO); - Object project(); + Object update(AppUserSaveDTO appUserDTO); - Object unbind(); + Object project(String openId); - Object batchImport(); + Object unbind(Long id); - Object delete(); + List batchImport(List results); + + Object delete(Long id); + + AppUser getAppUserByAccount(String account); + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java index a656f48..0d784e9 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java @@ -1,31 +1,40 @@ package com.casic.missiles.modular.app.service; -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.model.WellPreAdd; + +import java.util.List; +import java.util.Map; + public interface IAppWellPreService { - Object listPage(); + Page listPage(Page preAddPage, WellPreDTO wellPreDTO); /** * 预录入点位信息新增 */ - Object add(); + Object add(WellPreAdd wellPreAdd); /** * 预录入点位信息批量导入 */ - Object batchImport(); + List addWellPreBatch(List wellPreAdds); /** * 预录入点位信息编辑 */ - Object update(); + Object update(WellPreAdd wellPreAdd); /** * 预录入点位信息删除 */ - Object delete(); + Object delete(Long id); + + Map getProjestNameMap(); + + Map getProjestIdMap(); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java deleted file mode 100644 index 763c8c9..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.missiles.modular.app.service.impl; - -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.app.dao.AppProductSafeMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import org.springframework.stereotype.Service; - -@Service -public class AppProuctionSafeServiceImpl extends ServiceImpl implements IAppProuctionSafeService { - - - @Override - public Object listPage() { - return null; - } - - @Override - public Object getTodaySignStatus() { - return null; - } - - @Override - public Object update() { - return null; - } - - @Override - public Object add() { - return null; - } - - @Override - public Object detail() { - return null; - } -} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0c49f02..0d9c990 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -1,21 +1,35 @@ package com.casic.missiles.modular.app.service; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.model.AppUser; + +import java.util.List; + public interface IAppUserService { - Object login(); + Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser); - Object listPage(); + Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser); - Object add(); + Page listPage(Page page, AppUserListDTO appUserListDTO); - Object update(); + Object add(AppUserSaveDTO appUserDTO); - Object project(); + Object update(AppUserSaveDTO appUserDTO); - Object unbind(); + Object project(String openId); - Object batchImport(); + Object unbind(Long id); - Object delete(); + List batchImport(List results); + + Object delete(Long id); + + AppUser getAppUserByAccount(String account); + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java index a656f48..0d784e9 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java @@ -1,31 +1,40 @@ package com.casic.missiles.modular.app.service; -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.model.WellPreAdd; + +import java.util.List; +import java.util.Map; + public interface IAppWellPreService { - Object listPage(); + Page listPage(Page preAddPage, WellPreDTO wellPreDTO); /** * 预录入点位信息新增 */ - Object add(); + Object add(WellPreAdd wellPreAdd); /** * 预录入点位信息批量导入 */ - Object batchImport(); + List addWellPreBatch(List wellPreAdds); /** * 预录入点位信息编辑 */ - Object update(); + Object update(WellPreAdd wellPreAdd); /** * 预录入点位信息删除 */ - Object delete(); + Object delete(Long id); + + Map getProjestNameMap(); + + Map getProjestIdMap(); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java deleted file mode 100644 index 763c8c9..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.missiles.modular.app.service.impl; - -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.app.dao.AppProductSafeMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import org.springframework.stereotype.Service; - -@Service -public class AppProuctionSafeServiceImpl extends ServiceImpl implements IAppProuctionSafeService { - - - @Override - public Object listPage() { - return null; - } - - @Override - public Object getTodaySignStatus() { - return null; - } - - @Override - public Object update() { - return null; - } - - @Override - public Object add() { - return null; - } - - @Override - public Object detail() { - return null; - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 51b1a6d..4aa4faf 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -1,49 +1,383 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.base.language.I18nFactory; +import com.casic.missiles.core.base.response.ErrorResponseData; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.exception.BizExceptionEnum; +import com.casic.missiles.core.exception.GunsException; +import com.casic.missiles.core.exception.GunsExceptionEnum; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.app.dao.AppUserMapper; +import com.casic.missiles.modular.app.dto.user.AppUserImportValid; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.AppUserStatusEnum; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Slf4j @Service -public class AppUserServiceImpl implements IAppUserService { +@AllArgsConstructor +public class AppUserServiceImpl extends ServiceImpl implements IAppUserService, AppUserStatusEnum { + private final Validator validator; + private final DictMapper dictMapper; + private final IAppWellPreService appWellPreService; + private final CasicProperties casicProperties; @Override - public Object login() { - return null; + public Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { + try { + appUserLoginDTO.setPassword(RSAUtils.decrypt(appUserLoginDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + throw new BusinessException(BusinessExceptionEnum.DECRYPTION_ERROR); + } + String userPassword = ShiroKit.md5(appUserLoginDTO.getPassword(), appUser.getSalt()); + if (userPassword.equals(appUser.getPassword())) { + return true; + } else { + return false; + } } @Override - public Object listPage() { - return null; + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + appUser.setStatus(ALREADY_BOUND); + appUser.setAttr(appUserLoginDTO.getWeChatName()); + appUser.setOpenId(appUserLoginDTO.getOpenId()); + int bindFlag = this.baseMapper.updateById(appUser); + if (bindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.BIND_USER_ERROR); } @Override - public Object add() { - return null; + public Page listPage(Page page, AppUserListDTO appUserListDTO) { + EntityWrapper entityWrapper = initQueryParam(appUserListDTO); + List appUserList = this.baseMapper.selectPage(page, entityWrapper); + for (AppUser appUser : appUserList) { + appUser.setProjectNames(tranIdsToStrNames(appUser.getProjectIds())); + } + page.setRecords(appUserList); + return page; } @Override - public Object update() { - return null; + public Object add(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), null); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + userDTO.setStatus(NOT_BOUND); + this.insert(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object project() { - return null; + public Object update(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), userDTO.getId()); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + this.updateById(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object unbind() { - return null; + public Object project(String openId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq(openId, openId); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + if (appUserOptional.isPresent()) { + AppUser appUser = appUserOptional.get(); + List projects = tranIdsToListNames(appUser.getProjectIds()); + return ResponseData.success(projects); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object batchImport() { - return null; + public Object unbind(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + appUser.setLabelLastTime(null); + appUser.setOpenId(null); + appUser.setAttr(null); + appUser.setAttrAlias(null); + //状态置为未绑定 + appUser.setStatus(NOT_BOUND); + int unbindFlag = this.baseMapper.updateById(appUser); + if (unbindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /** + * 1、准备用户导入信息的验证集合 + * 2、进行检测-项目、手机号、role + * 3、批量导入 + */ @Override - public Object delete() { - return null; + public List batchImport(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + AppUserImportValid userValid = prepareUserValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(user -> { + index[0]++; + validator.validate(user, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } + + //验证项目名称是否存在 + String[] projectNames = user.getProjectNames().split(","); + String projectIdIs = ""; + for (String projectName : projectNames) { + Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); + return; + } else { + projectIdIs += userValid.getProjectNameMap().get(projectName) + ","; + } + } + if (!StringUtils.isEmpty(projectIdIs)) { + projectIdIs = projectIdIs.substring(0, projectIdIs.length() - 1); + } + user.setProjectIds(projectIdIs); + + //验证角色类型 + if (StringUtils.isNotEmpty(user.getRole())) { + Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); + if (roleIsExist) { + list.add("第" + index[0] + "行,角色类型错误,查询不到!"); + return; + } else { + user.setRole(userValid.getRoleMap().get(user.getRole())); + } + } + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + user.setStatus(NOT_BOUND); + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存app用户信息 + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入用户数据不能为空"); + } + return list; } + + /** + * 状态即为状态置为3 + */ + @Override + public Object delete(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + //设置为删除状态 + appUser.setStatus(ALREADY_DELETE); + int deleteFlag = this.baseMapper.updateById(appUser); + if (deleteFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + + private AppUser createUser(AppUserSaveDTO userDTO) { + if (userDTO == null) { + return null; + } else { + AppUser user = new AppUser(); + BeanUtils.copyProperties(userDTO, user); + return user; + } + } + + /** + * 通过项目ids获取项目名称字符串 + */ + private String tranIdsToStrNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + String projectNames = ""; + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNames += wellPreMaps.get(projectId) + ","; + } + } + if (!StringUtils.isEmpty(projectNames)) { + projectNames = projectNames.substring(0, projectNames.length() - 1); + } + return projectNames; + } + + /** + * 通过项目ids获取项目名称列表 + */ + private List tranIdsToListNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + List projectNamelist = new ArrayList<>(); + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNamelist.add(wellPreMaps.get(projectId)); + } + } + return projectNamelist; + } + + private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); + query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); + if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { + query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); + } + query.orderBy("createTime", false); + return query; + } + + private AppUserImportValid prepareUserValid() { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictRole() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("appRole"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return dictRoleMap; + } + + + //获取项目名称 + private Map getUserPhoneMap() { + List userPhoneList = this.baseMapper.getUserPhoneList(); + //由名称查询id + Map userPhoneMap = userPhoneList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + @Override + public AppUser getAppUserByAccount(String account) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + appUserWrapper.ne("status", "3"); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + return appUserOptional.isPresent() ? appUserOptional.get() : null; + } + + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + private int getAppUserByAccount(String account, Long currentUserId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + if (!ObjectUtils.isEmpty(currentUserId)) { + appUserWrapper.ne("id", currentUserId); + } + List appUserList = this.baseMapper.selectList(appUserWrapper); + return appUserList != null ? appUserList.size() : 0; + } + + private String decryptPassword(String password) { + try { + String privateKey = this.casicProperties.getRsaPrivateKey(); + if (StrUtil.hasEmpty(new CharSequence[]{this.casicProperties.getRsaPrivateKey(), this.casicProperties.getRsaPublicKey()})) { + privateKey = ShiroKit.getSession().getAttribute("RSAPrivateKey").toString(); + } + return RSAUtils.decrypt(password, privateKey); + } catch (Exception var4) { + throw new RuntimeException(I18nFactory.getMessage("admin.nouser.error")); + } + } + } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0c49f02..0d9c990 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -1,21 +1,35 @@ package com.casic.missiles.modular.app.service; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.model.AppUser; + +import java.util.List; + public interface IAppUserService { - Object login(); + Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser); - Object listPage(); + Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser); - Object add(); + Page listPage(Page page, AppUserListDTO appUserListDTO); - Object update(); + Object add(AppUserSaveDTO appUserDTO); - Object project(); + Object update(AppUserSaveDTO appUserDTO); - Object unbind(); + Object project(String openId); - Object batchImport(); + Object unbind(Long id); - Object delete(); + List batchImport(List results); + + Object delete(Long id); + + AppUser getAppUserByAccount(String account); + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java index a656f48..0d784e9 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java @@ -1,31 +1,40 @@ package com.casic.missiles.modular.app.service; -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.model.WellPreAdd; + +import java.util.List; +import java.util.Map; + public interface IAppWellPreService { - Object listPage(); + Page listPage(Page preAddPage, WellPreDTO wellPreDTO); /** * 预录入点位信息新增 */ - Object add(); + Object add(WellPreAdd wellPreAdd); /** * 预录入点位信息批量导入 */ - Object batchImport(); + List addWellPreBatch(List wellPreAdds); /** * 预录入点位信息编辑 */ - Object update(); + Object update(WellPreAdd wellPreAdd); /** * 预录入点位信息删除 */ - Object delete(); + Object delete(Long id); + + Map getProjestNameMap(); + + Map getProjestIdMap(); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java deleted file mode 100644 index 763c8c9..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.missiles.modular.app.service.impl; - -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.app.dao.AppProductSafeMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import org.springframework.stereotype.Service; - -@Service -public class AppProuctionSafeServiceImpl extends ServiceImpl implements IAppProuctionSafeService { - - - @Override - public Object listPage() { - return null; - } - - @Override - public Object getTodaySignStatus() { - return null; - } - - @Override - public Object update() { - return null; - } - - @Override - public Object add() { - return null; - } - - @Override - public Object detail() { - return null; - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 51b1a6d..4aa4faf 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -1,49 +1,383 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.base.language.I18nFactory; +import com.casic.missiles.core.base.response.ErrorResponseData; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.exception.BizExceptionEnum; +import com.casic.missiles.core.exception.GunsException; +import com.casic.missiles.core.exception.GunsExceptionEnum; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.app.dao.AppUserMapper; +import com.casic.missiles.modular.app.dto.user.AppUserImportValid; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.AppUserStatusEnum; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Slf4j @Service -public class AppUserServiceImpl implements IAppUserService { +@AllArgsConstructor +public class AppUserServiceImpl extends ServiceImpl implements IAppUserService, AppUserStatusEnum { + private final Validator validator; + private final DictMapper dictMapper; + private final IAppWellPreService appWellPreService; + private final CasicProperties casicProperties; @Override - public Object login() { - return null; + public Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { + try { + appUserLoginDTO.setPassword(RSAUtils.decrypt(appUserLoginDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + throw new BusinessException(BusinessExceptionEnum.DECRYPTION_ERROR); + } + String userPassword = ShiroKit.md5(appUserLoginDTO.getPassword(), appUser.getSalt()); + if (userPassword.equals(appUser.getPassword())) { + return true; + } else { + return false; + } } @Override - public Object listPage() { - return null; + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + appUser.setStatus(ALREADY_BOUND); + appUser.setAttr(appUserLoginDTO.getWeChatName()); + appUser.setOpenId(appUserLoginDTO.getOpenId()); + int bindFlag = this.baseMapper.updateById(appUser); + if (bindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.BIND_USER_ERROR); } @Override - public Object add() { - return null; + public Page listPage(Page page, AppUserListDTO appUserListDTO) { + EntityWrapper entityWrapper = initQueryParam(appUserListDTO); + List appUserList = this.baseMapper.selectPage(page, entityWrapper); + for (AppUser appUser : appUserList) { + appUser.setProjectNames(tranIdsToStrNames(appUser.getProjectIds())); + } + page.setRecords(appUserList); + return page; } @Override - public Object update() { - return null; + public Object add(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), null); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + userDTO.setStatus(NOT_BOUND); + this.insert(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object project() { - return null; + public Object update(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), userDTO.getId()); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + this.updateById(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object unbind() { - return null; + public Object project(String openId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq(openId, openId); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + if (appUserOptional.isPresent()) { + AppUser appUser = appUserOptional.get(); + List projects = tranIdsToListNames(appUser.getProjectIds()); + return ResponseData.success(projects); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object batchImport() { - return null; + public Object unbind(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + appUser.setLabelLastTime(null); + appUser.setOpenId(null); + appUser.setAttr(null); + appUser.setAttrAlias(null); + //状态置为未绑定 + appUser.setStatus(NOT_BOUND); + int unbindFlag = this.baseMapper.updateById(appUser); + if (unbindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /** + * 1、准备用户导入信息的验证集合 + * 2、进行检测-项目、手机号、role + * 3、批量导入 + */ @Override - public Object delete() { - return null; + public List batchImport(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + AppUserImportValid userValid = prepareUserValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(user -> { + index[0]++; + validator.validate(user, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } + + //验证项目名称是否存在 + String[] projectNames = user.getProjectNames().split(","); + String projectIdIs = ""; + for (String projectName : projectNames) { + Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); + return; + } else { + projectIdIs += userValid.getProjectNameMap().get(projectName) + ","; + } + } + if (!StringUtils.isEmpty(projectIdIs)) { + projectIdIs = projectIdIs.substring(0, projectIdIs.length() - 1); + } + user.setProjectIds(projectIdIs); + + //验证角色类型 + if (StringUtils.isNotEmpty(user.getRole())) { + Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); + if (roleIsExist) { + list.add("第" + index[0] + "行,角色类型错误,查询不到!"); + return; + } else { + user.setRole(userValid.getRoleMap().get(user.getRole())); + } + } + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + user.setStatus(NOT_BOUND); + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存app用户信息 + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入用户数据不能为空"); + } + return list; } + + /** + * 状态即为状态置为3 + */ + @Override + public Object delete(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + //设置为删除状态 + appUser.setStatus(ALREADY_DELETE); + int deleteFlag = this.baseMapper.updateById(appUser); + if (deleteFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + + private AppUser createUser(AppUserSaveDTO userDTO) { + if (userDTO == null) { + return null; + } else { + AppUser user = new AppUser(); + BeanUtils.copyProperties(userDTO, user); + return user; + } + } + + /** + * 通过项目ids获取项目名称字符串 + */ + private String tranIdsToStrNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + String projectNames = ""; + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNames += wellPreMaps.get(projectId) + ","; + } + } + if (!StringUtils.isEmpty(projectNames)) { + projectNames = projectNames.substring(0, projectNames.length() - 1); + } + return projectNames; + } + + /** + * 通过项目ids获取项目名称列表 + */ + private List tranIdsToListNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + List projectNamelist = new ArrayList<>(); + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNamelist.add(wellPreMaps.get(projectId)); + } + } + return projectNamelist; + } + + private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); + query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); + if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { + query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); + } + query.orderBy("createTime", false); + return query; + } + + private AppUserImportValid prepareUserValid() { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictRole() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("appRole"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return dictRoleMap; + } + + + //获取项目名称 + private Map getUserPhoneMap() { + List userPhoneList = this.baseMapper.getUserPhoneList(); + //由名称查询id + Map userPhoneMap = userPhoneList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + @Override + public AppUser getAppUserByAccount(String account) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + appUserWrapper.ne("status", "3"); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + return appUserOptional.isPresent() ? appUserOptional.get() : null; + } + + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + private int getAppUserByAccount(String account, Long currentUserId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + if (!ObjectUtils.isEmpty(currentUserId)) { + appUserWrapper.ne("id", currentUserId); + } + List appUserList = this.baseMapper.selectList(appUserWrapper); + return appUserList != null ? appUserList.size() : 0; + } + + private String decryptPassword(String password) { + try { + String privateKey = this.casicProperties.getRsaPrivateKey(); + if (StrUtil.hasEmpty(new CharSequence[]{this.casicProperties.getRsaPrivateKey(), this.casicProperties.getRsaPublicKey()})) { + privateKey = ShiroKit.getSession().getAttribute("RSAPrivateKey").toString(); + } + return RSAUtils.decrypt(password, privateKey); + } catch (Exception var4) { + throw new RuntimeException(I18nFactory.getMessage("admin.nouser.error")); + } + } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 8bc52d5..18a1c5e 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -1,35 +1,209 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.modular.app.dao.WellPreAddMapper; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.dto.WellPreImportValid; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; @Service -public class AppWellPreServiceImpl implements IAppWellPreService { +@AllArgsConstructor +public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { + private final Validator validator; + private final DictMapper dictMapper; @Override - public Object listPage() { - return null; + public Page listPage(Page preAddPage, WellPreDTO wellPreDTO) { + EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); + List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); + Map projestMaps = getProjestIdMap(); + for (WellPreAdd wellPreAdd : wellPreAddList) { + if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { + wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + } + } + preAddPage.setRecords(wellPreAddList); + return preAddPage; } @Override - public Object add() { - return null; + public Object add(WellPreAdd wellPreAdd) { + int addFlag = this.baseMapper.insert(wellPreAdd); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 + */ + @Override + public List addWellPreBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + WellPreImportValid wellPreValid = prepareWellPreValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(wellPreAdd -> { + index[0]++; + validator.validate(wellPreAdd, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //点位编号的唯一性 + Boolean wellCodeIsExist = wellPreValid.getWellCodeMap().containsKey(wellPreAdd.getWellCode()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,设备编号已经存在!"); + return; + } + //验证项目名称是否存在 + Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称错误,查询不到!"); + return; + } else { + wellPreAdd.setProjectId(wellPreValid.getProjectMap().get(wellPreAdd.getProjectName())); + } + //验证点位类型 + Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); + if (wellTypeIsExist) { + list.add("第" + index[0] + "行,点位类型错误,查询不到!"); + return; + } else { + wellPreAdd.setWellType(wellPreValid.getDictSuiltWellMap().get(wellPreAdd.getWellTypeName())); + } + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存设备信息 + Boolean batchFlag=this.insertBatch(results); + if(batchFlag){ + return list; + }else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入数据不能为空"); + } + return list; } @Override - public Object batchImport() { - return null; + public Object update(WellPreAdd wellPreAdd) { + int updateFlag = this.baseMapper.updateById(wellPreAdd); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object update() { - return null; + public Object delete(Long id) { + int deleteFlag = this.baseMapper.deleteById(id); + if (deleteFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellCode()), "well_code", wellPreDTO.getWellCode()); + query.eq(StringUtils.isNotEmpty(wellPreDTO.getProjectId()), "projectId", wellPreDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getPosition()), "position", wellPreDTO.getPosition()); + //时间处理 + query.ge(StringUtils.isNotEmpty(wellPreDTO.getStartTime()), "createTime", wellPreDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(wellPreDTO.getEndTime()), "createTime", wellPreDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + + /** + * 预录入初始化的内容都放在该方法进行批量初始化 + */ + private WellPreImportValid prepareWellPreValid() { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllProjestNameMap()) + .dictSuiltWellMap(getDictSuiltWell()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictSuiltWell() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + Map wellCodeMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return wellCodeMap; + } + + //获取点位编号 + private Map getAllProjestNameMap() { + List allWellPreList = this.baseMapper.getAllWellPreList(); + Map wellCodeMap = allWellPreList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity()) + ); + return wellCodeMap; + } + + //获取项目名称 @Override - public Object delete() { - return null; + public Map getProjestNameMap() { + List> projects = this.baseMapper.getProjectList(); + //由名称查询id + Map projectMap = projects.stream().collect( + Collectors.toMap(e -> e.get("projectName"), + e -> e.get("projectId")) + ); + return projectMap; + } + + + @Override + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); + Map projectMaps = projects.stream().collect( + Collectors.toMap(e -> e.get("projectId"), + e -> e.get("projectName")) + ); + return projectMaps; } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0c49f02..0d9c990 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -1,21 +1,35 @@ package com.casic.missiles.modular.app.service; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.model.AppUser; + +import java.util.List; + public interface IAppUserService { - Object login(); + Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser); - Object listPage(); + Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser); - Object add(); + Page listPage(Page page, AppUserListDTO appUserListDTO); - Object update(); + Object add(AppUserSaveDTO appUserDTO); - Object project(); + Object update(AppUserSaveDTO appUserDTO); - Object unbind(); + Object project(String openId); - Object batchImport(); + Object unbind(Long id); - Object delete(); + List batchImport(List results); + + Object delete(Long id); + + AppUser getAppUserByAccount(String account); + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java index a656f48..0d784e9 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java @@ -1,31 +1,40 @@ package com.casic.missiles.modular.app.service; -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.model.WellPreAdd; + +import java.util.List; +import java.util.Map; + public interface IAppWellPreService { - Object listPage(); + Page listPage(Page preAddPage, WellPreDTO wellPreDTO); /** * 预录入点位信息新增 */ - Object add(); + Object add(WellPreAdd wellPreAdd); /** * 预录入点位信息批量导入 */ - Object batchImport(); + List addWellPreBatch(List wellPreAdds); /** * 预录入点位信息编辑 */ - Object update(); + Object update(WellPreAdd wellPreAdd); /** * 预录入点位信息删除 */ - Object delete(); + Object delete(Long id); + + Map getProjestNameMap(); + + Map getProjestIdMap(); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java deleted file mode 100644 index 763c8c9..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.missiles.modular.app.service.impl; - -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.app.dao.AppProductSafeMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import org.springframework.stereotype.Service; - -@Service -public class AppProuctionSafeServiceImpl extends ServiceImpl implements IAppProuctionSafeService { - - - @Override - public Object listPage() { - return null; - } - - @Override - public Object getTodaySignStatus() { - return null; - } - - @Override - public Object update() { - return null; - } - - @Override - public Object add() { - return null; - } - - @Override - public Object detail() { - return null; - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 51b1a6d..4aa4faf 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -1,49 +1,383 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.base.language.I18nFactory; +import com.casic.missiles.core.base.response.ErrorResponseData; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.exception.BizExceptionEnum; +import com.casic.missiles.core.exception.GunsException; +import com.casic.missiles.core.exception.GunsExceptionEnum; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.app.dao.AppUserMapper; +import com.casic.missiles.modular.app.dto.user.AppUserImportValid; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.AppUserStatusEnum; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Slf4j @Service -public class AppUserServiceImpl implements IAppUserService { +@AllArgsConstructor +public class AppUserServiceImpl extends ServiceImpl implements IAppUserService, AppUserStatusEnum { + private final Validator validator; + private final DictMapper dictMapper; + private final IAppWellPreService appWellPreService; + private final CasicProperties casicProperties; @Override - public Object login() { - return null; + public Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { + try { + appUserLoginDTO.setPassword(RSAUtils.decrypt(appUserLoginDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + throw new BusinessException(BusinessExceptionEnum.DECRYPTION_ERROR); + } + String userPassword = ShiroKit.md5(appUserLoginDTO.getPassword(), appUser.getSalt()); + if (userPassword.equals(appUser.getPassword())) { + return true; + } else { + return false; + } } @Override - public Object listPage() { - return null; + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + appUser.setStatus(ALREADY_BOUND); + appUser.setAttr(appUserLoginDTO.getWeChatName()); + appUser.setOpenId(appUserLoginDTO.getOpenId()); + int bindFlag = this.baseMapper.updateById(appUser); + if (bindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.BIND_USER_ERROR); } @Override - public Object add() { - return null; + public Page listPage(Page page, AppUserListDTO appUserListDTO) { + EntityWrapper entityWrapper = initQueryParam(appUserListDTO); + List appUserList = this.baseMapper.selectPage(page, entityWrapper); + for (AppUser appUser : appUserList) { + appUser.setProjectNames(tranIdsToStrNames(appUser.getProjectIds())); + } + page.setRecords(appUserList); + return page; } @Override - public Object update() { - return null; + public Object add(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), null); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + userDTO.setStatus(NOT_BOUND); + this.insert(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object project() { - return null; + public Object update(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), userDTO.getId()); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + this.updateById(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object unbind() { - return null; + public Object project(String openId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq(openId, openId); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + if (appUserOptional.isPresent()) { + AppUser appUser = appUserOptional.get(); + List projects = tranIdsToListNames(appUser.getProjectIds()); + return ResponseData.success(projects); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object batchImport() { - return null; + public Object unbind(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + appUser.setLabelLastTime(null); + appUser.setOpenId(null); + appUser.setAttr(null); + appUser.setAttrAlias(null); + //状态置为未绑定 + appUser.setStatus(NOT_BOUND); + int unbindFlag = this.baseMapper.updateById(appUser); + if (unbindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /** + * 1、准备用户导入信息的验证集合 + * 2、进行检测-项目、手机号、role + * 3、批量导入 + */ @Override - public Object delete() { - return null; + public List batchImport(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + AppUserImportValid userValid = prepareUserValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(user -> { + index[0]++; + validator.validate(user, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } + + //验证项目名称是否存在 + String[] projectNames = user.getProjectNames().split(","); + String projectIdIs = ""; + for (String projectName : projectNames) { + Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); + return; + } else { + projectIdIs += userValid.getProjectNameMap().get(projectName) + ","; + } + } + if (!StringUtils.isEmpty(projectIdIs)) { + projectIdIs = projectIdIs.substring(0, projectIdIs.length() - 1); + } + user.setProjectIds(projectIdIs); + + //验证角色类型 + if (StringUtils.isNotEmpty(user.getRole())) { + Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); + if (roleIsExist) { + list.add("第" + index[0] + "行,角色类型错误,查询不到!"); + return; + } else { + user.setRole(userValid.getRoleMap().get(user.getRole())); + } + } + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + user.setStatus(NOT_BOUND); + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存app用户信息 + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入用户数据不能为空"); + } + return list; } + + /** + * 状态即为状态置为3 + */ + @Override + public Object delete(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + //设置为删除状态 + appUser.setStatus(ALREADY_DELETE); + int deleteFlag = this.baseMapper.updateById(appUser); + if (deleteFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + + private AppUser createUser(AppUserSaveDTO userDTO) { + if (userDTO == null) { + return null; + } else { + AppUser user = new AppUser(); + BeanUtils.copyProperties(userDTO, user); + return user; + } + } + + /** + * 通过项目ids获取项目名称字符串 + */ + private String tranIdsToStrNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + String projectNames = ""; + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNames += wellPreMaps.get(projectId) + ","; + } + } + if (!StringUtils.isEmpty(projectNames)) { + projectNames = projectNames.substring(0, projectNames.length() - 1); + } + return projectNames; + } + + /** + * 通过项目ids获取项目名称列表 + */ + private List tranIdsToListNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + List projectNamelist = new ArrayList<>(); + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNamelist.add(wellPreMaps.get(projectId)); + } + } + return projectNamelist; + } + + private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); + query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); + if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { + query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); + } + query.orderBy("createTime", false); + return query; + } + + private AppUserImportValid prepareUserValid() { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictRole() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("appRole"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return dictRoleMap; + } + + + //获取项目名称 + private Map getUserPhoneMap() { + List userPhoneList = this.baseMapper.getUserPhoneList(); + //由名称查询id + Map userPhoneMap = userPhoneList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + @Override + public AppUser getAppUserByAccount(String account) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + appUserWrapper.ne("status", "3"); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + return appUserOptional.isPresent() ? appUserOptional.get() : null; + } + + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + private int getAppUserByAccount(String account, Long currentUserId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + if (!ObjectUtils.isEmpty(currentUserId)) { + appUserWrapper.ne("id", currentUserId); + } + List appUserList = this.baseMapper.selectList(appUserWrapper); + return appUserList != null ? appUserList.size() : 0; + } + + private String decryptPassword(String password) { + try { + String privateKey = this.casicProperties.getRsaPrivateKey(); + if (StrUtil.hasEmpty(new CharSequence[]{this.casicProperties.getRsaPrivateKey(), this.casicProperties.getRsaPublicKey()})) { + privateKey = ShiroKit.getSession().getAttribute("RSAPrivateKey").toString(); + } + return RSAUtils.decrypt(password, privateKey); + } catch (Exception var4) { + throw new RuntimeException(I18nFactory.getMessage("admin.nouser.error")); + } + } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 8bc52d5..18a1c5e 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -1,35 +1,209 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.modular.app.dao.WellPreAddMapper; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.dto.WellPreImportValid; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; @Service -public class AppWellPreServiceImpl implements IAppWellPreService { +@AllArgsConstructor +public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { + private final Validator validator; + private final DictMapper dictMapper; @Override - public Object listPage() { - return null; + public Page listPage(Page preAddPage, WellPreDTO wellPreDTO) { + EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); + List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); + Map projestMaps = getProjestIdMap(); + for (WellPreAdd wellPreAdd : wellPreAddList) { + if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { + wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + } + } + preAddPage.setRecords(wellPreAddList); + return preAddPage; } @Override - public Object add() { - return null; + public Object add(WellPreAdd wellPreAdd) { + int addFlag = this.baseMapper.insert(wellPreAdd); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 + */ + @Override + public List addWellPreBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + WellPreImportValid wellPreValid = prepareWellPreValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(wellPreAdd -> { + index[0]++; + validator.validate(wellPreAdd, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //点位编号的唯一性 + Boolean wellCodeIsExist = wellPreValid.getWellCodeMap().containsKey(wellPreAdd.getWellCode()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,设备编号已经存在!"); + return; + } + //验证项目名称是否存在 + Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称错误,查询不到!"); + return; + } else { + wellPreAdd.setProjectId(wellPreValid.getProjectMap().get(wellPreAdd.getProjectName())); + } + //验证点位类型 + Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); + if (wellTypeIsExist) { + list.add("第" + index[0] + "行,点位类型错误,查询不到!"); + return; + } else { + wellPreAdd.setWellType(wellPreValid.getDictSuiltWellMap().get(wellPreAdd.getWellTypeName())); + } + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存设备信息 + Boolean batchFlag=this.insertBatch(results); + if(batchFlag){ + return list; + }else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入数据不能为空"); + } + return list; } @Override - public Object batchImport() { - return null; + public Object update(WellPreAdd wellPreAdd) { + int updateFlag = this.baseMapper.updateById(wellPreAdd); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object update() { - return null; + public Object delete(Long id) { + int deleteFlag = this.baseMapper.deleteById(id); + if (deleteFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellCode()), "well_code", wellPreDTO.getWellCode()); + query.eq(StringUtils.isNotEmpty(wellPreDTO.getProjectId()), "projectId", wellPreDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getPosition()), "position", wellPreDTO.getPosition()); + //时间处理 + query.ge(StringUtils.isNotEmpty(wellPreDTO.getStartTime()), "createTime", wellPreDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(wellPreDTO.getEndTime()), "createTime", wellPreDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + + /** + * 预录入初始化的内容都放在该方法进行批量初始化 + */ + private WellPreImportValid prepareWellPreValid() { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllProjestNameMap()) + .dictSuiltWellMap(getDictSuiltWell()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictSuiltWell() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + Map wellCodeMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return wellCodeMap; + } + + //获取点位编号 + private Map getAllProjestNameMap() { + List allWellPreList = this.baseMapper.getAllWellPreList(); + Map wellCodeMap = allWellPreList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity()) + ); + return wellCodeMap; + } + + //获取项目名称 @Override - public Object delete() { - return null; + public Map getProjestNameMap() { + List> projects = this.baseMapper.getProjectList(); + //由名称查询id + Map projectMap = projects.stream().collect( + Collectors.toMap(e -> e.get("projectName"), + e -> e.get("projectId")) + ); + return projectMap; + } + + + @Override + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); + Map projectMaps = projects.stream().collect( + Collectors.toMap(e -> e.get("projectId"), + e -> e.get("projectName")) + ); + return projectMaps; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java new file mode 100644 index 0000000..922cbc0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.app.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.dao.AppProducteSafeMapper; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class IAppProucteSafeServiceImpl extends ServiceImpl implements IAppProucteSafeService { + + @Value("${casic.photoPath}") + private String photoPath; + @Autowired + private IAppWellPreService appWellPreService; + + @Override + public Page listPage(Page page, ProucteSafeDTO proucteSafeDTO) { + EntityWrapper entityWrapper = initQueryParam(proucteSafeDTO); + List appProductSafes = this.baseMapper.selectPage(page, entityWrapper); + Map appWellPreMap = appWellPreService.getProjestIdMap(); + for (AppProducteSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId())); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + } + page.setRecords(appProductSafes); + return page; + } + + @Override + public Object getTodaySignStatus(String openId) { + String isHasSign = this.baseMapper.getTodaySignStatus(openId); + Map signStatusMap = new HashMap<>(); + if (StringUtils.isEmpty(isHasSign)) { + signStatusMap.put("signStatus", "0"); + } else { + signStatusMap.put("signStatus", "1"); + } + return ResponseData.success(signStatusMap); + } + + @Override + public Object update(AppProducteSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProducteSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProducteSafe appProductSafe = this.baseMapper.selectById(id); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + return appProductSafe; + } + + private EntityWrapper initQueryParam(ProucteSafeDTO proucteSafeDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(proucteSafeDTO.getSignName()), "signName", proucteSafeDTO.getSignName()); + query.eq(StringUtils.isNotEmpty(proucteSafeDTO.getProjectId()), "well_code", proucteSafeDTO.getProjectId()); + //时间处理 + query.ge(StringUtils.isNotEmpty(proucteSafeDTO.getStartTime()), "signTime", proucteSafeDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(proucteSafeDTO.getEndTime()), "signTime", proucteSafeDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0c49f02..0d9c990 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -1,21 +1,35 @@ package com.casic.missiles.modular.app.service; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.model.AppUser; + +import java.util.List; + public interface IAppUserService { - Object login(); + Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser); - Object listPage(); + Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser); - Object add(); + Page listPage(Page page, AppUserListDTO appUserListDTO); - Object update(); + Object add(AppUserSaveDTO appUserDTO); - Object project(); + Object update(AppUserSaveDTO appUserDTO); - Object unbind(); + Object project(String openId); - Object batchImport(); + Object unbind(Long id); - Object delete(); + List batchImport(List results); + + Object delete(Long id); + + AppUser getAppUserByAccount(String account); + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java index a656f48..0d784e9 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java @@ -1,31 +1,40 @@ package com.casic.missiles.modular.app.service; -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.model.WellPreAdd; + +import java.util.List; +import java.util.Map; + public interface IAppWellPreService { - Object listPage(); + Page listPage(Page preAddPage, WellPreDTO wellPreDTO); /** * 预录入点位信息新增 */ - Object add(); + Object add(WellPreAdd wellPreAdd); /** * 预录入点位信息批量导入 */ - Object batchImport(); + List addWellPreBatch(List wellPreAdds); /** * 预录入点位信息编辑 */ - Object update(); + Object update(WellPreAdd wellPreAdd); /** * 预录入点位信息删除 */ - Object delete(); + Object delete(Long id); + + Map getProjestNameMap(); + + Map getProjestIdMap(); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java deleted file mode 100644 index 763c8c9..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.missiles.modular.app.service.impl; - -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.app.dao.AppProductSafeMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import org.springframework.stereotype.Service; - -@Service -public class AppProuctionSafeServiceImpl extends ServiceImpl implements IAppProuctionSafeService { - - - @Override - public Object listPage() { - return null; - } - - @Override - public Object getTodaySignStatus() { - return null; - } - - @Override - public Object update() { - return null; - } - - @Override - public Object add() { - return null; - } - - @Override - public Object detail() { - return null; - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 51b1a6d..4aa4faf 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -1,49 +1,383 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.base.language.I18nFactory; +import com.casic.missiles.core.base.response.ErrorResponseData; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.exception.BizExceptionEnum; +import com.casic.missiles.core.exception.GunsException; +import com.casic.missiles.core.exception.GunsExceptionEnum; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.app.dao.AppUserMapper; +import com.casic.missiles.modular.app.dto.user.AppUserImportValid; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.AppUserStatusEnum; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Slf4j @Service -public class AppUserServiceImpl implements IAppUserService { +@AllArgsConstructor +public class AppUserServiceImpl extends ServiceImpl implements IAppUserService, AppUserStatusEnum { + private final Validator validator; + private final DictMapper dictMapper; + private final IAppWellPreService appWellPreService; + private final CasicProperties casicProperties; @Override - public Object login() { - return null; + public Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { + try { + appUserLoginDTO.setPassword(RSAUtils.decrypt(appUserLoginDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + throw new BusinessException(BusinessExceptionEnum.DECRYPTION_ERROR); + } + String userPassword = ShiroKit.md5(appUserLoginDTO.getPassword(), appUser.getSalt()); + if (userPassword.equals(appUser.getPassword())) { + return true; + } else { + return false; + } } @Override - public Object listPage() { - return null; + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + appUser.setStatus(ALREADY_BOUND); + appUser.setAttr(appUserLoginDTO.getWeChatName()); + appUser.setOpenId(appUserLoginDTO.getOpenId()); + int bindFlag = this.baseMapper.updateById(appUser); + if (bindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.BIND_USER_ERROR); } @Override - public Object add() { - return null; + public Page listPage(Page page, AppUserListDTO appUserListDTO) { + EntityWrapper entityWrapper = initQueryParam(appUserListDTO); + List appUserList = this.baseMapper.selectPage(page, entityWrapper); + for (AppUser appUser : appUserList) { + appUser.setProjectNames(tranIdsToStrNames(appUser.getProjectIds())); + } + page.setRecords(appUserList); + return page; } @Override - public Object update() { - return null; + public Object add(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), null); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + userDTO.setStatus(NOT_BOUND); + this.insert(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object project() { - return null; + public Object update(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), userDTO.getId()); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + this.updateById(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object unbind() { - return null; + public Object project(String openId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq(openId, openId); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + if (appUserOptional.isPresent()) { + AppUser appUser = appUserOptional.get(); + List projects = tranIdsToListNames(appUser.getProjectIds()); + return ResponseData.success(projects); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object batchImport() { - return null; + public Object unbind(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + appUser.setLabelLastTime(null); + appUser.setOpenId(null); + appUser.setAttr(null); + appUser.setAttrAlias(null); + //状态置为未绑定 + appUser.setStatus(NOT_BOUND); + int unbindFlag = this.baseMapper.updateById(appUser); + if (unbindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /** + * 1、准备用户导入信息的验证集合 + * 2、进行检测-项目、手机号、role + * 3、批量导入 + */ @Override - public Object delete() { - return null; + public List batchImport(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + AppUserImportValid userValid = prepareUserValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(user -> { + index[0]++; + validator.validate(user, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } + + //验证项目名称是否存在 + String[] projectNames = user.getProjectNames().split(","); + String projectIdIs = ""; + for (String projectName : projectNames) { + Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); + return; + } else { + projectIdIs += userValid.getProjectNameMap().get(projectName) + ","; + } + } + if (!StringUtils.isEmpty(projectIdIs)) { + projectIdIs = projectIdIs.substring(0, projectIdIs.length() - 1); + } + user.setProjectIds(projectIdIs); + + //验证角色类型 + if (StringUtils.isNotEmpty(user.getRole())) { + Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); + if (roleIsExist) { + list.add("第" + index[0] + "行,角色类型错误,查询不到!"); + return; + } else { + user.setRole(userValid.getRoleMap().get(user.getRole())); + } + } + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + user.setStatus(NOT_BOUND); + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存app用户信息 + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入用户数据不能为空"); + } + return list; } + + /** + * 状态即为状态置为3 + */ + @Override + public Object delete(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + //设置为删除状态 + appUser.setStatus(ALREADY_DELETE); + int deleteFlag = this.baseMapper.updateById(appUser); + if (deleteFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + + private AppUser createUser(AppUserSaveDTO userDTO) { + if (userDTO == null) { + return null; + } else { + AppUser user = new AppUser(); + BeanUtils.copyProperties(userDTO, user); + return user; + } + } + + /** + * 通过项目ids获取项目名称字符串 + */ + private String tranIdsToStrNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + String projectNames = ""; + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNames += wellPreMaps.get(projectId) + ","; + } + } + if (!StringUtils.isEmpty(projectNames)) { + projectNames = projectNames.substring(0, projectNames.length() - 1); + } + return projectNames; + } + + /** + * 通过项目ids获取项目名称列表 + */ + private List tranIdsToListNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + List projectNamelist = new ArrayList<>(); + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNamelist.add(wellPreMaps.get(projectId)); + } + } + return projectNamelist; + } + + private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); + query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); + if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { + query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); + } + query.orderBy("createTime", false); + return query; + } + + private AppUserImportValid prepareUserValid() { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictRole() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("appRole"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return dictRoleMap; + } + + + //获取项目名称 + private Map getUserPhoneMap() { + List userPhoneList = this.baseMapper.getUserPhoneList(); + //由名称查询id + Map userPhoneMap = userPhoneList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + @Override + public AppUser getAppUserByAccount(String account) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + appUserWrapper.ne("status", "3"); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + return appUserOptional.isPresent() ? appUserOptional.get() : null; + } + + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + private int getAppUserByAccount(String account, Long currentUserId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + if (!ObjectUtils.isEmpty(currentUserId)) { + appUserWrapper.ne("id", currentUserId); + } + List appUserList = this.baseMapper.selectList(appUserWrapper); + return appUserList != null ? appUserList.size() : 0; + } + + private String decryptPassword(String password) { + try { + String privateKey = this.casicProperties.getRsaPrivateKey(); + if (StrUtil.hasEmpty(new CharSequence[]{this.casicProperties.getRsaPrivateKey(), this.casicProperties.getRsaPublicKey()})) { + privateKey = ShiroKit.getSession().getAttribute("RSAPrivateKey").toString(); + } + return RSAUtils.decrypt(password, privateKey); + } catch (Exception var4) { + throw new RuntimeException(I18nFactory.getMessage("admin.nouser.error")); + } + } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 8bc52d5..18a1c5e 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -1,35 +1,209 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.modular.app.dao.WellPreAddMapper; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.dto.WellPreImportValid; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; @Service -public class AppWellPreServiceImpl implements IAppWellPreService { +@AllArgsConstructor +public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { + private final Validator validator; + private final DictMapper dictMapper; @Override - public Object listPage() { - return null; + public Page listPage(Page preAddPage, WellPreDTO wellPreDTO) { + EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); + List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); + Map projestMaps = getProjestIdMap(); + for (WellPreAdd wellPreAdd : wellPreAddList) { + if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { + wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + } + } + preAddPage.setRecords(wellPreAddList); + return preAddPage; } @Override - public Object add() { - return null; + public Object add(WellPreAdd wellPreAdd) { + int addFlag = this.baseMapper.insert(wellPreAdd); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 + */ + @Override + public List addWellPreBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + WellPreImportValid wellPreValid = prepareWellPreValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(wellPreAdd -> { + index[0]++; + validator.validate(wellPreAdd, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //点位编号的唯一性 + Boolean wellCodeIsExist = wellPreValid.getWellCodeMap().containsKey(wellPreAdd.getWellCode()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,设备编号已经存在!"); + return; + } + //验证项目名称是否存在 + Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称错误,查询不到!"); + return; + } else { + wellPreAdd.setProjectId(wellPreValid.getProjectMap().get(wellPreAdd.getProjectName())); + } + //验证点位类型 + Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); + if (wellTypeIsExist) { + list.add("第" + index[0] + "行,点位类型错误,查询不到!"); + return; + } else { + wellPreAdd.setWellType(wellPreValid.getDictSuiltWellMap().get(wellPreAdd.getWellTypeName())); + } + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存设备信息 + Boolean batchFlag=this.insertBatch(results); + if(batchFlag){ + return list; + }else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入数据不能为空"); + } + return list; } @Override - public Object batchImport() { - return null; + public Object update(WellPreAdd wellPreAdd) { + int updateFlag = this.baseMapper.updateById(wellPreAdd); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object update() { - return null; + public Object delete(Long id) { + int deleteFlag = this.baseMapper.deleteById(id); + if (deleteFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellCode()), "well_code", wellPreDTO.getWellCode()); + query.eq(StringUtils.isNotEmpty(wellPreDTO.getProjectId()), "projectId", wellPreDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getPosition()), "position", wellPreDTO.getPosition()); + //时间处理 + query.ge(StringUtils.isNotEmpty(wellPreDTO.getStartTime()), "createTime", wellPreDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(wellPreDTO.getEndTime()), "createTime", wellPreDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + + /** + * 预录入初始化的内容都放在该方法进行批量初始化 + */ + private WellPreImportValid prepareWellPreValid() { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllProjestNameMap()) + .dictSuiltWellMap(getDictSuiltWell()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictSuiltWell() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + Map wellCodeMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return wellCodeMap; + } + + //获取点位编号 + private Map getAllProjestNameMap() { + List allWellPreList = this.baseMapper.getAllWellPreList(); + Map wellCodeMap = allWellPreList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity()) + ); + return wellCodeMap; + } + + //获取项目名称 @Override - public Object delete() { - return null; + public Map getProjestNameMap() { + List> projects = this.baseMapper.getProjectList(); + //由名称查询id + Map projectMap = projects.stream().collect( + Collectors.toMap(e -> e.get("projectName"), + e -> e.get("projectId")) + ); + return projectMap; + } + + + @Override + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); + Map projectMaps = projects.stream().collect( + Collectors.toMap(e -> e.get("projectId"), + e -> e.get("projectName")) + ); + return projectMaps; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java new file mode 100644 index 0000000..922cbc0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.app.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.dao.AppProducteSafeMapper; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class IAppProucteSafeServiceImpl extends ServiceImpl implements IAppProucteSafeService { + + @Value("${casic.photoPath}") + private String photoPath; + @Autowired + private IAppWellPreService appWellPreService; + + @Override + public Page listPage(Page page, ProucteSafeDTO proucteSafeDTO) { + EntityWrapper entityWrapper = initQueryParam(proucteSafeDTO); + List appProductSafes = this.baseMapper.selectPage(page, entityWrapper); + Map appWellPreMap = appWellPreService.getProjestIdMap(); + for (AppProducteSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId())); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + } + page.setRecords(appProductSafes); + return page; + } + + @Override + public Object getTodaySignStatus(String openId) { + String isHasSign = this.baseMapper.getTodaySignStatus(openId); + Map signStatusMap = new HashMap<>(); + if (StringUtils.isEmpty(isHasSign)) { + signStatusMap.put("signStatus", "0"); + } else { + signStatusMap.put("signStatus", "1"); + } + return ResponseData.success(signStatusMap); + } + + @Override + public Object update(AppProducteSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProducteSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProducteSafe appProductSafe = this.baseMapper.selectById(id); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + return appProductSafe; + } + + private EntityWrapper initQueryParam(ProucteSafeDTO proucteSafeDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(proucteSafeDTO.getSignName()), "signName", proucteSafeDTO.getSignName()); + query.eq(StringUtils.isNotEmpty(proucteSafeDTO.getProjectId()), "well_code", proucteSafeDTO.getProjectId()); + //时间处理 + query.ge(StringUtils.isNotEmpty(proucteSafeDTO.getStartTime()), "signTime", proucteSafeDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(proucteSafeDTO.getEndTime()), "signTime", proucteSafeDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java new file mode 100644 index 0000000..c91285d --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java @@ -0,0 +1,45 @@ +package com.casic.missiles.modular.app.util; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.builder.ExcelReaderBuilder; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.util.FileUtils; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.modular.app.dto.EasyListener; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; + +@Slf4j +public class ImportExcelUtils { + + public static List importExcel(Class cls, MultipartFile file, EasyListener listener, Function defaultCheckFunc) throws IOException { + ExcelTypeEnum excelTypeEnum = null; + File newfile = FileUtils.createCacheTmpFile(); + file.transferTo(newfile); + ExcelReaderBuilder excelReaderBuilder = (ExcelReaderBuilder) EasyExcel.read().file(newfile).head(cls); + EasyListener defaultListener = null; + new ArrayList(); + if (listener == null) { + defaultListener = new EasyListener() { + public static final int BATCH_COUNT = 500; + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + log.info("数据读取成功!"); + } + }; + excelReaderBuilder.registerReadListener(defaultListener); + } else { + excelReaderBuilder.registerReadListener(listener); + } + excelReaderBuilder.sheet().doRead(); + return defaultListener.getDataList(); + } + +} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0c49f02..0d9c990 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -1,21 +1,35 @@ package com.casic.missiles.modular.app.service; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.model.AppUser; + +import java.util.List; + public interface IAppUserService { - Object login(); + Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser); - Object listPage(); + Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser); - Object add(); + Page listPage(Page page, AppUserListDTO appUserListDTO); - Object update(); + Object add(AppUserSaveDTO appUserDTO); - Object project(); + Object update(AppUserSaveDTO appUserDTO); - Object unbind(); + Object project(String openId); - Object batchImport(); + Object unbind(Long id); - Object delete(); + List batchImport(List results); + + Object delete(Long id); + + AppUser getAppUserByAccount(String account); + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java index a656f48..0d784e9 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java @@ -1,31 +1,40 @@ package com.casic.missiles.modular.app.service; -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.model.WellPreAdd; + +import java.util.List; +import java.util.Map; + public interface IAppWellPreService { - Object listPage(); + Page listPage(Page preAddPage, WellPreDTO wellPreDTO); /** * 预录入点位信息新增 */ - Object add(); + Object add(WellPreAdd wellPreAdd); /** * 预录入点位信息批量导入 */ - Object batchImport(); + List addWellPreBatch(List wellPreAdds); /** * 预录入点位信息编辑 */ - Object update(); + Object update(WellPreAdd wellPreAdd); /** * 预录入点位信息删除 */ - Object delete(); + Object delete(Long id); + + Map getProjestNameMap(); + + Map getProjestIdMap(); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java deleted file mode 100644 index 763c8c9..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.missiles.modular.app.service.impl; - -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.app.dao.AppProductSafeMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import org.springframework.stereotype.Service; - -@Service -public class AppProuctionSafeServiceImpl extends ServiceImpl implements IAppProuctionSafeService { - - - @Override - public Object listPage() { - return null; - } - - @Override - public Object getTodaySignStatus() { - return null; - } - - @Override - public Object update() { - return null; - } - - @Override - public Object add() { - return null; - } - - @Override - public Object detail() { - return null; - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 51b1a6d..4aa4faf 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -1,49 +1,383 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.base.language.I18nFactory; +import com.casic.missiles.core.base.response.ErrorResponseData; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.exception.BizExceptionEnum; +import com.casic.missiles.core.exception.GunsException; +import com.casic.missiles.core.exception.GunsExceptionEnum; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.app.dao.AppUserMapper; +import com.casic.missiles.modular.app.dto.user.AppUserImportValid; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.AppUserStatusEnum; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Slf4j @Service -public class AppUserServiceImpl implements IAppUserService { +@AllArgsConstructor +public class AppUserServiceImpl extends ServiceImpl implements IAppUserService, AppUserStatusEnum { + private final Validator validator; + private final DictMapper dictMapper; + private final IAppWellPreService appWellPreService; + private final CasicProperties casicProperties; @Override - public Object login() { - return null; + public Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { + try { + appUserLoginDTO.setPassword(RSAUtils.decrypt(appUserLoginDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + throw new BusinessException(BusinessExceptionEnum.DECRYPTION_ERROR); + } + String userPassword = ShiroKit.md5(appUserLoginDTO.getPassword(), appUser.getSalt()); + if (userPassword.equals(appUser.getPassword())) { + return true; + } else { + return false; + } } @Override - public Object listPage() { - return null; + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + appUser.setStatus(ALREADY_BOUND); + appUser.setAttr(appUserLoginDTO.getWeChatName()); + appUser.setOpenId(appUserLoginDTO.getOpenId()); + int bindFlag = this.baseMapper.updateById(appUser); + if (bindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.BIND_USER_ERROR); } @Override - public Object add() { - return null; + public Page listPage(Page page, AppUserListDTO appUserListDTO) { + EntityWrapper entityWrapper = initQueryParam(appUserListDTO); + List appUserList = this.baseMapper.selectPage(page, entityWrapper); + for (AppUser appUser : appUserList) { + appUser.setProjectNames(tranIdsToStrNames(appUser.getProjectIds())); + } + page.setRecords(appUserList); + return page; } @Override - public Object update() { - return null; + public Object add(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), null); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + userDTO.setStatus(NOT_BOUND); + this.insert(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object project() { - return null; + public Object update(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), userDTO.getId()); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + this.updateById(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object unbind() { - return null; + public Object project(String openId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq(openId, openId); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + if (appUserOptional.isPresent()) { + AppUser appUser = appUserOptional.get(); + List projects = tranIdsToListNames(appUser.getProjectIds()); + return ResponseData.success(projects); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object batchImport() { - return null; + public Object unbind(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + appUser.setLabelLastTime(null); + appUser.setOpenId(null); + appUser.setAttr(null); + appUser.setAttrAlias(null); + //状态置为未绑定 + appUser.setStatus(NOT_BOUND); + int unbindFlag = this.baseMapper.updateById(appUser); + if (unbindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /** + * 1、准备用户导入信息的验证集合 + * 2、进行检测-项目、手机号、role + * 3、批量导入 + */ @Override - public Object delete() { - return null; + public List batchImport(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + AppUserImportValid userValid = prepareUserValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(user -> { + index[0]++; + validator.validate(user, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } + + //验证项目名称是否存在 + String[] projectNames = user.getProjectNames().split(","); + String projectIdIs = ""; + for (String projectName : projectNames) { + Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); + return; + } else { + projectIdIs += userValid.getProjectNameMap().get(projectName) + ","; + } + } + if (!StringUtils.isEmpty(projectIdIs)) { + projectIdIs = projectIdIs.substring(0, projectIdIs.length() - 1); + } + user.setProjectIds(projectIdIs); + + //验证角色类型 + if (StringUtils.isNotEmpty(user.getRole())) { + Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); + if (roleIsExist) { + list.add("第" + index[0] + "行,角色类型错误,查询不到!"); + return; + } else { + user.setRole(userValid.getRoleMap().get(user.getRole())); + } + } + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + user.setStatus(NOT_BOUND); + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存app用户信息 + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入用户数据不能为空"); + } + return list; } + + /** + * 状态即为状态置为3 + */ + @Override + public Object delete(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + //设置为删除状态 + appUser.setStatus(ALREADY_DELETE); + int deleteFlag = this.baseMapper.updateById(appUser); + if (deleteFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + + private AppUser createUser(AppUserSaveDTO userDTO) { + if (userDTO == null) { + return null; + } else { + AppUser user = new AppUser(); + BeanUtils.copyProperties(userDTO, user); + return user; + } + } + + /** + * 通过项目ids获取项目名称字符串 + */ + private String tranIdsToStrNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + String projectNames = ""; + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNames += wellPreMaps.get(projectId) + ","; + } + } + if (!StringUtils.isEmpty(projectNames)) { + projectNames = projectNames.substring(0, projectNames.length() - 1); + } + return projectNames; + } + + /** + * 通过项目ids获取项目名称列表 + */ + private List tranIdsToListNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + List projectNamelist = new ArrayList<>(); + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNamelist.add(wellPreMaps.get(projectId)); + } + } + return projectNamelist; + } + + private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); + query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); + if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { + query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); + } + query.orderBy("createTime", false); + return query; + } + + private AppUserImportValid prepareUserValid() { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictRole() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("appRole"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return dictRoleMap; + } + + + //获取项目名称 + private Map getUserPhoneMap() { + List userPhoneList = this.baseMapper.getUserPhoneList(); + //由名称查询id + Map userPhoneMap = userPhoneList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + @Override + public AppUser getAppUserByAccount(String account) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + appUserWrapper.ne("status", "3"); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + return appUserOptional.isPresent() ? appUserOptional.get() : null; + } + + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + private int getAppUserByAccount(String account, Long currentUserId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + if (!ObjectUtils.isEmpty(currentUserId)) { + appUserWrapper.ne("id", currentUserId); + } + List appUserList = this.baseMapper.selectList(appUserWrapper); + return appUserList != null ? appUserList.size() : 0; + } + + private String decryptPassword(String password) { + try { + String privateKey = this.casicProperties.getRsaPrivateKey(); + if (StrUtil.hasEmpty(new CharSequence[]{this.casicProperties.getRsaPrivateKey(), this.casicProperties.getRsaPublicKey()})) { + privateKey = ShiroKit.getSession().getAttribute("RSAPrivateKey").toString(); + } + return RSAUtils.decrypt(password, privateKey); + } catch (Exception var4) { + throw new RuntimeException(I18nFactory.getMessage("admin.nouser.error")); + } + } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 8bc52d5..18a1c5e 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -1,35 +1,209 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.modular.app.dao.WellPreAddMapper; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.dto.WellPreImportValid; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; @Service -public class AppWellPreServiceImpl implements IAppWellPreService { +@AllArgsConstructor +public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { + private final Validator validator; + private final DictMapper dictMapper; @Override - public Object listPage() { - return null; + public Page listPage(Page preAddPage, WellPreDTO wellPreDTO) { + EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); + List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); + Map projestMaps = getProjestIdMap(); + for (WellPreAdd wellPreAdd : wellPreAddList) { + if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { + wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + } + } + preAddPage.setRecords(wellPreAddList); + return preAddPage; } @Override - public Object add() { - return null; + public Object add(WellPreAdd wellPreAdd) { + int addFlag = this.baseMapper.insert(wellPreAdd); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 + */ + @Override + public List addWellPreBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + WellPreImportValid wellPreValid = prepareWellPreValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(wellPreAdd -> { + index[0]++; + validator.validate(wellPreAdd, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //点位编号的唯一性 + Boolean wellCodeIsExist = wellPreValid.getWellCodeMap().containsKey(wellPreAdd.getWellCode()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,设备编号已经存在!"); + return; + } + //验证项目名称是否存在 + Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称错误,查询不到!"); + return; + } else { + wellPreAdd.setProjectId(wellPreValid.getProjectMap().get(wellPreAdd.getProjectName())); + } + //验证点位类型 + Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); + if (wellTypeIsExist) { + list.add("第" + index[0] + "行,点位类型错误,查询不到!"); + return; + } else { + wellPreAdd.setWellType(wellPreValid.getDictSuiltWellMap().get(wellPreAdd.getWellTypeName())); + } + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存设备信息 + Boolean batchFlag=this.insertBatch(results); + if(batchFlag){ + return list; + }else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入数据不能为空"); + } + return list; } @Override - public Object batchImport() { - return null; + public Object update(WellPreAdd wellPreAdd) { + int updateFlag = this.baseMapper.updateById(wellPreAdd); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object update() { - return null; + public Object delete(Long id) { + int deleteFlag = this.baseMapper.deleteById(id); + if (deleteFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellCode()), "well_code", wellPreDTO.getWellCode()); + query.eq(StringUtils.isNotEmpty(wellPreDTO.getProjectId()), "projectId", wellPreDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getPosition()), "position", wellPreDTO.getPosition()); + //时间处理 + query.ge(StringUtils.isNotEmpty(wellPreDTO.getStartTime()), "createTime", wellPreDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(wellPreDTO.getEndTime()), "createTime", wellPreDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + + /** + * 预录入初始化的内容都放在该方法进行批量初始化 + */ + private WellPreImportValid prepareWellPreValid() { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllProjestNameMap()) + .dictSuiltWellMap(getDictSuiltWell()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictSuiltWell() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + Map wellCodeMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return wellCodeMap; + } + + //获取点位编号 + private Map getAllProjestNameMap() { + List allWellPreList = this.baseMapper.getAllWellPreList(); + Map wellCodeMap = allWellPreList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity()) + ); + return wellCodeMap; + } + + //获取项目名称 @Override - public Object delete() { - return null; + public Map getProjestNameMap() { + List> projects = this.baseMapper.getProjectList(); + //由名称查询id + Map projectMap = projects.stream().collect( + Collectors.toMap(e -> e.get("projectName"), + e -> e.get("projectId")) + ); + return projectMap; + } + + + @Override + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); + Map projectMaps = projects.stream().collect( + Collectors.toMap(e -> e.get("projectId"), + e -> e.get("projectName")) + ); + return projectMaps; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java new file mode 100644 index 0000000..922cbc0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.app.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.dao.AppProducteSafeMapper; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class IAppProucteSafeServiceImpl extends ServiceImpl implements IAppProucteSafeService { + + @Value("${casic.photoPath}") + private String photoPath; + @Autowired + private IAppWellPreService appWellPreService; + + @Override + public Page listPage(Page page, ProucteSafeDTO proucteSafeDTO) { + EntityWrapper entityWrapper = initQueryParam(proucteSafeDTO); + List appProductSafes = this.baseMapper.selectPage(page, entityWrapper); + Map appWellPreMap = appWellPreService.getProjestIdMap(); + for (AppProducteSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId())); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + } + page.setRecords(appProductSafes); + return page; + } + + @Override + public Object getTodaySignStatus(String openId) { + String isHasSign = this.baseMapper.getTodaySignStatus(openId); + Map signStatusMap = new HashMap<>(); + if (StringUtils.isEmpty(isHasSign)) { + signStatusMap.put("signStatus", "0"); + } else { + signStatusMap.put("signStatus", "1"); + } + return ResponseData.success(signStatusMap); + } + + @Override + public Object update(AppProducteSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProducteSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProducteSafe appProductSafe = this.baseMapper.selectById(id); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + return appProductSafe; + } + + private EntityWrapper initQueryParam(ProucteSafeDTO proucteSafeDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(proucteSafeDTO.getSignName()), "signName", proucteSafeDTO.getSignName()); + query.eq(StringUtils.isNotEmpty(proucteSafeDTO.getProjectId()), "well_code", proucteSafeDTO.getProjectId()); + //时间处理 + query.ge(StringUtils.isNotEmpty(proucteSafeDTO.getStartTime()), "signTime", proucteSafeDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(proucteSafeDTO.getEndTime()), "signTime", proucteSafeDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java new file mode 100644 index 0000000..c91285d --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java @@ -0,0 +1,45 @@ +package com.casic.missiles.modular.app.util; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.builder.ExcelReaderBuilder; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.util.FileUtils; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.modular.app.dto.EasyListener; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; + +@Slf4j +public class ImportExcelUtils { + + public static List importExcel(Class cls, MultipartFile file, EasyListener listener, Function defaultCheckFunc) throws IOException { + ExcelTypeEnum excelTypeEnum = null; + File newfile = FileUtils.createCacheTmpFile(); + file.transferTo(newfile); + ExcelReaderBuilder excelReaderBuilder = (ExcelReaderBuilder) EasyExcel.read().file(newfile).head(cls); + EasyListener defaultListener = null; + new ArrayList(); + if (listener == null) { + defaultListener = new EasyListener() { + public static final int BATCH_COUNT = 500; + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + log.info("数据读取成功!"); + } + }; + excelReaderBuilder.registerReadListener(defaultListener); + } else { + excelReaderBuilder.registerReadListener(listener); + } + excelReaderBuilder.sheet().doRead(); + return defaultListener.getDataList(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java new file mode 100644 index 0000000..0f73e9d --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java @@ -0,0 +1,106 @@ +//package com.casic.missiles.modular.app.util; +// +//import org.apache.commons.lang3.StringUtils; +//import org.springframework.beans.BeansException; +//import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +//import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +//import org.springframework.beans.factory.support.AbstractBeanDefinition; +//import org.springframework.beans.factory.support.BeanDefinitionBuilder; +//import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; +//import org.springframework.beans.factory.support.BeanDefinitionRegistry; +//import org.springframework.context.ApplicationContext; +//import org.springframework.context.ApplicationContextAware; +//import org.springframework.context.annotation.Bean; +//import org.springframework.stereotype.Component; +//import org.springframework.util.CollectionUtils; +// +//import java.util.List; +//import java.util.Map; +//import java.util.concurrent.ForkJoinPool; +//import java.util.function.Function; +// +///** +// * @Description: Spring应用上下文工具 +// * @Author: wangpeng +// * @Date: 2022/8/11 18:04 +// */ +//@Component +//public class SpringContextUtil implements BeanFactoryPostProcessor, ApplicationContextAware { +// /** +// * Spring应用上下文环境 +// */ +// private static ApplicationContext applicationContext; +// +// private static ConfigurableListableBeanFactory beanFactory; +// +// /** +// * 实现ApplicationContextAware接口的回调方法,设置上下文环境 +// */ +// @Override +// public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { +// SpringContextUtil.applicationContext = applicationContext; +// } +// +// @Override +// public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { +// SpringContextUtil.beanFactory = beanFactory; +// } +// +// public static ApplicationContext getApplicationContext() { +// return applicationContext; +// } +// +//// public static Object getBean(String beanId) throws BeansException { +//// return applicationContext.getBean(beanId); +//// } +// +// public static T getBean(Class requiredType) { +// return (T) applicationContext.getBean(requiredType); +// } +// +// @SuppressWarnings("unchecked") +// public static T getBean(String name) throws BeansException { +// return (T) beanFactory.getBean(name); +// } +// +// public static boolean containsBean(String name) { +// return beanFactory.containsBean(name); +// } +// +// public static T registerBean(String beanName, Class clazz, Function function) { +// // 生成bean定义 +// BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); +// // 执行bean处理函数 +// AbstractBeanDefinition beanDefinition = function.apply(beanDefinitionBuilder); +// BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) SpringContextUtil.beanFactory; +// // 判断是否通过beanName注册 +// if (StringUtils.isNotBlank(beanName) && !containsBean(beanName)) { +// beanFactory.registerBeanDefinition(beanName, beanDefinition); +// return getBean(beanName); +// } else { +// // 非命名bean注册 +// String name = BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, beanFactory); +// return getBean(name); +// } +// } +// +// public static T registerBean(String beanName, Class clazz, List args, Map property) { +// return registerBean(beanName, clazz, beanDefinitionBuilder -> { +// // 放入构造参数 +// if (!CollectionUtils.isEmpty(args)) { +// args.forEach(beanDefinitionBuilder::addConstructorArgValue); +// } +// // 放入属性 +// if (!CollectionUtils.isEmpty(property)) { +// property.forEach(beanDefinitionBuilder::addPropertyValue); +// } +// return beanDefinitionBuilder.getBeanDefinition(); +// }); +// } +// +// @Bean +// public ForkJoinPool forkJoinPool() { +// return new ForkJoinPool(100); +// } +// +//} diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0c49f02..0d9c990 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -1,21 +1,35 @@ package com.casic.missiles.modular.app.service; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.model.AppUser; + +import java.util.List; + public interface IAppUserService { - Object login(); + Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser); - Object listPage(); + Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser); - Object add(); + Page listPage(Page page, AppUserListDTO appUserListDTO); - Object update(); + Object add(AppUserSaveDTO appUserDTO); - Object project(); + Object update(AppUserSaveDTO appUserDTO); - Object unbind(); + Object project(String openId); - Object batchImport(); + Object unbind(Long id); - Object delete(); + List batchImport(List results); + + Object delete(Long id); + + AppUser getAppUserByAccount(String account); + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java index a656f48..0d784e9 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java @@ -1,31 +1,40 @@ package com.casic.missiles.modular.app.service; -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.model.WellPreAdd; + +import java.util.List; +import java.util.Map; + public interface IAppWellPreService { - Object listPage(); + Page listPage(Page preAddPage, WellPreDTO wellPreDTO); /** * 预录入点位信息新增 */ - Object add(); + Object add(WellPreAdd wellPreAdd); /** * 预录入点位信息批量导入 */ - Object batchImport(); + List addWellPreBatch(List wellPreAdds); /** * 预录入点位信息编辑 */ - Object update(); + Object update(WellPreAdd wellPreAdd); /** * 预录入点位信息删除 */ - Object delete(); + Object delete(Long id); + + Map getProjestNameMap(); + + Map getProjestIdMap(); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java deleted file mode 100644 index 763c8c9..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.missiles.modular.app.service.impl; - -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.app.dao.AppProductSafeMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import org.springframework.stereotype.Service; - -@Service -public class AppProuctionSafeServiceImpl extends ServiceImpl implements IAppProuctionSafeService { - - - @Override - public Object listPage() { - return null; - } - - @Override - public Object getTodaySignStatus() { - return null; - } - - @Override - public Object update() { - return null; - } - - @Override - public Object add() { - return null; - } - - @Override - public Object detail() { - return null; - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 51b1a6d..4aa4faf 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -1,49 +1,383 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.base.language.I18nFactory; +import com.casic.missiles.core.base.response.ErrorResponseData; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.exception.BizExceptionEnum; +import com.casic.missiles.core.exception.GunsException; +import com.casic.missiles.core.exception.GunsExceptionEnum; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.app.dao.AppUserMapper; +import com.casic.missiles.modular.app.dto.user.AppUserImportValid; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.AppUserStatusEnum; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Slf4j @Service -public class AppUserServiceImpl implements IAppUserService { +@AllArgsConstructor +public class AppUserServiceImpl extends ServiceImpl implements IAppUserService, AppUserStatusEnum { + private final Validator validator; + private final DictMapper dictMapper; + private final IAppWellPreService appWellPreService; + private final CasicProperties casicProperties; @Override - public Object login() { - return null; + public Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { + try { + appUserLoginDTO.setPassword(RSAUtils.decrypt(appUserLoginDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + throw new BusinessException(BusinessExceptionEnum.DECRYPTION_ERROR); + } + String userPassword = ShiroKit.md5(appUserLoginDTO.getPassword(), appUser.getSalt()); + if (userPassword.equals(appUser.getPassword())) { + return true; + } else { + return false; + } } @Override - public Object listPage() { - return null; + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + appUser.setStatus(ALREADY_BOUND); + appUser.setAttr(appUserLoginDTO.getWeChatName()); + appUser.setOpenId(appUserLoginDTO.getOpenId()); + int bindFlag = this.baseMapper.updateById(appUser); + if (bindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.BIND_USER_ERROR); } @Override - public Object add() { - return null; + public Page listPage(Page page, AppUserListDTO appUserListDTO) { + EntityWrapper entityWrapper = initQueryParam(appUserListDTO); + List appUserList = this.baseMapper.selectPage(page, entityWrapper); + for (AppUser appUser : appUserList) { + appUser.setProjectNames(tranIdsToStrNames(appUser.getProjectIds())); + } + page.setRecords(appUserList); + return page; } @Override - public Object update() { - return null; + public Object add(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), null); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + userDTO.setStatus(NOT_BOUND); + this.insert(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object project() { - return null; + public Object update(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), userDTO.getId()); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + this.updateById(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object unbind() { - return null; + public Object project(String openId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq(openId, openId); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + if (appUserOptional.isPresent()) { + AppUser appUser = appUserOptional.get(); + List projects = tranIdsToListNames(appUser.getProjectIds()); + return ResponseData.success(projects); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object batchImport() { - return null; + public Object unbind(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + appUser.setLabelLastTime(null); + appUser.setOpenId(null); + appUser.setAttr(null); + appUser.setAttrAlias(null); + //状态置为未绑定 + appUser.setStatus(NOT_BOUND); + int unbindFlag = this.baseMapper.updateById(appUser); + if (unbindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /** + * 1、准备用户导入信息的验证集合 + * 2、进行检测-项目、手机号、role + * 3、批量导入 + */ @Override - public Object delete() { - return null; + public List batchImport(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + AppUserImportValid userValid = prepareUserValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(user -> { + index[0]++; + validator.validate(user, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } + + //验证项目名称是否存在 + String[] projectNames = user.getProjectNames().split(","); + String projectIdIs = ""; + for (String projectName : projectNames) { + Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); + return; + } else { + projectIdIs += userValid.getProjectNameMap().get(projectName) + ","; + } + } + if (!StringUtils.isEmpty(projectIdIs)) { + projectIdIs = projectIdIs.substring(0, projectIdIs.length() - 1); + } + user.setProjectIds(projectIdIs); + + //验证角色类型 + if (StringUtils.isNotEmpty(user.getRole())) { + Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); + if (roleIsExist) { + list.add("第" + index[0] + "行,角色类型错误,查询不到!"); + return; + } else { + user.setRole(userValid.getRoleMap().get(user.getRole())); + } + } + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + user.setStatus(NOT_BOUND); + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存app用户信息 + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入用户数据不能为空"); + } + return list; } + + /** + * 状态即为状态置为3 + */ + @Override + public Object delete(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + //设置为删除状态 + appUser.setStatus(ALREADY_DELETE); + int deleteFlag = this.baseMapper.updateById(appUser); + if (deleteFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + + private AppUser createUser(AppUserSaveDTO userDTO) { + if (userDTO == null) { + return null; + } else { + AppUser user = new AppUser(); + BeanUtils.copyProperties(userDTO, user); + return user; + } + } + + /** + * 通过项目ids获取项目名称字符串 + */ + private String tranIdsToStrNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + String projectNames = ""; + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNames += wellPreMaps.get(projectId) + ","; + } + } + if (!StringUtils.isEmpty(projectNames)) { + projectNames = projectNames.substring(0, projectNames.length() - 1); + } + return projectNames; + } + + /** + * 通过项目ids获取项目名称列表 + */ + private List tranIdsToListNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + List projectNamelist = new ArrayList<>(); + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNamelist.add(wellPreMaps.get(projectId)); + } + } + return projectNamelist; + } + + private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); + query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); + if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { + query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); + } + query.orderBy("createTime", false); + return query; + } + + private AppUserImportValid prepareUserValid() { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictRole() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("appRole"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return dictRoleMap; + } + + + //获取项目名称 + private Map getUserPhoneMap() { + List userPhoneList = this.baseMapper.getUserPhoneList(); + //由名称查询id + Map userPhoneMap = userPhoneList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + @Override + public AppUser getAppUserByAccount(String account) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + appUserWrapper.ne("status", "3"); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + return appUserOptional.isPresent() ? appUserOptional.get() : null; + } + + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + private int getAppUserByAccount(String account, Long currentUserId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + if (!ObjectUtils.isEmpty(currentUserId)) { + appUserWrapper.ne("id", currentUserId); + } + List appUserList = this.baseMapper.selectList(appUserWrapper); + return appUserList != null ? appUserList.size() : 0; + } + + private String decryptPassword(String password) { + try { + String privateKey = this.casicProperties.getRsaPrivateKey(); + if (StrUtil.hasEmpty(new CharSequence[]{this.casicProperties.getRsaPrivateKey(), this.casicProperties.getRsaPublicKey()})) { + privateKey = ShiroKit.getSession().getAttribute("RSAPrivateKey").toString(); + } + return RSAUtils.decrypt(password, privateKey); + } catch (Exception var4) { + throw new RuntimeException(I18nFactory.getMessage("admin.nouser.error")); + } + } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 8bc52d5..18a1c5e 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -1,35 +1,209 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.modular.app.dao.WellPreAddMapper; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.dto.WellPreImportValid; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; @Service -public class AppWellPreServiceImpl implements IAppWellPreService { +@AllArgsConstructor +public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { + private final Validator validator; + private final DictMapper dictMapper; @Override - public Object listPage() { - return null; + public Page listPage(Page preAddPage, WellPreDTO wellPreDTO) { + EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); + List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); + Map projestMaps = getProjestIdMap(); + for (WellPreAdd wellPreAdd : wellPreAddList) { + if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { + wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + } + } + preAddPage.setRecords(wellPreAddList); + return preAddPage; } @Override - public Object add() { - return null; + public Object add(WellPreAdd wellPreAdd) { + int addFlag = this.baseMapper.insert(wellPreAdd); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 + */ + @Override + public List addWellPreBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + WellPreImportValid wellPreValid = prepareWellPreValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(wellPreAdd -> { + index[0]++; + validator.validate(wellPreAdd, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //点位编号的唯一性 + Boolean wellCodeIsExist = wellPreValid.getWellCodeMap().containsKey(wellPreAdd.getWellCode()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,设备编号已经存在!"); + return; + } + //验证项目名称是否存在 + Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称错误,查询不到!"); + return; + } else { + wellPreAdd.setProjectId(wellPreValid.getProjectMap().get(wellPreAdd.getProjectName())); + } + //验证点位类型 + Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); + if (wellTypeIsExist) { + list.add("第" + index[0] + "行,点位类型错误,查询不到!"); + return; + } else { + wellPreAdd.setWellType(wellPreValid.getDictSuiltWellMap().get(wellPreAdd.getWellTypeName())); + } + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存设备信息 + Boolean batchFlag=this.insertBatch(results); + if(batchFlag){ + return list; + }else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入数据不能为空"); + } + return list; } @Override - public Object batchImport() { - return null; + public Object update(WellPreAdd wellPreAdd) { + int updateFlag = this.baseMapper.updateById(wellPreAdd); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object update() { - return null; + public Object delete(Long id) { + int deleteFlag = this.baseMapper.deleteById(id); + if (deleteFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellCode()), "well_code", wellPreDTO.getWellCode()); + query.eq(StringUtils.isNotEmpty(wellPreDTO.getProjectId()), "projectId", wellPreDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getPosition()), "position", wellPreDTO.getPosition()); + //时间处理 + query.ge(StringUtils.isNotEmpty(wellPreDTO.getStartTime()), "createTime", wellPreDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(wellPreDTO.getEndTime()), "createTime", wellPreDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + + /** + * 预录入初始化的内容都放在该方法进行批量初始化 + */ + private WellPreImportValid prepareWellPreValid() { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllProjestNameMap()) + .dictSuiltWellMap(getDictSuiltWell()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictSuiltWell() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + Map wellCodeMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return wellCodeMap; + } + + //获取点位编号 + private Map getAllProjestNameMap() { + List allWellPreList = this.baseMapper.getAllWellPreList(); + Map wellCodeMap = allWellPreList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity()) + ); + return wellCodeMap; + } + + //获取项目名称 @Override - public Object delete() { - return null; + public Map getProjestNameMap() { + List> projects = this.baseMapper.getProjectList(); + //由名称查询id + Map projectMap = projects.stream().collect( + Collectors.toMap(e -> e.get("projectName"), + e -> e.get("projectId")) + ); + return projectMap; + } + + + @Override + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); + Map projectMaps = projects.stream().collect( + Collectors.toMap(e -> e.get("projectId"), + e -> e.get("projectName")) + ); + return projectMaps; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java new file mode 100644 index 0000000..922cbc0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.app.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.dao.AppProducteSafeMapper; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class IAppProucteSafeServiceImpl extends ServiceImpl implements IAppProucteSafeService { + + @Value("${casic.photoPath}") + private String photoPath; + @Autowired + private IAppWellPreService appWellPreService; + + @Override + public Page listPage(Page page, ProucteSafeDTO proucteSafeDTO) { + EntityWrapper entityWrapper = initQueryParam(proucteSafeDTO); + List appProductSafes = this.baseMapper.selectPage(page, entityWrapper); + Map appWellPreMap = appWellPreService.getProjestIdMap(); + for (AppProducteSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId())); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + } + page.setRecords(appProductSafes); + return page; + } + + @Override + public Object getTodaySignStatus(String openId) { + String isHasSign = this.baseMapper.getTodaySignStatus(openId); + Map signStatusMap = new HashMap<>(); + if (StringUtils.isEmpty(isHasSign)) { + signStatusMap.put("signStatus", "0"); + } else { + signStatusMap.put("signStatus", "1"); + } + return ResponseData.success(signStatusMap); + } + + @Override + public Object update(AppProducteSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProducteSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProducteSafe appProductSafe = this.baseMapper.selectById(id); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + return appProductSafe; + } + + private EntityWrapper initQueryParam(ProucteSafeDTO proucteSafeDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(proucteSafeDTO.getSignName()), "signName", proucteSafeDTO.getSignName()); + query.eq(StringUtils.isNotEmpty(proucteSafeDTO.getProjectId()), "well_code", proucteSafeDTO.getProjectId()); + //时间处理 + query.ge(StringUtils.isNotEmpty(proucteSafeDTO.getStartTime()), "signTime", proucteSafeDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(proucteSafeDTO.getEndTime()), "signTime", proucteSafeDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java new file mode 100644 index 0000000..c91285d --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java @@ -0,0 +1,45 @@ +package com.casic.missiles.modular.app.util; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.builder.ExcelReaderBuilder; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.util.FileUtils; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.modular.app.dto.EasyListener; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; + +@Slf4j +public class ImportExcelUtils { + + public static List importExcel(Class cls, MultipartFile file, EasyListener listener, Function defaultCheckFunc) throws IOException { + ExcelTypeEnum excelTypeEnum = null; + File newfile = FileUtils.createCacheTmpFile(); + file.transferTo(newfile); + ExcelReaderBuilder excelReaderBuilder = (ExcelReaderBuilder) EasyExcel.read().file(newfile).head(cls); + EasyListener defaultListener = null; + new ArrayList(); + if (listener == null) { + defaultListener = new EasyListener() { + public static final int BATCH_COUNT = 500; + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + log.info("数据读取成功!"); + } + }; + excelReaderBuilder.registerReadListener(defaultListener); + } else { + excelReaderBuilder.registerReadListener(listener); + } + excelReaderBuilder.sheet().doRead(); + return defaultListener.getDataList(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java new file mode 100644 index 0000000..0f73e9d --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java @@ -0,0 +1,106 @@ +//package com.casic.missiles.modular.app.util; +// +//import org.apache.commons.lang3.StringUtils; +//import org.springframework.beans.BeansException; +//import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +//import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +//import org.springframework.beans.factory.support.AbstractBeanDefinition; +//import org.springframework.beans.factory.support.BeanDefinitionBuilder; +//import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; +//import org.springframework.beans.factory.support.BeanDefinitionRegistry; +//import org.springframework.context.ApplicationContext; +//import org.springframework.context.ApplicationContextAware; +//import org.springframework.context.annotation.Bean; +//import org.springframework.stereotype.Component; +//import org.springframework.util.CollectionUtils; +// +//import java.util.List; +//import java.util.Map; +//import java.util.concurrent.ForkJoinPool; +//import java.util.function.Function; +// +///** +// * @Description: Spring应用上下文工具 +// * @Author: wangpeng +// * @Date: 2022/8/11 18:04 +// */ +//@Component +//public class SpringContextUtil implements BeanFactoryPostProcessor, ApplicationContextAware { +// /** +// * Spring应用上下文环境 +// */ +// private static ApplicationContext applicationContext; +// +// private static ConfigurableListableBeanFactory beanFactory; +// +// /** +// * 实现ApplicationContextAware接口的回调方法,设置上下文环境 +// */ +// @Override +// public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { +// SpringContextUtil.applicationContext = applicationContext; +// } +// +// @Override +// public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { +// SpringContextUtil.beanFactory = beanFactory; +// } +// +// public static ApplicationContext getApplicationContext() { +// return applicationContext; +// } +// +//// public static Object getBean(String beanId) throws BeansException { +//// return applicationContext.getBean(beanId); +//// } +// +// public static T getBean(Class requiredType) { +// return (T) applicationContext.getBean(requiredType); +// } +// +// @SuppressWarnings("unchecked") +// public static T getBean(String name) throws BeansException { +// return (T) beanFactory.getBean(name); +// } +// +// public static boolean containsBean(String name) { +// return beanFactory.containsBean(name); +// } +// +// public static T registerBean(String beanName, Class clazz, Function function) { +// // 生成bean定义 +// BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); +// // 执行bean处理函数 +// AbstractBeanDefinition beanDefinition = function.apply(beanDefinitionBuilder); +// BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) SpringContextUtil.beanFactory; +// // 判断是否通过beanName注册 +// if (StringUtils.isNotBlank(beanName) && !containsBean(beanName)) { +// beanFactory.registerBeanDefinition(beanName, beanDefinition); +// return getBean(beanName); +// } else { +// // 非命名bean注册 +// String name = BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, beanFactory); +// return getBean(name); +// } +// } +// +// public static T registerBean(String beanName, Class clazz, List args, Map property) { +// return registerBean(beanName, clazz, beanDefinitionBuilder -> { +// // 放入构造参数 +// if (!CollectionUtils.isEmpty(args)) { +// args.forEach(beanDefinitionBuilder::addConstructorArgValue); +// } +// // 放入属性 +// if (!CollectionUtils.isEmpty(property)) { +// property.forEach(beanDefinitionBuilder::addPropertyValue); +// } +// return beanDefinitionBuilder.getBeanDefinition(); +// }); +// } +// +// @Bean +// public ForkJoinPool forkJoinPool() { +// return new ForkJoinPool(100); +// } +// +//} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java index c6fab92..69c338d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java @@ -70,6 +70,7 @@ */ @RequestMapping(value = "/add") @ResponseBody + @BussinessLog(value = "增加项目信息", key = PROJECT_ADD_LOG_KEY, dict = ProjectDict.class) public Object add(Project project) { EntityWrapper entityWrapper = new EntityWrapper<>(); diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0c49f02..0d9c990 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -1,21 +1,35 @@ package com.casic.missiles.modular.app.service; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.model.AppUser; + +import java.util.List; + public interface IAppUserService { - Object login(); + Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser); - Object listPage(); + Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser); - Object add(); + Page listPage(Page page, AppUserListDTO appUserListDTO); - Object update(); + Object add(AppUserSaveDTO appUserDTO); - Object project(); + Object update(AppUserSaveDTO appUserDTO); - Object unbind(); + Object project(String openId); - Object batchImport(); + Object unbind(Long id); - Object delete(); + List batchImport(List results); + + Object delete(Long id); + + AppUser getAppUserByAccount(String account); + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java index a656f48..0d784e9 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java @@ -1,31 +1,40 @@ package com.casic.missiles.modular.app.service; -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.model.WellPreAdd; + +import java.util.List; +import java.util.Map; + public interface IAppWellPreService { - Object listPage(); + Page listPage(Page preAddPage, WellPreDTO wellPreDTO); /** * 预录入点位信息新增 */ - Object add(); + Object add(WellPreAdd wellPreAdd); /** * 预录入点位信息批量导入 */ - Object batchImport(); + List addWellPreBatch(List wellPreAdds); /** * 预录入点位信息编辑 */ - Object update(); + Object update(WellPreAdd wellPreAdd); /** * 预录入点位信息删除 */ - Object delete(); + Object delete(Long id); + + Map getProjestNameMap(); + + Map getProjestIdMap(); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java deleted file mode 100644 index 763c8c9..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.missiles.modular.app.service.impl; - -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.app.dao.AppProductSafeMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import org.springframework.stereotype.Service; - -@Service -public class AppProuctionSafeServiceImpl extends ServiceImpl implements IAppProuctionSafeService { - - - @Override - public Object listPage() { - return null; - } - - @Override - public Object getTodaySignStatus() { - return null; - } - - @Override - public Object update() { - return null; - } - - @Override - public Object add() { - return null; - } - - @Override - public Object detail() { - return null; - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 51b1a6d..4aa4faf 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -1,49 +1,383 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.base.language.I18nFactory; +import com.casic.missiles.core.base.response.ErrorResponseData; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.exception.BizExceptionEnum; +import com.casic.missiles.core.exception.GunsException; +import com.casic.missiles.core.exception.GunsExceptionEnum; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.app.dao.AppUserMapper; +import com.casic.missiles.modular.app.dto.user.AppUserImportValid; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.AppUserStatusEnum; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Slf4j @Service -public class AppUserServiceImpl implements IAppUserService { +@AllArgsConstructor +public class AppUserServiceImpl extends ServiceImpl implements IAppUserService, AppUserStatusEnum { + private final Validator validator; + private final DictMapper dictMapper; + private final IAppWellPreService appWellPreService; + private final CasicProperties casicProperties; @Override - public Object login() { - return null; + public Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { + try { + appUserLoginDTO.setPassword(RSAUtils.decrypt(appUserLoginDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + throw new BusinessException(BusinessExceptionEnum.DECRYPTION_ERROR); + } + String userPassword = ShiroKit.md5(appUserLoginDTO.getPassword(), appUser.getSalt()); + if (userPassword.equals(appUser.getPassword())) { + return true; + } else { + return false; + } } @Override - public Object listPage() { - return null; + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + appUser.setStatus(ALREADY_BOUND); + appUser.setAttr(appUserLoginDTO.getWeChatName()); + appUser.setOpenId(appUserLoginDTO.getOpenId()); + int bindFlag = this.baseMapper.updateById(appUser); + if (bindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.BIND_USER_ERROR); } @Override - public Object add() { - return null; + public Page listPage(Page page, AppUserListDTO appUserListDTO) { + EntityWrapper entityWrapper = initQueryParam(appUserListDTO); + List appUserList = this.baseMapper.selectPage(page, entityWrapper); + for (AppUser appUser : appUserList) { + appUser.setProjectNames(tranIdsToStrNames(appUser.getProjectIds())); + } + page.setRecords(appUserList); + return page; } @Override - public Object update() { - return null; + public Object add(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), null); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + userDTO.setStatus(NOT_BOUND); + this.insert(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object project() { - return null; + public Object update(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), userDTO.getId()); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + this.updateById(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object unbind() { - return null; + public Object project(String openId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq(openId, openId); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + if (appUserOptional.isPresent()) { + AppUser appUser = appUserOptional.get(); + List projects = tranIdsToListNames(appUser.getProjectIds()); + return ResponseData.success(projects); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object batchImport() { - return null; + public Object unbind(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + appUser.setLabelLastTime(null); + appUser.setOpenId(null); + appUser.setAttr(null); + appUser.setAttrAlias(null); + //状态置为未绑定 + appUser.setStatus(NOT_BOUND); + int unbindFlag = this.baseMapper.updateById(appUser); + if (unbindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /** + * 1、准备用户导入信息的验证集合 + * 2、进行检测-项目、手机号、role + * 3、批量导入 + */ @Override - public Object delete() { - return null; + public List batchImport(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + AppUserImportValid userValid = prepareUserValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(user -> { + index[0]++; + validator.validate(user, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } + + //验证项目名称是否存在 + String[] projectNames = user.getProjectNames().split(","); + String projectIdIs = ""; + for (String projectName : projectNames) { + Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); + return; + } else { + projectIdIs += userValid.getProjectNameMap().get(projectName) + ","; + } + } + if (!StringUtils.isEmpty(projectIdIs)) { + projectIdIs = projectIdIs.substring(0, projectIdIs.length() - 1); + } + user.setProjectIds(projectIdIs); + + //验证角色类型 + if (StringUtils.isNotEmpty(user.getRole())) { + Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); + if (roleIsExist) { + list.add("第" + index[0] + "行,角色类型错误,查询不到!"); + return; + } else { + user.setRole(userValid.getRoleMap().get(user.getRole())); + } + } + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + user.setStatus(NOT_BOUND); + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存app用户信息 + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入用户数据不能为空"); + } + return list; } + + /** + * 状态即为状态置为3 + */ + @Override + public Object delete(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + //设置为删除状态 + appUser.setStatus(ALREADY_DELETE); + int deleteFlag = this.baseMapper.updateById(appUser); + if (deleteFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + + private AppUser createUser(AppUserSaveDTO userDTO) { + if (userDTO == null) { + return null; + } else { + AppUser user = new AppUser(); + BeanUtils.copyProperties(userDTO, user); + return user; + } + } + + /** + * 通过项目ids获取项目名称字符串 + */ + private String tranIdsToStrNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + String projectNames = ""; + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNames += wellPreMaps.get(projectId) + ","; + } + } + if (!StringUtils.isEmpty(projectNames)) { + projectNames = projectNames.substring(0, projectNames.length() - 1); + } + return projectNames; + } + + /** + * 通过项目ids获取项目名称列表 + */ + private List tranIdsToListNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + List projectNamelist = new ArrayList<>(); + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNamelist.add(wellPreMaps.get(projectId)); + } + } + return projectNamelist; + } + + private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); + query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); + if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { + query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); + } + query.orderBy("createTime", false); + return query; + } + + private AppUserImportValid prepareUserValid() { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictRole() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("appRole"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return dictRoleMap; + } + + + //获取项目名称 + private Map getUserPhoneMap() { + List userPhoneList = this.baseMapper.getUserPhoneList(); + //由名称查询id + Map userPhoneMap = userPhoneList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + @Override + public AppUser getAppUserByAccount(String account) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + appUserWrapper.ne("status", "3"); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + return appUserOptional.isPresent() ? appUserOptional.get() : null; + } + + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + private int getAppUserByAccount(String account, Long currentUserId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + if (!ObjectUtils.isEmpty(currentUserId)) { + appUserWrapper.ne("id", currentUserId); + } + List appUserList = this.baseMapper.selectList(appUserWrapper); + return appUserList != null ? appUserList.size() : 0; + } + + private String decryptPassword(String password) { + try { + String privateKey = this.casicProperties.getRsaPrivateKey(); + if (StrUtil.hasEmpty(new CharSequence[]{this.casicProperties.getRsaPrivateKey(), this.casicProperties.getRsaPublicKey()})) { + privateKey = ShiroKit.getSession().getAttribute("RSAPrivateKey").toString(); + } + return RSAUtils.decrypt(password, privateKey); + } catch (Exception var4) { + throw new RuntimeException(I18nFactory.getMessage("admin.nouser.error")); + } + } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 8bc52d5..18a1c5e 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -1,35 +1,209 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.modular.app.dao.WellPreAddMapper; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.dto.WellPreImportValid; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; @Service -public class AppWellPreServiceImpl implements IAppWellPreService { +@AllArgsConstructor +public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { + private final Validator validator; + private final DictMapper dictMapper; @Override - public Object listPage() { - return null; + public Page listPage(Page preAddPage, WellPreDTO wellPreDTO) { + EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); + List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); + Map projestMaps = getProjestIdMap(); + for (WellPreAdd wellPreAdd : wellPreAddList) { + if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { + wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + } + } + preAddPage.setRecords(wellPreAddList); + return preAddPage; } @Override - public Object add() { - return null; + public Object add(WellPreAdd wellPreAdd) { + int addFlag = this.baseMapper.insert(wellPreAdd); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 + */ + @Override + public List addWellPreBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + WellPreImportValid wellPreValid = prepareWellPreValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(wellPreAdd -> { + index[0]++; + validator.validate(wellPreAdd, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //点位编号的唯一性 + Boolean wellCodeIsExist = wellPreValid.getWellCodeMap().containsKey(wellPreAdd.getWellCode()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,设备编号已经存在!"); + return; + } + //验证项目名称是否存在 + Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称错误,查询不到!"); + return; + } else { + wellPreAdd.setProjectId(wellPreValid.getProjectMap().get(wellPreAdd.getProjectName())); + } + //验证点位类型 + Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); + if (wellTypeIsExist) { + list.add("第" + index[0] + "行,点位类型错误,查询不到!"); + return; + } else { + wellPreAdd.setWellType(wellPreValid.getDictSuiltWellMap().get(wellPreAdd.getWellTypeName())); + } + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存设备信息 + Boolean batchFlag=this.insertBatch(results); + if(batchFlag){ + return list; + }else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入数据不能为空"); + } + return list; } @Override - public Object batchImport() { - return null; + public Object update(WellPreAdd wellPreAdd) { + int updateFlag = this.baseMapper.updateById(wellPreAdd); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object update() { - return null; + public Object delete(Long id) { + int deleteFlag = this.baseMapper.deleteById(id); + if (deleteFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellCode()), "well_code", wellPreDTO.getWellCode()); + query.eq(StringUtils.isNotEmpty(wellPreDTO.getProjectId()), "projectId", wellPreDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getPosition()), "position", wellPreDTO.getPosition()); + //时间处理 + query.ge(StringUtils.isNotEmpty(wellPreDTO.getStartTime()), "createTime", wellPreDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(wellPreDTO.getEndTime()), "createTime", wellPreDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + + /** + * 预录入初始化的内容都放在该方法进行批量初始化 + */ + private WellPreImportValid prepareWellPreValid() { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllProjestNameMap()) + .dictSuiltWellMap(getDictSuiltWell()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictSuiltWell() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + Map wellCodeMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return wellCodeMap; + } + + //获取点位编号 + private Map getAllProjestNameMap() { + List allWellPreList = this.baseMapper.getAllWellPreList(); + Map wellCodeMap = allWellPreList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity()) + ); + return wellCodeMap; + } + + //获取项目名称 @Override - public Object delete() { - return null; + public Map getProjestNameMap() { + List> projects = this.baseMapper.getProjectList(); + //由名称查询id + Map projectMap = projects.stream().collect( + Collectors.toMap(e -> e.get("projectName"), + e -> e.get("projectId")) + ); + return projectMap; + } + + + @Override + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); + Map projectMaps = projects.stream().collect( + Collectors.toMap(e -> e.get("projectId"), + e -> e.get("projectName")) + ); + return projectMaps; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java new file mode 100644 index 0000000..922cbc0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.app.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.dao.AppProducteSafeMapper; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class IAppProucteSafeServiceImpl extends ServiceImpl implements IAppProucteSafeService { + + @Value("${casic.photoPath}") + private String photoPath; + @Autowired + private IAppWellPreService appWellPreService; + + @Override + public Page listPage(Page page, ProucteSafeDTO proucteSafeDTO) { + EntityWrapper entityWrapper = initQueryParam(proucteSafeDTO); + List appProductSafes = this.baseMapper.selectPage(page, entityWrapper); + Map appWellPreMap = appWellPreService.getProjestIdMap(); + for (AppProducteSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId())); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + } + page.setRecords(appProductSafes); + return page; + } + + @Override + public Object getTodaySignStatus(String openId) { + String isHasSign = this.baseMapper.getTodaySignStatus(openId); + Map signStatusMap = new HashMap<>(); + if (StringUtils.isEmpty(isHasSign)) { + signStatusMap.put("signStatus", "0"); + } else { + signStatusMap.put("signStatus", "1"); + } + return ResponseData.success(signStatusMap); + } + + @Override + public Object update(AppProducteSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProducteSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProducteSafe appProductSafe = this.baseMapper.selectById(id); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + return appProductSafe; + } + + private EntityWrapper initQueryParam(ProucteSafeDTO proucteSafeDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(proucteSafeDTO.getSignName()), "signName", proucteSafeDTO.getSignName()); + query.eq(StringUtils.isNotEmpty(proucteSafeDTO.getProjectId()), "well_code", proucteSafeDTO.getProjectId()); + //时间处理 + query.ge(StringUtils.isNotEmpty(proucteSafeDTO.getStartTime()), "signTime", proucteSafeDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(proucteSafeDTO.getEndTime()), "signTime", proucteSafeDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java new file mode 100644 index 0000000..c91285d --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java @@ -0,0 +1,45 @@ +package com.casic.missiles.modular.app.util; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.builder.ExcelReaderBuilder; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.util.FileUtils; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.modular.app.dto.EasyListener; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; + +@Slf4j +public class ImportExcelUtils { + + public static List importExcel(Class cls, MultipartFile file, EasyListener listener, Function defaultCheckFunc) throws IOException { + ExcelTypeEnum excelTypeEnum = null; + File newfile = FileUtils.createCacheTmpFile(); + file.transferTo(newfile); + ExcelReaderBuilder excelReaderBuilder = (ExcelReaderBuilder) EasyExcel.read().file(newfile).head(cls); + EasyListener defaultListener = null; + new ArrayList(); + if (listener == null) { + defaultListener = new EasyListener() { + public static final int BATCH_COUNT = 500; + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + log.info("数据读取成功!"); + } + }; + excelReaderBuilder.registerReadListener(defaultListener); + } else { + excelReaderBuilder.registerReadListener(listener); + } + excelReaderBuilder.sheet().doRead(); + return defaultListener.getDataList(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java new file mode 100644 index 0000000..0f73e9d --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java @@ -0,0 +1,106 @@ +//package com.casic.missiles.modular.app.util; +// +//import org.apache.commons.lang3.StringUtils; +//import org.springframework.beans.BeansException; +//import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +//import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +//import org.springframework.beans.factory.support.AbstractBeanDefinition; +//import org.springframework.beans.factory.support.BeanDefinitionBuilder; +//import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; +//import org.springframework.beans.factory.support.BeanDefinitionRegistry; +//import org.springframework.context.ApplicationContext; +//import org.springframework.context.ApplicationContextAware; +//import org.springframework.context.annotation.Bean; +//import org.springframework.stereotype.Component; +//import org.springframework.util.CollectionUtils; +// +//import java.util.List; +//import java.util.Map; +//import java.util.concurrent.ForkJoinPool; +//import java.util.function.Function; +// +///** +// * @Description: Spring应用上下文工具 +// * @Author: wangpeng +// * @Date: 2022/8/11 18:04 +// */ +//@Component +//public class SpringContextUtil implements BeanFactoryPostProcessor, ApplicationContextAware { +// /** +// * Spring应用上下文环境 +// */ +// private static ApplicationContext applicationContext; +// +// private static ConfigurableListableBeanFactory beanFactory; +// +// /** +// * 实现ApplicationContextAware接口的回调方法,设置上下文环境 +// */ +// @Override +// public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { +// SpringContextUtil.applicationContext = applicationContext; +// } +// +// @Override +// public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { +// SpringContextUtil.beanFactory = beanFactory; +// } +// +// public static ApplicationContext getApplicationContext() { +// return applicationContext; +// } +// +//// public static Object getBean(String beanId) throws BeansException { +//// return applicationContext.getBean(beanId); +//// } +// +// public static T getBean(Class requiredType) { +// return (T) applicationContext.getBean(requiredType); +// } +// +// @SuppressWarnings("unchecked") +// public static T getBean(String name) throws BeansException { +// return (T) beanFactory.getBean(name); +// } +// +// public static boolean containsBean(String name) { +// return beanFactory.containsBean(name); +// } +// +// public static T registerBean(String beanName, Class clazz, Function function) { +// // 生成bean定义 +// BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); +// // 执行bean处理函数 +// AbstractBeanDefinition beanDefinition = function.apply(beanDefinitionBuilder); +// BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) SpringContextUtil.beanFactory; +// // 判断是否通过beanName注册 +// if (StringUtils.isNotBlank(beanName) && !containsBean(beanName)) { +// beanFactory.registerBeanDefinition(beanName, beanDefinition); +// return getBean(beanName); +// } else { +// // 非命名bean注册 +// String name = BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, beanFactory); +// return getBean(name); +// } +// } +// +// public static T registerBean(String beanName, Class clazz, List args, Map property) { +// return registerBean(beanName, clazz, beanDefinitionBuilder -> { +// // 放入构造参数 +// if (!CollectionUtils.isEmpty(args)) { +// args.forEach(beanDefinitionBuilder::addConstructorArgValue); +// } +// // 放入属性 +// if (!CollectionUtils.isEmpty(property)) { +// property.forEach(beanDefinitionBuilder::addPropertyValue); +// } +// return beanDefinitionBuilder.getBeanDefinition(); +// }); +// } +// +// @Bean +// public ForkJoinPool forkJoinPool() { +// return new ForkJoinPool(100); +// } +// +//} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java index c6fab92..69c338d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java @@ -70,6 +70,7 @@ */ @RequestMapping(value = "/add") @ResponseBody + @BussinessLog(value = "增加项目信息", key = PROJECT_ADD_LOG_KEY, dict = ProjectDict.class) public Object add(Project project) { EntityWrapper entityWrapper = new EntityWrapper<>(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java index d0bcaf4..948188a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java @@ -10,7 +10,6 @@ import com.casic.missiles.modular.system.service.IProductDeviceTypeService; import com.casic.missiles.modular.system.service.IProjectService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.util.DictCodeUtils; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; @@ -18,7 +17,6 @@ import java.util.Date; import java.util.List; import java.util.Map; -import java.util.stream.Collector; import java.util.stream.Collectors; /** @@ -54,7 +52,6 @@ project.setProjectStatus(HAS_EXCUTE); } project.setDevTpeNames(deviceTypeTransName(project.getDevTpeIds())); - DictCodeUtils.convertDictCodeToName(project); } return page; } diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0c49f02..0d9c990 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -1,21 +1,35 @@ package com.casic.missiles.modular.app.service; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.model.AppUser; + +import java.util.List; + public interface IAppUserService { - Object login(); + Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser); - Object listPage(); + Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser); - Object add(); + Page listPage(Page page, AppUserListDTO appUserListDTO); - Object update(); + Object add(AppUserSaveDTO appUserDTO); - Object project(); + Object update(AppUserSaveDTO appUserDTO); - Object unbind(); + Object project(String openId); - Object batchImport(); + Object unbind(Long id); - Object delete(); + List batchImport(List results); + + Object delete(Long id); + + AppUser getAppUserByAccount(String account); + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java index a656f48..0d784e9 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java @@ -1,31 +1,40 @@ package com.casic.missiles.modular.app.service; -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.model.WellPreAdd; + +import java.util.List; +import java.util.Map; + public interface IAppWellPreService { - Object listPage(); + Page listPage(Page preAddPage, WellPreDTO wellPreDTO); /** * 预录入点位信息新增 */ - Object add(); + Object add(WellPreAdd wellPreAdd); /** * 预录入点位信息批量导入 */ - Object batchImport(); + List addWellPreBatch(List wellPreAdds); /** * 预录入点位信息编辑 */ - Object update(); + Object update(WellPreAdd wellPreAdd); /** * 预录入点位信息删除 */ - Object delete(); + Object delete(Long id); + + Map getProjestNameMap(); + + Map getProjestIdMap(); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java deleted file mode 100644 index 763c8c9..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.missiles.modular.app.service.impl; - -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.app.dao.AppProductSafeMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import org.springframework.stereotype.Service; - -@Service -public class AppProuctionSafeServiceImpl extends ServiceImpl implements IAppProuctionSafeService { - - - @Override - public Object listPage() { - return null; - } - - @Override - public Object getTodaySignStatus() { - return null; - } - - @Override - public Object update() { - return null; - } - - @Override - public Object add() { - return null; - } - - @Override - public Object detail() { - return null; - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 51b1a6d..4aa4faf 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -1,49 +1,383 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.base.language.I18nFactory; +import com.casic.missiles.core.base.response.ErrorResponseData; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.exception.BizExceptionEnum; +import com.casic.missiles.core.exception.GunsException; +import com.casic.missiles.core.exception.GunsExceptionEnum; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.app.dao.AppUserMapper; +import com.casic.missiles.modular.app.dto.user.AppUserImportValid; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.AppUserStatusEnum; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Slf4j @Service -public class AppUserServiceImpl implements IAppUserService { +@AllArgsConstructor +public class AppUserServiceImpl extends ServiceImpl implements IAppUserService, AppUserStatusEnum { + private final Validator validator; + private final DictMapper dictMapper; + private final IAppWellPreService appWellPreService; + private final CasicProperties casicProperties; @Override - public Object login() { - return null; + public Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { + try { + appUserLoginDTO.setPassword(RSAUtils.decrypt(appUserLoginDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + throw new BusinessException(BusinessExceptionEnum.DECRYPTION_ERROR); + } + String userPassword = ShiroKit.md5(appUserLoginDTO.getPassword(), appUser.getSalt()); + if (userPassword.equals(appUser.getPassword())) { + return true; + } else { + return false; + } } @Override - public Object listPage() { - return null; + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + appUser.setStatus(ALREADY_BOUND); + appUser.setAttr(appUserLoginDTO.getWeChatName()); + appUser.setOpenId(appUserLoginDTO.getOpenId()); + int bindFlag = this.baseMapper.updateById(appUser); + if (bindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.BIND_USER_ERROR); } @Override - public Object add() { - return null; + public Page listPage(Page page, AppUserListDTO appUserListDTO) { + EntityWrapper entityWrapper = initQueryParam(appUserListDTO); + List appUserList = this.baseMapper.selectPage(page, entityWrapper); + for (AppUser appUser : appUserList) { + appUser.setProjectNames(tranIdsToStrNames(appUser.getProjectIds())); + } + page.setRecords(appUserList); + return page; } @Override - public Object update() { - return null; + public Object add(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), null); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + userDTO.setStatus(NOT_BOUND); + this.insert(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object project() { - return null; + public Object update(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), userDTO.getId()); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + this.updateById(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object unbind() { - return null; + public Object project(String openId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq(openId, openId); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + if (appUserOptional.isPresent()) { + AppUser appUser = appUserOptional.get(); + List projects = tranIdsToListNames(appUser.getProjectIds()); + return ResponseData.success(projects); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object batchImport() { - return null; + public Object unbind(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + appUser.setLabelLastTime(null); + appUser.setOpenId(null); + appUser.setAttr(null); + appUser.setAttrAlias(null); + //状态置为未绑定 + appUser.setStatus(NOT_BOUND); + int unbindFlag = this.baseMapper.updateById(appUser); + if (unbindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /** + * 1、准备用户导入信息的验证集合 + * 2、进行检测-项目、手机号、role + * 3、批量导入 + */ @Override - public Object delete() { - return null; + public List batchImport(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + AppUserImportValid userValid = prepareUserValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(user -> { + index[0]++; + validator.validate(user, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } + + //验证项目名称是否存在 + String[] projectNames = user.getProjectNames().split(","); + String projectIdIs = ""; + for (String projectName : projectNames) { + Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); + return; + } else { + projectIdIs += userValid.getProjectNameMap().get(projectName) + ","; + } + } + if (!StringUtils.isEmpty(projectIdIs)) { + projectIdIs = projectIdIs.substring(0, projectIdIs.length() - 1); + } + user.setProjectIds(projectIdIs); + + //验证角色类型 + if (StringUtils.isNotEmpty(user.getRole())) { + Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); + if (roleIsExist) { + list.add("第" + index[0] + "行,角色类型错误,查询不到!"); + return; + } else { + user.setRole(userValid.getRoleMap().get(user.getRole())); + } + } + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + user.setStatus(NOT_BOUND); + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存app用户信息 + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入用户数据不能为空"); + } + return list; } + + /** + * 状态即为状态置为3 + */ + @Override + public Object delete(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + //设置为删除状态 + appUser.setStatus(ALREADY_DELETE); + int deleteFlag = this.baseMapper.updateById(appUser); + if (deleteFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + + private AppUser createUser(AppUserSaveDTO userDTO) { + if (userDTO == null) { + return null; + } else { + AppUser user = new AppUser(); + BeanUtils.copyProperties(userDTO, user); + return user; + } + } + + /** + * 通过项目ids获取项目名称字符串 + */ + private String tranIdsToStrNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + String projectNames = ""; + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNames += wellPreMaps.get(projectId) + ","; + } + } + if (!StringUtils.isEmpty(projectNames)) { + projectNames = projectNames.substring(0, projectNames.length() - 1); + } + return projectNames; + } + + /** + * 通过项目ids获取项目名称列表 + */ + private List tranIdsToListNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + List projectNamelist = new ArrayList<>(); + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNamelist.add(wellPreMaps.get(projectId)); + } + } + return projectNamelist; + } + + private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); + query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); + if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { + query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); + } + query.orderBy("createTime", false); + return query; + } + + private AppUserImportValid prepareUserValid() { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictRole() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("appRole"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return dictRoleMap; + } + + + //获取项目名称 + private Map getUserPhoneMap() { + List userPhoneList = this.baseMapper.getUserPhoneList(); + //由名称查询id + Map userPhoneMap = userPhoneList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + @Override + public AppUser getAppUserByAccount(String account) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + appUserWrapper.ne("status", "3"); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + return appUserOptional.isPresent() ? appUserOptional.get() : null; + } + + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + private int getAppUserByAccount(String account, Long currentUserId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + if (!ObjectUtils.isEmpty(currentUserId)) { + appUserWrapper.ne("id", currentUserId); + } + List appUserList = this.baseMapper.selectList(appUserWrapper); + return appUserList != null ? appUserList.size() : 0; + } + + private String decryptPassword(String password) { + try { + String privateKey = this.casicProperties.getRsaPrivateKey(); + if (StrUtil.hasEmpty(new CharSequence[]{this.casicProperties.getRsaPrivateKey(), this.casicProperties.getRsaPublicKey()})) { + privateKey = ShiroKit.getSession().getAttribute("RSAPrivateKey").toString(); + } + return RSAUtils.decrypt(password, privateKey); + } catch (Exception var4) { + throw new RuntimeException(I18nFactory.getMessage("admin.nouser.error")); + } + } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 8bc52d5..18a1c5e 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -1,35 +1,209 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.modular.app.dao.WellPreAddMapper; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.dto.WellPreImportValid; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; @Service -public class AppWellPreServiceImpl implements IAppWellPreService { +@AllArgsConstructor +public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { + private final Validator validator; + private final DictMapper dictMapper; @Override - public Object listPage() { - return null; + public Page listPage(Page preAddPage, WellPreDTO wellPreDTO) { + EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); + List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); + Map projestMaps = getProjestIdMap(); + for (WellPreAdd wellPreAdd : wellPreAddList) { + if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { + wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + } + } + preAddPage.setRecords(wellPreAddList); + return preAddPage; } @Override - public Object add() { - return null; + public Object add(WellPreAdd wellPreAdd) { + int addFlag = this.baseMapper.insert(wellPreAdd); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 + */ + @Override + public List addWellPreBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + WellPreImportValid wellPreValid = prepareWellPreValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(wellPreAdd -> { + index[0]++; + validator.validate(wellPreAdd, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //点位编号的唯一性 + Boolean wellCodeIsExist = wellPreValid.getWellCodeMap().containsKey(wellPreAdd.getWellCode()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,设备编号已经存在!"); + return; + } + //验证项目名称是否存在 + Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称错误,查询不到!"); + return; + } else { + wellPreAdd.setProjectId(wellPreValid.getProjectMap().get(wellPreAdd.getProjectName())); + } + //验证点位类型 + Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); + if (wellTypeIsExist) { + list.add("第" + index[0] + "行,点位类型错误,查询不到!"); + return; + } else { + wellPreAdd.setWellType(wellPreValid.getDictSuiltWellMap().get(wellPreAdd.getWellTypeName())); + } + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存设备信息 + Boolean batchFlag=this.insertBatch(results); + if(batchFlag){ + return list; + }else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入数据不能为空"); + } + return list; } @Override - public Object batchImport() { - return null; + public Object update(WellPreAdd wellPreAdd) { + int updateFlag = this.baseMapper.updateById(wellPreAdd); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object update() { - return null; + public Object delete(Long id) { + int deleteFlag = this.baseMapper.deleteById(id); + if (deleteFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellCode()), "well_code", wellPreDTO.getWellCode()); + query.eq(StringUtils.isNotEmpty(wellPreDTO.getProjectId()), "projectId", wellPreDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getPosition()), "position", wellPreDTO.getPosition()); + //时间处理 + query.ge(StringUtils.isNotEmpty(wellPreDTO.getStartTime()), "createTime", wellPreDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(wellPreDTO.getEndTime()), "createTime", wellPreDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + + /** + * 预录入初始化的内容都放在该方法进行批量初始化 + */ + private WellPreImportValid prepareWellPreValid() { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllProjestNameMap()) + .dictSuiltWellMap(getDictSuiltWell()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictSuiltWell() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + Map wellCodeMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return wellCodeMap; + } + + //获取点位编号 + private Map getAllProjestNameMap() { + List allWellPreList = this.baseMapper.getAllWellPreList(); + Map wellCodeMap = allWellPreList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity()) + ); + return wellCodeMap; + } + + //获取项目名称 @Override - public Object delete() { - return null; + public Map getProjestNameMap() { + List> projects = this.baseMapper.getProjectList(); + //由名称查询id + Map projectMap = projects.stream().collect( + Collectors.toMap(e -> e.get("projectName"), + e -> e.get("projectId")) + ); + return projectMap; + } + + + @Override + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); + Map projectMaps = projects.stream().collect( + Collectors.toMap(e -> e.get("projectId"), + e -> e.get("projectName")) + ); + return projectMaps; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java new file mode 100644 index 0000000..922cbc0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.app.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.dao.AppProducteSafeMapper; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class IAppProucteSafeServiceImpl extends ServiceImpl implements IAppProucteSafeService { + + @Value("${casic.photoPath}") + private String photoPath; + @Autowired + private IAppWellPreService appWellPreService; + + @Override + public Page listPage(Page page, ProucteSafeDTO proucteSafeDTO) { + EntityWrapper entityWrapper = initQueryParam(proucteSafeDTO); + List appProductSafes = this.baseMapper.selectPage(page, entityWrapper); + Map appWellPreMap = appWellPreService.getProjestIdMap(); + for (AppProducteSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId())); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + } + page.setRecords(appProductSafes); + return page; + } + + @Override + public Object getTodaySignStatus(String openId) { + String isHasSign = this.baseMapper.getTodaySignStatus(openId); + Map signStatusMap = new HashMap<>(); + if (StringUtils.isEmpty(isHasSign)) { + signStatusMap.put("signStatus", "0"); + } else { + signStatusMap.put("signStatus", "1"); + } + return ResponseData.success(signStatusMap); + } + + @Override + public Object update(AppProducteSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProducteSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProducteSafe appProductSafe = this.baseMapper.selectById(id); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + return appProductSafe; + } + + private EntityWrapper initQueryParam(ProucteSafeDTO proucteSafeDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(proucteSafeDTO.getSignName()), "signName", proucteSafeDTO.getSignName()); + query.eq(StringUtils.isNotEmpty(proucteSafeDTO.getProjectId()), "well_code", proucteSafeDTO.getProjectId()); + //时间处理 + query.ge(StringUtils.isNotEmpty(proucteSafeDTO.getStartTime()), "signTime", proucteSafeDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(proucteSafeDTO.getEndTime()), "signTime", proucteSafeDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java new file mode 100644 index 0000000..c91285d --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java @@ -0,0 +1,45 @@ +package com.casic.missiles.modular.app.util; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.builder.ExcelReaderBuilder; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.util.FileUtils; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.modular.app.dto.EasyListener; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; + +@Slf4j +public class ImportExcelUtils { + + public static List importExcel(Class cls, MultipartFile file, EasyListener listener, Function defaultCheckFunc) throws IOException { + ExcelTypeEnum excelTypeEnum = null; + File newfile = FileUtils.createCacheTmpFile(); + file.transferTo(newfile); + ExcelReaderBuilder excelReaderBuilder = (ExcelReaderBuilder) EasyExcel.read().file(newfile).head(cls); + EasyListener defaultListener = null; + new ArrayList(); + if (listener == null) { + defaultListener = new EasyListener() { + public static final int BATCH_COUNT = 500; + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + log.info("数据读取成功!"); + } + }; + excelReaderBuilder.registerReadListener(defaultListener); + } else { + excelReaderBuilder.registerReadListener(listener); + } + excelReaderBuilder.sheet().doRead(); + return defaultListener.getDataList(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java new file mode 100644 index 0000000..0f73e9d --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java @@ -0,0 +1,106 @@ +//package com.casic.missiles.modular.app.util; +// +//import org.apache.commons.lang3.StringUtils; +//import org.springframework.beans.BeansException; +//import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +//import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +//import org.springframework.beans.factory.support.AbstractBeanDefinition; +//import org.springframework.beans.factory.support.BeanDefinitionBuilder; +//import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; +//import org.springframework.beans.factory.support.BeanDefinitionRegistry; +//import org.springframework.context.ApplicationContext; +//import org.springframework.context.ApplicationContextAware; +//import org.springframework.context.annotation.Bean; +//import org.springframework.stereotype.Component; +//import org.springframework.util.CollectionUtils; +// +//import java.util.List; +//import java.util.Map; +//import java.util.concurrent.ForkJoinPool; +//import java.util.function.Function; +// +///** +// * @Description: Spring应用上下文工具 +// * @Author: wangpeng +// * @Date: 2022/8/11 18:04 +// */ +//@Component +//public class SpringContextUtil implements BeanFactoryPostProcessor, ApplicationContextAware { +// /** +// * Spring应用上下文环境 +// */ +// private static ApplicationContext applicationContext; +// +// private static ConfigurableListableBeanFactory beanFactory; +// +// /** +// * 实现ApplicationContextAware接口的回调方法,设置上下文环境 +// */ +// @Override +// public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { +// SpringContextUtil.applicationContext = applicationContext; +// } +// +// @Override +// public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { +// SpringContextUtil.beanFactory = beanFactory; +// } +// +// public static ApplicationContext getApplicationContext() { +// return applicationContext; +// } +// +//// public static Object getBean(String beanId) throws BeansException { +//// return applicationContext.getBean(beanId); +//// } +// +// public static T getBean(Class requiredType) { +// return (T) applicationContext.getBean(requiredType); +// } +// +// @SuppressWarnings("unchecked") +// public static T getBean(String name) throws BeansException { +// return (T) beanFactory.getBean(name); +// } +// +// public static boolean containsBean(String name) { +// return beanFactory.containsBean(name); +// } +// +// public static T registerBean(String beanName, Class clazz, Function function) { +// // 生成bean定义 +// BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); +// // 执行bean处理函数 +// AbstractBeanDefinition beanDefinition = function.apply(beanDefinitionBuilder); +// BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) SpringContextUtil.beanFactory; +// // 判断是否通过beanName注册 +// if (StringUtils.isNotBlank(beanName) && !containsBean(beanName)) { +// beanFactory.registerBeanDefinition(beanName, beanDefinition); +// return getBean(beanName); +// } else { +// // 非命名bean注册 +// String name = BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, beanFactory); +// return getBean(name); +// } +// } +// +// public static T registerBean(String beanName, Class clazz, List args, Map property) { +// return registerBean(beanName, clazz, beanDefinitionBuilder -> { +// // 放入构造参数 +// if (!CollectionUtils.isEmpty(args)) { +// args.forEach(beanDefinitionBuilder::addConstructorArgValue); +// } +// // 放入属性 +// if (!CollectionUtils.isEmpty(property)) { +// property.forEach(beanDefinitionBuilder::addPropertyValue); +// } +// return beanDefinitionBuilder.getBeanDefinition(); +// }); +// } +// +// @Bean +// public ForkJoinPool forkJoinPool() { +// return new ForkJoinPool(100); +// } +// +//} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java index c6fab92..69c338d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java @@ -70,6 +70,7 @@ */ @RequestMapping(value = "/add") @ResponseBody + @BussinessLog(value = "增加项目信息", key = PROJECT_ADD_LOG_KEY, dict = ProjectDict.class) public Object add(Project project) { EntityWrapper entityWrapper = new EntityWrapper<>(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java index d0bcaf4..948188a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java @@ -10,7 +10,6 @@ import com.casic.missiles.modular.system.service.IProductDeviceTypeService; import com.casic.missiles.modular.system.service.IProjectService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.util.DictCodeUtils; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; @@ -18,7 +17,6 @@ import java.util.Date; import java.util.List; import java.util.Map; -import java.util.stream.Collector; import java.util.stream.Collectors; /** @@ -54,7 +52,6 @@ project.setProjectStatus(HAS_EXCUTE); } project.setDevTpeNames(deviceTypeTransName(project.getDevTpeIds())); - DictCodeUtils.convertDictCodeToName(project); } return page; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/util/DictCodeUtils.java b/casic-device/src/main/java/com/casic/missiles/modular/util/DictCodeUtils.java index c2e1c17..bc4ea68 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/util/DictCodeUtils.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/util/DictCodeUtils.java @@ -1,135 +1,135 @@ -package com.casic.missiles.modular.util; - -import com.casic.missiles.modular.system.enums.BusinessException; -import com.casic.missiles.modular.system.service.AbstractDictService; -import com.casic.missiles.modular.annotation.DictCodeField; - -import org.apache.commons.lang3.StringUtils; - -import java.lang.reflect.Field; -import java.util.Objects; - -/** - * 字典utils - */ -public class DictCodeUtils { - /** - * 字典code转换成名称 - */ - public static void convertDictCodeToName(Object object) throws Exception { - Field[] fields = object.getClass().getDeclaredFields(); - for (Field field : fields) { - if (!field.isAccessible()) { - field.setAccessible(true); - } - if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { - DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; - if (StringUtils.isEmpty(dictCodeField.cacheName())) { - throw new BusinessException(500, "缓存名不能为空"); - } - AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { - continue; - } - String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); - if (StringUtils.isEmpty(name)) { - throw new BusinessException(500, dictCodeField.message()); - } - String destFieldName = field.getName() + "Name"; - Field destField = object.getClass().getDeclaredField(destFieldName); - if (destField == null) { - throw new BusinessException(500, "字典名称字段不存在"); - } - if (!destField.isAccessible()) { - destField.setAccessible(true); - } - destField.set(object, name); - } - } - } - - - /** - * 多个字典code(逗号隔开),转换成名称 - */ - public static void convertDictMultiCodeToName(Object object) throws Exception { - Field[] fields = object.getClass().getDeclaredFields(); - for (Field field : fields) { - if (!field.isAccessible()) { - field.setAccessible(true); - } - if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { - - DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; - if (StringUtils.isEmpty(dictCodeField.cacheName())) { - throw new BusinessException(500, "缓存名不能为空"); - } - AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { - continue; - } - String name = ""; - //进行字典值得获取 - if (field.get(object).toString().contains(",")) { - String[] filedObjects = field.get(object).toString().split(","); - for (String filedObject : filedObjects) { - name += dictService.getDictNameByCode(dictCodeField.cacheName(), filedObject) + ","; - if (StringUtils.isEmpty(name)) { - throw new BusinessException(500, dictCodeField.message()); - } - } - if (StringUtils.isEmpty(name)) { - throw new BusinessException(500, dictCodeField.message()); - } - } else { - name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); - if (StringUtils.isEmpty(name)) { - throw new BusinessException(500, dictCodeField.message()); - } - } - String destFieldName = field.getName() + "Name"; - Field destField = object.getClass().getDeclaredField(destFieldName); - if (destField == null) { - throw new BusinessException(500, "字典名称字段不存在"); - } - if (!destField.isAccessible()) { - destField.setAccessible(true); - } - destField.set(object, name); - } - } - } - - /** - * 校验字典code是否合法 - * - * @param object - * @return - */ - public static boolean validDictCode(Object object) throws Exception { - Field[] fields = object.getClass().getDeclaredFields(); - for (Field field : fields) { - if (!field.isAccessible()) { - field.setAccessible(true); - } - if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null && !field.get(object).equals("")) { - DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; - // 判断字典code是否需要校验 - if (!dictCodeField.needValid()) { - continue; - } - AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if (StringUtils.isEmpty(dictCodeField.cacheName())) { - throw new BusinessException(500, "缓存名不能为空"); - } - String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); - if (StringUtils.isEmpty(name)) { - throw new BusinessException(500, dictCodeField.message()); - } - dictCodeField.message(); - } - } - return true; - } - -} \ No newline at end of file +//package com.casic.missiles.modular.util; +// +//import com.casic.missiles.modular.system.enums.BusinessException; +//import com.casic.missiles.modular.system.service.AbstractDictService; +//import com.casic.missiles.modular.annotation.DictCodeField; +// +//import org.apache.commons.lang3.StringUtils; +// +//import java.lang.reflect.Field; +//import java.util.Objects; +// +///** +// * 字典utils +// */ +//public class DictCodeUtils { +// /** +// * 字典code转换成名称 +// */ +// public static void convertDictCodeToName(Object object) throws Exception { +// Field[] fields = object.getClass().getDeclaredFields(); +// for (Field field : fields) { +// if (!field.isAccessible()) { +// field.setAccessible(true); +// } +// if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { +// DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; +// if (StringUtils.isEmpty(dictCodeField.cacheName())) { +// throw new BusinessException(500, "缓存名不能为空"); +// } +// AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); +// if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { +// continue; +// } +// String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); +// if (StringUtils.isEmpty(name)) { +// throw new BusinessException(500, dictCodeField.message()); +// } +// String destFieldName = field.getName() + "Name"; +// Field destField = object.getClass().getDeclaredField(destFieldName); +// if (destField == null) { +// throw new BusinessException(500, "字典名称字段不存在"); +// } +// if (!destField.isAccessible()) { +// destField.setAccessible(true); +// } +// destField.set(object, name); +// } +// } +// } +// +// +// /** +// * 多个字典code(逗号隔开),转换成名称 +// */ +// public static void convertDictMultiCodeToName(Object object) throws Exception { +// Field[] fields = object.getClass().getDeclaredFields(); +// for (Field field : fields) { +// if (!field.isAccessible()) { +// field.setAccessible(true); +// } +// if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { +// +// DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; +// if (StringUtils.isEmpty(dictCodeField.cacheName())) { +// throw new BusinessException(500, "缓存名不能为空"); +// } +// AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); +// if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { +// continue; +// } +// String name = ""; +// //进行字典值得获取 +// if (field.get(object).toString().contains(",")) { +// String[] filedObjects = field.get(object).toString().split(","); +// for (String filedObject : filedObjects) { +// name += dictService.getDictNameByCode(dictCodeField.cacheName(), filedObject) + ","; +// if (StringUtils.isEmpty(name)) { +// throw new BusinessException(500, dictCodeField.message()); +// } +// } +// if (StringUtils.isEmpty(name)) { +// throw new BusinessException(500, dictCodeField.message()); +// } +// } else { +// name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); +// if (StringUtils.isEmpty(name)) { +// throw new BusinessException(500, dictCodeField.message()); +// } +// } +// String destFieldName = field.getName() + "Name"; +// Field destField = object.getClass().getDeclaredField(destFieldName); +// if (destField == null) { +// throw new BusinessException(500, "字典名称字段不存在"); +// } +// if (!destField.isAccessible()) { +// destField.setAccessible(true); +// } +// destField.set(object, name); +// } +// } +// } +// +// /** +// * 校验字典code是否合法 +// * +// * @param object +// * @return +// */ +// public static boolean validDictCode(Object object) throws Exception { +// Field[] fields = object.getClass().getDeclaredFields(); +// for (Field field : fields) { +// if (!field.isAccessible()) { +// field.setAccessible(true); +// } +// if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null && !field.get(object).equals("")) { +// DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; +// // 判断字典code是否需要校验 +// if (!dictCodeField.needValid()) { +// continue; +// } +// AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); +// if (StringUtils.isEmpty(dictCodeField.cacheName())) { +// throw new BusinessException(500, "缓存名不能为空"); +// } +// String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); +// if (StringUtils.isEmpty(name)) { +// throw new BusinessException(500, dictCodeField.message()); +// } +// dictCodeField.message(); +// } +// } +// return true; +// } +// +//} \ No newline at end of file diff --git a/casic-app/pom.xml b/casic-app/pom.xml index 74d7eb2..a85d73b 100644 --- a/casic-app/pom.xml +++ b/casic-app/pom.xml @@ -87,6 +87,24 @@ 4.3.0 + + cn.hutool + hutool-core + 5.7.2 + + + + com.casic + casic-admin-core + ${casic.version} + + + + com.alibaba + easyexcel + 3.0.0-beta3 + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java new file mode 100644 index 0000000..4647839 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProucteSafeController.java @@ -0,0 +1,90 @@ +package com.casic.missiles.modular.app.controller; + + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.Objects; + +@AllArgsConstructor +@RestController +@RequestMapping("/prouction/safe") +public class AppProucteSafeController extends BaseController { + + private final IAppProucteSafeService proucteSafeService; + + /** + * 安全生产分页列表 + */ + @RequestMapping(value = "/listPage") + public Object listPage(@RequestBody @Valid ProucteSafeDTO proucteSafeDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return proucteSafeService.listPage(page,proucteSafeDTO); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/status") + public Object getTodaySignStatus(String openId) { + Assert.isFalse(StringUtils.isEmpty(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return proucteSafeService.getTodaySignStatus(openId); + } + + /** + * 安全生产更新 + */ + @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appProductSafe.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.update(appProductSafe); + } + + /** + * 安全生产新增 + */ + @RequestMapping(value = "/add") + public Object add(@RequestBody @Valid AppProducteSafe appProductSafe, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return proucteSafeService.add(appProductSafe); + } + + /** + * 安全生产详情信息 + */ + @RequestMapping(value = "/detail") + public Object detail(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return proucteSafeService.detail(id); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java deleted file mode 100644 index 5b2ad70..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppProuctionSafeController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.casic.missiles.modular.app.controller; - - -import com.casic.missiles.core.base.controller.BaseController; -import com.casic.missiles.core.base.response.ResponseData; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; - -@AllArgsConstructor -@RestController -@RequestMapping("/prouction/safe") -public class AppProuctionSafeController extends BaseController { - - private final IAppProuctionSafeService proucteSafeService; - - /** - * 安全生产分页列表 - */ - @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); - } - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/status") - @ResponseBody - public Object getTodaySignStatus() { - return ResponseData.success(); - } - - - /** - * 安全生产更新 - */ - @RequestMapping(value = "/update") - @ResponseBody - public Object update() { - return ResponseData.success(); - } - - /** - * 安全生产新增 - */ - @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 安全生产详情信息 - */ - @RequestMapping(value = "/detail") - @ResponseBody - public Object detail() { - return ResponseData.success(); - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java index a536e39..25a05d5 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppUserController.java @@ -1,89 +1,149 @@ package com.casic.missiles.modular.app.controller; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page; import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid;; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/app/user") -public class AppUserController extends BaseController { +public class AppUserController extends BaseController { private final IAppUserService appUserService; /** - * 登录之后进行绑定 + * 账号的有效性、token暂时不加 + * 1、获取用户信息 + * 2、设置用户session + * 3、检验密码 + * 4、正确进行相关的微信信息绑定 */ @RequestMapping(value = "/login") - public Object login() { - return ResponseData.success(); + public Object login(@RequestBody @Valid AppUserLoginDTO appUserLoginDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + AppUser appUser = appUserService.getAppUserByAccount(appUserLoginDTO.getPhone()); + super.getSession().setAttribute("role", appUser.getRole()); + if (appUserService.checkPassWord(appUserLoginDTO,appUser)) { + return appUserService.bindWechatUser(appUserLoginDTO,appUser); + } else { + throw new BusinessException(BusinessExceptionEnum.PASSWORD_ERROR); + } } /** * 分页列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid AppUserListDTO appUserListDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appUserService.listPage(page, appUserListDTO))); } /** * 新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - /** - * 由openId获取项目列表信息 - */ - @RequestMapping(value = "/project") - @ResponseBody - public Object project() { - return ResponseData.success(); - } - - /** - * 解除绑定 - */ - @RequestMapping(value = "/unbind") - @ResponseBody - public Object unbind() { - return ResponseData.success(); - } - - /** - * 批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.add(appUserDTO); } /** * 编辑 */ @RequestMapping(value = "/update") - @ResponseBody - public Object update() { + public Object update(@RequestBody @Valid AppUserSaveDTO appUserDTO, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(appUserDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appUserService.update(appUserDTO); + } + + + /** + * 由openId获取项目列表信息 + */ + @RequestMapping(value = "/project") + public Object project(String openId) { + Assert.isFalse(Objects.isNull(openId), () -> { + throw new BusinessException(BusinessExceptionEnum.OPENID_NULL); + }); + return appUserService.project(openId); + } + + /** + * 解除绑定 + */ + @RequestMapping(value = "/unbind") + public Object unbind(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.unbind(id); + } + + /** + * 批量导入 + */ + @RequestMapping(value = "/batchImport") + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(AppUser.class, file, null, null); + List list = appUserService.batchImport(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } + /** * 删除 */ @RequestMapping(value = "/delete") - @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appUserService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java index 879f683..32c676b 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/controller/AppWellPreController.java @@ -1,53 +1,87 @@ package com.casic.missiles.modular.app.controller; -import com.casic.missiles.core.base.controller.BaseController; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.plugins.Page;; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.base.response.ErrorResponseData; import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.constant.factory.PageFactory; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.enums.CoreExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.app.util.ImportExcelUtils; import lombok.AllArgsConstructor; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; @RestController @AllArgsConstructor @RequestMapping("/well/pre") -public class AppWellPreController extends BaseController { +public class AppWellPreController extends ExportController { private final IAppWellPreService appWellPreService; /** * 预录入点位信息列表 */ @RequestMapping(value = "/listPage") - @ResponseBody - public Object listPage() { - return ResponseData.success(); + public Object listPage(@RequestBody @Valid WellPreDTO wellPreDTO, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + Page page = new PageFactory().defaultPage(); + return ResponseData.success(super.packForBT(appWellPreService.listPage(page,wellPreDTO))); } /** * 预录入点位信息新增 */ @RequestMapping(value = "/add") - @ResponseBody - public Object add() { - return ResponseData.success(); - } - - - /** - * 预录入点位信息批量导入 - */ - @RequestMapping(value = "/batchImport") - @ResponseBody - public Object batchImport() { - return ResponseData.success(); + public Object add(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.add(wellPreAdd); } /** * 预录入点位信息编辑 */ @RequestMapping(value = "/update") + public Object update(@RequestBody @Valid WellPreAdd wellPreAdd, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(wellPreAdd.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + Assert.isFalse(bindingResult.hasErrors(), () -> { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + }); + return appWellPreService.update(wellPreAdd); + } + + /** + * 预录入点位信息批量导入 + */ + @RequestMapping(value = "/batchImport") @ResponseBody - public Object update() { + public Object batchImport(@RequestParam("file") MultipartFile file) { + try { + List results = ImportExcelUtils.importExcel(WellPreAdd.class, file, null, null); + List list = appWellPreService.addWellPreBatch(results); + if (!CollectionUtil.isEmpty(list)) { + //获取第校验报错信息 + return new ErrorResponseData(list.get(0)); + } + } catch (Exception e) { + throw new BusinessException(BusinessExceptionEnum.IMPORT_FILE_EMPTY); + } return ResponseData.success(); } @@ -56,8 +90,11 @@ */ @RequestMapping(value = "/delete") @ResponseBody - public Object delete() { - return ResponseData.success(); + public Object delete(Long id) { + Assert.isFalse(Objects.isNull(id), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return appWellPreService.delete(id); } } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java deleted file mode 100644 index 6f7549b..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProductSafeMapper.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.casic.missiles.modular.app.dao; - -import com.baomidou.mybatisplus.mapper.BaseMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; - -public interface AppProductSafeMapper extends BaseMapper { - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java new file mode 100644 index 0000000..e50ba44 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppProducteSafeMapper.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dao; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import org.apache.ibatis.annotations.Param; + +public interface AppProducteSafeMapper extends BaseMapper { + + String getTodaySignStatus(@Param("openId") String openId); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java index f29d19b..9a73ef8 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/AppUserMapper.java @@ -2,6 +2,14 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.AppUser; +import org.apache.ibatis.annotations.Select; + +import java.util.List; public interface AppUserMapper extends BaseMapper { + + @Select(" select phone " + + " from app_user " + + " where status!=3 ") + List getUserPhoneList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java index b3e0014..5eb7275 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/WellPreAddMapper.java @@ -2,6 +2,18 @@ import com.baomidou.mybatisplus.mapper.BaseMapper; import com.casic.missiles.modular.app.model.WellPreAdd; +import org.apache.ibatis.annotations.Select; + +import java.util.List; +import java.util.Map; public interface WellPreAddMapper extends BaseMapper { + + @Select(" SELECT ID as projectName,project_name AS projectName " + + " FROM product_project ") + List> getProjectList(); + + @Select(" SELECT well_code " + + " FROM app_pre_add ") + List getAllWellPreList(); } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml new file mode 100644 index 0000000..4f94453 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dao/mapping/AppProducteSafeMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java new file mode 100644 index 0000000..2083b42 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/EasyListener.java @@ -0,0 +1,27 @@ +package com.casic.missiles.modular.app.dto; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; + +import java.util.ArrayList; +import java.util.List; + +public abstract class EasyListener extends AnalysisEventListener { + protected List dataList = new ArrayList(); + + public EasyListener() { + } + + @Override + public void invoke(T data, AnalysisContext context) { + this.dataList.add(data); + } + + public List getDataList() { + return this.dataList; + } + + public void setDataList(List dataList) { + this.dataList = dataList; + } +} \ No newline at end of file diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java new file mode 100644 index 0000000..85d4aa7 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/ProucteSafeDTO.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class ProucteSafeDTO { + + /** + * 签名用户 + */ + private String signName; + /** + * 所属项目 + */ + private String projectId; + /** + * 签署开始日期 + */ + private String startTime; + /** + * 签署结束日期 + */ + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java new file mode 100644 index 0000000..23c47ef --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreDTO.java @@ -0,0 +1,16 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Data; + +@Data +public class WellPreDTO { + + private String wellCode; + private String wellType; + //项目id + private String projectId; + private String position; + private String startTime; + private String endTime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java new file mode 100644 index 0000000..2d79f7c --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/WellPreImportValid.java @@ -0,0 +1,28 @@ +package com.casic.missiles.modular.app.dto; + +import lombok.Builder; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +@Builder +public class WellPreImportValid { + + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectMap; + + /** + * 当前预录入列表存在项目map集合 key-welCode + */ + private Map wellCodeMap; + + /** + * 当前字典对应的点位类型, key-name:value-code + */ + private Map dictSuiltWellMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java new file mode 100644 index 0000000..9932d64 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserImportValid.java @@ -0,0 +1,29 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Builder; +import lombok.Data; + +import java.util.Map; + +/** + * @author cz + * @date 2023-5-25 + */ +@Builder +@Data +public class AppUserImportValid { + /** + * 当前用户列表存在手机号map集合 key-phone + */ + private Map userPhoneMap; + /** + * 当前项目列表存在项目map集合 key-projectName:value-projectId + */ + private Map projectNameMap; + + /** + * 当前字典存在role集合 key-role + */ + private Map roleMap; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java new file mode 100644 index 0000000..1fce39e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListDTO.java @@ -0,0 +1,11 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListDTO { + private String phone; + private String name; + private String userStatus; + private String projectId; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java new file mode 100644 index 0000000..eeb64fc --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserListVO.java @@ -0,0 +1,10 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserListVO { + + + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java new file mode 100644 index 0000000..3ed408e --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserLoginDTO.java @@ -0,0 +1,14 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +@Data +public class AppUserLoginDTO { + + private String phone; + private String password; + private String openId; + private String weChatName; + private String weChatImage; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java new file mode 100644 index 0000000..e580166 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/dto/user/AppUserSaveDTO.java @@ -0,0 +1,19 @@ +package com.casic.missiles.modular.app.dto.user; + +import lombok.Data; + +/** + * + */ +@Data +public class AppUserSaveDTO { + private Long id; + //这里手机号用作账号 + private String phone; + private String password; + private String name; + private String projectIds; + private String role; + private String salt; + private String status; +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java new file mode 100644 index 0000000..54081b1 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/AppUserStatusEnum.java @@ -0,0 +1,13 @@ +package com.casic.missiles.modular.app.enums; + +public interface AppUserStatusEnum { + + String ALL_USER = "0"; + + String ALREADY_BOUND = "1"; + + String NOT_BOUND = "2"; + + String ALREADY_DELETE = "3"; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java new file mode 100644 index 0000000..17fbfa6 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessException.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.enums; + +import lombok.Getter; +import lombok.Setter; + +/** + * @Description: 业务异常 + */ +public class BusinessException extends RuntimeException { + private static final long serialVersionUID = 1L; + + @Getter + @Setter + private Integer code; + @Getter + @Setter + private String message; + + public BusinessException(Integer code, String message) { + super(message); + this.code = code; + this.message = message; + } + + public BusinessException(BusinessExceptionEnum exceptionEnum) { + super(exceptionEnum.getMessage()); + this.code = exceptionEnum.getCode(); + this.message = exceptionEnum.getMessage(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java new file mode 100644 index 0000000..b2d328f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/BusinessExceptionEnum.java @@ -0,0 +1,42 @@ +package com.casic.missiles.modular.app.enums; + + +/** + * @Description: + */ +public enum BusinessExceptionEnum { + + ID_NULL(2400, "主键不能为空"), + OPENID_NULL(2401, "openid不能为空"), + HANDLE_FAILED(500, "操作失败"), + IMPORT_FILE_EMPTY(502,"导入文件为空"), + HANDLE_IMPORT_FAILED(503,"批量导入文件存储失败"), + PASSWORD_ERROR(2402,"密码验证错误"), + DECRYPTION_ERROR(2403," 添加app用户失败(密码解密失败)!"), + BIND_USER_ERROR(2403," 绑定信息添加失败");; + + + private Integer code; + private String message; + + BusinessExceptionEnum(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java new file mode 100644 index 0000000..8b72a3f --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/enums/CoreExceptionEnum.java @@ -0,0 +1,34 @@ +package com.casic.missiles.modular.app.enums; + +public enum CoreExceptionEnum { + + INVLIDE_DATE_STRING(400, "输入日期格式不对"), + NO_CURRENT_USER(700, "当前没有登录的用户"), + INIT_TABLE_EMPTY_PARAMS(701, "初始化数据库,存在为空的字段"), + ENCRYPT_ERROR(600, "加解密错误"), + FILE_READING_ERROR(400, "FILE_READING_ERROR!"), + FILE_NOT_FOUND(400, "FILE_NOT_FOUND!"), + FIELD_VALIDATE_ERROR(700, "数据库字段与实体字段不一致!"), + PAGE_NULL(404, "请求路径不存在"), + IO_ERROR(500, "流读取异常"), + SERVICE_ERROR(500, "服务器异常"), + REMOTE_SERVICE_NULL(404, "远程服务不存在"), + REQUEST_NULL(2400, "请求参数有误"), + ASYNC_ERROR(5000, "数据在被别人修改,请稍后重试"); + + private Integer code; + private String message; + + private CoreExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return this.code; + } + + public String getMessage() { + return this.message; + } +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java deleted file mode 100644 index 1541c19..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProductSafe.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.casic.missiles.modular.app.model; - -import com.baomidou.mybatisplus.annotations.TableName; -import lombok.Data; - -import java.util.Date; - -/** - * @author cz - */ -@Data -@TableName("app_product_safe") -public class AppProductSafe { - - private Long id; - private Long projectId; - private String signImage; - private String signName; - private Date signTime; - private Date creatime; - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java new file mode 100644 index 0000000..87cbf45 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppProducteSafe.java @@ -0,0 +1,25 @@ +package com.casic.missiles.modular.app.model; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author cz + */ +@Data +@TableName("app_product_safe") +public class AppProducteSafe { + + private Long id; + private Long projectId; + @TableField(exist = false) + private String projectName; + private String signImage; + private String signName; + private Date signTime; + private Date creatime; + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java index 0d83ff7..7f4a545 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/AppUser.java @@ -10,11 +10,13 @@ @Data public class AppUser { private Long id; - private String acount; + private String phone; private String password; private String name; - private String phone; - private String projectId; + private String projectIds; + + @TableField(exist = false) + private String projectNames; private String attr; @TableField("attr_alias") private String attrAlias; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java index 1fbbdd0..7c0d3cb 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/model/WellPreAdd.java @@ -1,9 +1,14 @@ package com.casic.missiles.modular.app.model; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; import lombok.Data; +import org.hibernate.validator.constraints.NotBlank; +import javax.validation.constraints.Digits; import java.util.Date; /** @@ -11,18 +16,35 @@ * @author cz */ @Data +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) @TableName("app_pre_add") public class WellPreAdd { private Long id; @TableField("well_code") + @NotBlank(message = "点位编号不能为空") private String wellCode; + @TableField("well_name") + @NotBlank(message = "点位名称不能为空") private String wellName; + @TableField("well_type") private String wellType; + + @NotBlank(message = "点位类型名称不能为空") + @TableField(exist = false) + private String wellTypeName; + + @NotBlank(message = "位置信息不能为空") private String position; + private String projectId; + @TableField(exist = false) + @NotBlank(message = "项目名称信息不能为空") + private String projectName; private Date createTime; @TableField("is_del") private String isDel; diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java new file mode 100644 index 0000000..4b1e5d2 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProucteSafeService.java @@ -0,0 +1,31 @@ +package com.casic.missiles.modular.app.service; + +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.model.AppProducteSafe; + +public interface IAppProucteSafeService { + + Page listPage(Page page, ProucteSafeDTO proucteSafeDTO ); + + /** + * 安全生产更新 + */ + Object getTodaySignStatus(String openId); + + /** + * 安全生产更新 + */ + Object update(AppProducteSafe appProducteSafe); + + /** + * 安全生产新增 + */ + Object add(AppProducteSafe appProducteSafe); + + /** + * 安全生产详情信息 + */ + Object detail(Long id); + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java deleted file mode 100644 index 0aeb314..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppProuctionSafeService.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.casic.missiles.modular.app.service; - -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; - -public interface IAppProuctionSafeService { - - Object listPage(); - - /** - * 安全生产更新 - */ - Object getTodaySignStatus(); - - /** - * 安全生产更新 - */ - Object update(); - - /** - * 安全生产新增 - */ - Object add(); - - /** - * 安全生产详情信息 - */ - Object detail(); - -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java index 0c49f02..0d9c990 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppUserService.java @@ -1,21 +1,35 @@ package com.casic.missiles.modular.app.service; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.model.AppUser; + +import java.util.List; + public interface IAppUserService { - Object login(); + Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser); - Object listPage(); + Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser); - Object add(); + Page listPage(Page page, AppUserListDTO appUserListDTO); - Object update(); + Object add(AppUserSaveDTO appUserDTO); - Object project(); + Object update(AppUserSaveDTO appUserDTO); - Object unbind(); + Object project(String openId); - Object batchImport(); + Object unbind(Long id); - Object delete(); + List batchImport(List results); + + Object delete(Long id); + + AppUser getAppUserByAccount(String account); + + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java index a656f48..0d784e9 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/IAppWellPreService.java @@ -1,31 +1,40 @@ package com.casic.missiles.modular.app.service; -import com.casic.missiles.core.base.response.ResponseData; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import com.baomidou.mybatisplus.plugins.Page; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.model.WellPreAdd; + +import java.util.List; +import java.util.Map; + public interface IAppWellPreService { - Object listPage(); + Page listPage(Page preAddPage, WellPreDTO wellPreDTO); /** * 预录入点位信息新增 */ - Object add(); + Object add(WellPreAdd wellPreAdd); /** * 预录入点位信息批量导入 */ - Object batchImport(); + List addWellPreBatch(List wellPreAdds); /** * 预录入点位信息编辑 */ - Object update(); + Object update(WellPreAdd wellPreAdd); /** * 预录入点位信息删除 */ - Object delete(); + Object delete(Long id); + + Map getProjestNameMap(); + + Map getProjestIdMap(); + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java deleted file mode 100644 index 763c8c9..0000000 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppProuctionSafeServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.missiles.modular.app.service.impl; - -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.app.dao.AppProductSafeMapper; -import com.casic.missiles.modular.app.model.AppProductSafe; -import com.casic.missiles.modular.app.service.IAppProuctionSafeService; -import org.springframework.stereotype.Service; - -@Service -public class AppProuctionSafeServiceImpl extends ServiceImpl implements IAppProuctionSafeService { - - - @Override - public Object listPage() { - return null; - } - - @Override - public Object getTodaySignStatus() { - return null; - } - - @Override - public Object update() { - return null; - } - - @Override - public Object add() { - return null; - } - - @Override - public Object detail() { - return null; - } -} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java index 51b1a6d..4aa4faf 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppUserServiceImpl.java @@ -1,49 +1,383 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.config.properties.CasicProperties; +import com.casic.missiles.core.base.language.I18nFactory; +import com.casic.missiles.core.base.response.ErrorResponseData; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.common.exception.BizExceptionEnum; +import com.casic.missiles.core.exception.GunsException; +import com.casic.missiles.core.exception.GunsExceptionEnum; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.core.util.RSAUtils; +import com.casic.missiles.modular.app.dao.AppUserMapper; +import com.casic.missiles.modular.app.dto.user.AppUserImportValid; +import com.casic.missiles.modular.app.dto.user.AppUserListDTO; +import com.casic.missiles.modular.app.dto.user.AppUserLoginDTO; +import com.casic.missiles.modular.app.dto.user.AppUserSaveDTO; +import com.casic.missiles.modular.app.enums.AppUserStatusEnum; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppUser; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppUserService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + +@Slf4j @Service -public class AppUserServiceImpl implements IAppUserService { +@AllArgsConstructor +public class AppUserServiceImpl extends ServiceImpl implements IAppUserService, AppUserStatusEnum { + private final Validator validator; + private final DictMapper dictMapper; + private final IAppWellPreService appWellPreService; + private final CasicProperties casicProperties; @Override - public Object login() { - return null; + public Boolean checkPassWord(AppUserLoginDTO appUserLoginDTO, AppUser appUser) { + try { + appUserLoginDTO.setPassword(RSAUtils.decrypt(appUserLoginDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + throw new BusinessException(BusinessExceptionEnum.DECRYPTION_ERROR); + } + String userPassword = ShiroKit.md5(appUserLoginDTO.getPassword(), appUser.getSalt()); + if (userPassword.equals(appUser.getPassword())) { + return true; + } else { + return false; + } } @Override - public Object listPage() { - return null; + public Object bindWechatUser(AppUserLoginDTO appUserLoginDTO,AppUser appUser){ + appUser.setStatus(ALREADY_BOUND); + appUser.setAttr(appUserLoginDTO.getWeChatName()); + appUser.setOpenId(appUserLoginDTO.getOpenId()); + int bindFlag = this.baseMapper.updateById(appUser); + if (bindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.BIND_USER_ERROR); } @Override - public Object add() { - return null; + public Page listPage(Page page, AppUserListDTO appUserListDTO) { + EntityWrapper entityWrapper = initQueryParam(appUserListDTO); + List appUserList = this.baseMapper.selectPage(page, entityWrapper); + for (AppUser appUser : appUserList) { + appUser.setProjectNames(tranIdsToStrNames(appUser.getProjectIds())); + } + page.setRecords(appUserList); + return page; } @Override - public Object update() { - return null; + public Object add(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), null); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + userDTO.setStatus(NOT_BOUND); + this.insert(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object project() { - return null; + public Object update(AppUserSaveDTO userDTO) { + int accountNumber = this.getAppUserByAccount(userDTO.getPhone(), userDTO.getId()); + Assert.isFalse(accountNumber > 0, () -> { + throw new GunsException(BizExceptionEnum.USER_ALREADY_REG); + }); + try { + userDTO.setPassword(RSAUtils.decrypt(userDTO.getPassword(), ShiroKit.getSession().getAttribute(RSAUtils.RSAPrivateKey).toString())); + } catch (Exception var5) { + log.error("密码解密异常", var5); + return new ErrorResponseData(GunsExceptionEnum.SERVER_ERROR.getCode(), "添加app用户失败(密码解密失败)!"); + } + userDTO.setSalt(ShiroKit.getRandomSalt(5)); + userDTO.setPassword(ShiroKit.md5(userDTO.getPassword(), userDTO.getSalt())); + this.updateById(this.createUser(userDTO)); + return ResponseData.success(); } @Override - public Object unbind() { - return null; + public Object project(String openId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq(openId, openId); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + if (appUserOptional.isPresent()) { + AppUser appUser = appUserOptional.get(); + List projects = tranIdsToListNames(appUser.getProjectIds()); + return ResponseData.success(projects); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object batchImport() { - return null; + public Object unbind(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + appUser.setLabelLastTime(null); + appUser.setOpenId(null); + appUser.setAttr(null); + appUser.setAttrAlias(null); + //状态置为未绑定 + appUser.setStatus(NOT_BOUND); + int unbindFlag = this.baseMapper.updateById(appUser); + if (unbindFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + /** + * 1、准备用户导入信息的验证集合 + * 2、进行检测-项目、手机号、role + * 3、批量导入 + */ @Override - public Object delete() { - return null; + public List batchImport(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + AppUserImportValid userValid = prepareUserValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(user -> { + index[0]++; + validator.validate(user, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //手机号的格式、唯一性校验 + Boolean wellCodeIsExist = userValid.getUserPhoneMap().containsKey(user.getPhone()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,手机号已经注册!"); + return; + } + + //验证项目名称是否存在 + String[] projectNames = user.getProjectNames().split(","); + String projectIdIs = ""; + for (String projectName : projectNames) { + Boolean projectIdIsExist = userValid.getProjectNameMap().containsKey(user.getProjectNames()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称" + projectName + "错误,查询不到!"); + return; + } else { + projectIdIs += userValid.getProjectNameMap().get(projectName) + ","; + } + } + if (!StringUtils.isEmpty(projectIdIs)) { + projectIdIs = projectIdIs.substring(0, projectIdIs.length() - 1); + } + user.setProjectIds(projectIdIs); + + //验证角色类型 + if (StringUtils.isNotEmpty(user.getRole())) { + Boolean roleIsExist = userValid.getRoleMap().containsKey(user.getRole()); + if (roleIsExist) { + list.add("第" + index[0] + "行,角色类型错误,查询不到!"); + return; + } else { + user.setRole(userValid.getRoleMap().get(user.getRole())); + } + } + user.setSalt(ShiroKit.getRandomSalt(5)); + user.setPassword(ShiroKit.md5(user.getPassword(), user.getSalt())); + user.setStatus(NOT_BOUND); + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存app用户信息 + Boolean batchFlag = this.insertBatch(results); + if (batchFlag) { + return list; + } else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入用户数据不能为空"); + } + return list; } + + /** + * 状态即为状态置为3 + */ + @Override + public Object delete(Long id) { + AppUser appUser = new AppUser(); + appUser.setId(id); + //设置为删除状态 + appUser.setStatus(ALREADY_DELETE); + int deleteFlag = this.baseMapper.updateById(appUser); + if (deleteFlag > 0) { + return ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + + private AppUser createUser(AppUserSaveDTO userDTO) { + if (userDTO == null) { + return null; + } else { + AppUser user = new AppUser(); + BeanUtils.copyProperties(userDTO, user); + return user; + } + } + + /** + * 通过项目ids获取项目名称字符串 + */ + private String tranIdsToStrNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + String projectNames = ""; + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNames += wellPreMaps.get(projectId) + ","; + } + } + if (!StringUtils.isEmpty(projectNames)) { + projectNames = projectNames.substring(0, projectNames.length() - 1); + } + return projectNames; + } + + /** + * 通过项目ids获取项目名称列表 + */ + private List tranIdsToListNames(String projectIds) { + Map wellPreMaps = appWellPreService.getProjestIdMap(); + List projectNamelist = new ArrayList<>(); + String[] projectIdStrs = projectIds.split(","); + for (String projectId : projectIdStrs) { + if (!StringUtils.isEmpty(projectId)) { + projectNamelist.add(wellPreMaps.get(projectId)); + } + } + return projectNamelist; + } + + private EntityWrapper initQueryParam(AppUserListDTO appUserListDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(appUserListDTO.getPhone()), "phone", appUserListDTO.getPhone()); + query.eq(StringUtils.isNotEmpty(appUserListDTO.getProjectId()), "projectId", appUserListDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(appUserListDTO.getName()), "name", appUserListDTO.getName()); + if (!ALL_USER.equals(appUserListDTO.getUserStatus())) { + query.eq(StringUtils.isNotEmpty(appUserListDTO.getUserStatus()), "status", appUserListDTO.getUserStatus()); + } + query.orderBy("createTime", false); + return query; + } + + private AppUserImportValid prepareUserValid() { + return AppUserImportValid.builder() + .projectNameMap(appWellPreService.getProjestNameMap()) + .roleMap(getDictRole()) + .userPhoneMap(getUserPhoneMap()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictRole() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("appRole"); + Map dictRoleMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return dictRoleMap; + } + + + //获取项目名称 + private Map getUserPhoneMap() { + List userPhoneList = this.baseMapper.getUserPhoneList(); + //由名称查询id + Map userPhoneMap = userPhoneList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity())); + return userPhoneMap; + } + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + @Override + public AppUser getAppUserByAccount(String account) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + appUserWrapper.ne("status", "3"); + List appUserList = this.baseMapper.selectList(appUserWrapper); + Optional appUserOptional = appUserList.stream().findFirst(); + return appUserOptional.isPresent() ? appUserOptional.get() : null; + } + + + /** + * 通过账号(手机号)获取用户信息,如果存在当前用户id进行信息排除 + */ + private int getAppUserByAccount(String account, Long currentUserId) { + EntityWrapper appUserWrapper = new EntityWrapper(); + appUserWrapper.eq("phone", account); + if (!ObjectUtils.isEmpty(currentUserId)) { + appUserWrapper.ne("id", currentUserId); + } + List appUserList = this.baseMapper.selectList(appUserWrapper); + return appUserList != null ? appUserList.size() : 0; + } + + private String decryptPassword(String password) { + try { + String privateKey = this.casicProperties.getRsaPrivateKey(); + if (StrUtil.hasEmpty(new CharSequence[]{this.casicProperties.getRsaPrivateKey(), this.casicProperties.getRsaPublicKey()})) { + privateKey = ShiroKit.getSession().getAttribute("RSAPrivateKey").toString(); + } + return RSAUtils.decrypt(password, privateKey); + } catch (Exception var4) { + throw new RuntimeException(I18nFactory.getMessage("admin.nouser.error")); + } + } + } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java index 8bc52d5..18a1c5e 100644 --- a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/AppWellPreServiceImpl.java @@ -1,35 +1,209 @@ package com.casic.missiles.modular.app.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.modular.app.dao.WellPreAddMapper; +import com.casic.missiles.modular.app.dto.WellPreDTO; +import com.casic.missiles.modular.app.dto.WellPreImportValid; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.WellPreAdd; import com.casic.missiles.modular.app.service.IAppWellPreService; +import com.casic.missiles.modular.system.dao.DictMapper; +import com.casic.missiles.modular.system.model.Dict; +import lombok.AllArgsConstructor; +import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.FieldError; +import org.springframework.validation.Validator; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; @Service -public class AppWellPreServiceImpl implements IAppWellPreService { +@AllArgsConstructor +public class AppWellPreServiceImpl extends ServiceImpl implements IAppWellPreService { + private final Validator validator; + private final DictMapper dictMapper; @Override - public Object listPage() { - return null; + public Page listPage(Page preAddPage, WellPreDTO wellPreDTO) { + EntityWrapper wellPreWrapper = initQueryParam(wellPreDTO); + List wellPreAddList = this.baseMapper.selectPage(preAddPage, wellPreWrapper); + Map projestMaps = getProjestIdMap(); + for (WellPreAdd wellPreAdd : wellPreAddList) { + if (!StringUtils.isEmpty(wellPreAdd.getProjectId())) { + wellPreAdd.setProjectName(projestMaps.get(wellPreAdd.getProjectId())); + } + } + preAddPage.setRecords(wellPreAddList); + return preAddPage; } @Override - public Object add() { - return null; + public Object add(WellPreAdd wellPreAdd) { + int addFlag = this.baseMapper.insert(wellPreAdd); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 1、初始化待校验的数据类 + * 2、对数据进行校验 + * 3、对数据进行批量插入 + */ + @Override + public List addWellPreBatch(List results) { + BeanPropertyBindingResult beanPropertyBindingResult = new BeanPropertyBindingResult(WellPreAdd.class, "预录入导入校验"); + //准备校验参数 + WellPreImportValid wellPreValid = prepareWellPreValid(); + List list = new ArrayList<>(); + if (!CollectionUtil.isEmpty(results)) { + final Integer[] index = {0}; + results.forEach(wellPreAdd -> { + index[0]++; + validator.validate(wellPreAdd, beanPropertyBindingResult); + if (beanPropertyBindingResult.hasErrors()) { + List errors = beanPropertyBindingResult.getFieldErrors(); + errors.forEach(error -> { + list.add("第" + index[0] + "行 ,".concat(error.getDefaultMessage())); + return; + } + ); + return; + } + //点位编号的唯一性 + Boolean wellCodeIsExist = wellPreValid.getWellCodeMap().containsKey(wellPreAdd.getWellCode()); + if (wellCodeIsExist) { + list.add("第" + index[0] + "行,设备编号已经存在!"); + return; + } + //验证项目名称是否存在 + Boolean projectIdIsExist = wellPreValid.getProjectMap().containsKey(wellPreAdd.getProjectName()); + if (projectIdIsExist) { + list.add("第" + index[0] + "行,项目名称错误,查询不到!"); + return; + } else { + wellPreAdd.setProjectId(wellPreValid.getProjectMap().get(wellPreAdd.getProjectName())); + } + //验证点位类型 + Boolean wellTypeIsExist = wellPreValid.getDictSuiltWellMap().containsKey(wellPreAdd.getWellTypeName()); + if (wellTypeIsExist) { + list.add("第" + index[0] + "行,点位类型错误,查询不到!"); + return; + } else { + wellPreAdd.setWellType(wellPreValid.getDictSuiltWellMap().get(wellPreAdd.getWellTypeName())); + } + }); + + if (CollectionUtil.isNotEmpty(list)) { + return list; + } + //保存设备信息 + Boolean batchFlag=this.insertBatch(results); + if(batchFlag){ + return list; + }else { + throw new BusinessException(BusinessExceptionEnum.HANDLE_IMPORT_FAILED); + } + } else { + list.add("导入数据不能为空"); + } + return list; } @Override - public Object batchImport() { - return null; + public Object update(WellPreAdd wellPreAdd) { + int updateFlag = this.baseMapper.updateById(wellPreAdd); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } @Override - public Object update() { - return null; + public Object delete(Long id) { + int deleteFlag = this.baseMapper.deleteById(id); + if (deleteFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + private EntityWrapper initQueryParam(WellPreDTO wellPreDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellType()), "wellType", wellPreDTO.getWellType()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getWellCode()), "well_code", wellPreDTO.getWellCode()); + query.eq(StringUtils.isNotEmpty(wellPreDTO.getProjectId()), "projectId", wellPreDTO.getProjectId()); + query.like(StringUtils.isNotEmpty(wellPreDTO.getPosition()), "position", wellPreDTO.getPosition()); + //时间处理 + query.ge(StringUtils.isNotEmpty(wellPreDTO.getStartTime()), "createTime", wellPreDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(wellPreDTO.getEndTime()), "createTime", wellPreDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + + /** + * 预录入初始化的内容都放在该方法进行批量初始化 + */ + private WellPreImportValid prepareWellPreValid() { + return WellPreImportValid.builder() + .projectMap(getProjestNameMap()) + .wellCodeMap(getAllProjestNameMap()) + .dictSuiltWellMap(getDictSuiltWell()) + .build(); + } + + /** + * 获取字典类型点位类型 + */ + private Map getDictSuiltWell() { + //获取点位编号 + List suilWellDict = this.dictMapper.selectByCode("sluicewellType"); + Map wellCodeMap = suilWellDict.stream().collect( + Collectors.toMap(Dict::getName, Dict::getCode) + ); + return wellCodeMap; + } + + //获取点位编号 + private Map getAllProjestNameMap() { + List allWellPreList = this.baseMapper.getAllWellPreList(); + Map wellCodeMap = allWellPreList.stream().collect( + Collectors.toMap(Function.identity(), Function.identity()) + ); + return wellCodeMap; + } + + //获取项目名称 @Override - public Object delete() { - return null; + public Map getProjestNameMap() { + List> projects = this.baseMapper.getProjectList(); + //由名称查询id + Map projectMap = projects.stream().collect( + Collectors.toMap(e -> e.get("projectName"), + e -> e.get("projectId")) + ); + return projectMap; + } + + + @Override + public Map getProjestIdMap() { + List> projects = this.baseMapper.getProjectList(); + Map projectMaps = projects.stream().collect( + Collectors.toMap(e -> e.get("projectId"), + e -> e.get("projectName")) + ); + return projectMaps; } diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java new file mode 100644 index 0000000..922cbc0 --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/service/impl/IAppProucteSafeServiceImpl.java @@ -0,0 +1,104 @@ +package com.casic.missiles.modular.app.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.casic.missiles.core.base.response.ResponseData; +import com.casic.missiles.core.util.ToolUtil; +import com.casic.missiles.modular.app.dao.AppProducteSafeMapper; +import com.casic.missiles.modular.app.dto.ProucteSafeDTO; +import com.casic.missiles.modular.app.enums.BusinessException; +import com.casic.missiles.modular.app.enums.BusinessExceptionEnum; +import com.casic.missiles.modular.app.model.AppProducteSafe; +import com.casic.missiles.modular.app.service.IAppProucteSafeService; +import com.casic.missiles.modular.app.service.IAppWellPreService; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class IAppProucteSafeServiceImpl extends ServiceImpl implements IAppProucteSafeService { + + @Value("${casic.photoPath}") + private String photoPath; + @Autowired + private IAppWellPreService appWellPreService; + + @Override + public Page listPage(Page page, ProucteSafeDTO proucteSafeDTO) { + EntityWrapper entityWrapper = initQueryParam(proucteSafeDTO); + List appProductSafes = this.baseMapper.selectPage(page, entityWrapper); + Map appWellPreMap = appWellPreService.getProjestIdMap(); + for (AppProducteSafe appProductSafe : appProductSafes) { + appProductSafe.setProjectName(appWellPreMap.get(appProductSafe.getProjectId())); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + } + page.setRecords(appProductSafes); + return page; + } + + @Override + public Object getTodaySignStatus(String openId) { + String isHasSign = this.baseMapper.getTodaySignStatus(openId); + Map signStatusMap = new HashMap<>(); + if (StringUtils.isEmpty(isHasSign)) { + signStatusMap.put("signStatus", "0"); + } else { + signStatusMap.put("signStatus", "1"); + } + return ResponseData.success(signStatusMap); + } + + @Override + public Object update(AppProducteSafe appProductSafe) { + int updateFlag = this.baseMapper.updateById(appProductSafe); + if (updateFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Object add(AppProducteSafe appProductSafe) { + int addFlag = this.baseMapper.insert(appProductSafe); + if (addFlag > 0) { + ResponseData.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + /** + * 详情返回的时候多返回了图片 + */ + @Override + public Object detail(Long id) { + AppProducteSafe appProductSafe = this.baseMapper.selectById(id); + if (StringUtils.isNotEmpty(photoPath)) { + appProductSafe.setSignImage( + ToolUtil.isNotEmpty(appProductSafe.getSignImage()) ? photoPath + appProductSafe.getSignImage() : appProductSafe.getSignImage() + ); + } + return appProductSafe; + } + + private EntityWrapper initQueryParam(ProucteSafeDTO proucteSafeDTO) { + EntityWrapper query = new EntityWrapper<>(); + query.like(StringUtils.isNotEmpty(proucteSafeDTO.getSignName()), "signName", proucteSafeDTO.getSignName()); + query.eq(StringUtils.isNotEmpty(proucteSafeDTO.getProjectId()), "well_code", proucteSafeDTO.getProjectId()); + //时间处理 + query.ge(StringUtils.isNotEmpty(proucteSafeDTO.getStartTime()), "signTime", proucteSafeDTO.getStartTime()); + query.le(StringUtils.isNotEmpty(proucteSafeDTO.getEndTime()), "signTime", proucteSafeDTO.getEndTime()); + query.orderBy("createTime", false); + return query; + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java new file mode 100644 index 0000000..c91285d --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/ImportExcelUtils.java @@ -0,0 +1,45 @@ +package com.casic.missiles.modular.app.util; + +import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.read.builder.ExcelReaderBuilder; +import com.alibaba.excel.support.ExcelTypeEnum; +import com.alibaba.excel.util.FileUtils; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.modular.app.dto.EasyListener; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.function.Function; + +@Slf4j +public class ImportExcelUtils { + + public static List importExcel(Class cls, MultipartFile file, EasyListener listener, Function defaultCheckFunc) throws IOException { + ExcelTypeEnum excelTypeEnum = null; + File newfile = FileUtils.createCacheTmpFile(); + file.transferTo(newfile); + ExcelReaderBuilder excelReaderBuilder = (ExcelReaderBuilder) EasyExcel.read().file(newfile).head(cls); + EasyListener defaultListener = null; + new ArrayList(); + if (listener == null) { + defaultListener = new EasyListener() { + public static final int BATCH_COUNT = 500; + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + log.info("数据读取成功!"); + } + }; + excelReaderBuilder.registerReadListener(defaultListener); + } else { + excelReaderBuilder.registerReadListener(listener); + } + excelReaderBuilder.sheet().doRead(); + return defaultListener.getDataList(); + } + +} diff --git a/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java b/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java new file mode 100644 index 0000000..0f73e9d --- /dev/null +++ b/casic-app/src/main/java/com/casic/missiles/modular/app/util/SpringContextUtil.java @@ -0,0 +1,106 @@ +//package com.casic.missiles.modular.app.util; +// +//import org.apache.commons.lang3.StringUtils; +//import org.springframework.beans.BeansException; +//import org.springframework.beans.factory.config.BeanFactoryPostProcessor; +//import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; +//import org.springframework.beans.factory.support.AbstractBeanDefinition; +//import org.springframework.beans.factory.support.BeanDefinitionBuilder; +//import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; +//import org.springframework.beans.factory.support.BeanDefinitionRegistry; +//import org.springframework.context.ApplicationContext; +//import org.springframework.context.ApplicationContextAware; +//import org.springframework.context.annotation.Bean; +//import org.springframework.stereotype.Component; +//import org.springframework.util.CollectionUtils; +// +//import java.util.List; +//import java.util.Map; +//import java.util.concurrent.ForkJoinPool; +//import java.util.function.Function; +// +///** +// * @Description: Spring应用上下文工具 +// * @Author: wangpeng +// * @Date: 2022/8/11 18:04 +// */ +//@Component +//public class SpringContextUtil implements BeanFactoryPostProcessor, ApplicationContextAware { +// /** +// * Spring应用上下文环境 +// */ +// private static ApplicationContext applicationContext; +// +// private static ConfigurableListableBeanFactory beanFactory; +// +// /** +// * 实现ApplicationContextAware接口的回调方法,设置上下文环境 +// */ +// @Override +// public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { +// SpringContextUtil.applicationContext = applicationContext; +// } +// +// @Override +// public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { +// SpringContextUtil.beanFactory = beanFactory; +// } +// +// public static ApplicationContext getApplicationContext() { +// return applicationContext; +// } +// +//// public static Object getBean(String beanId) throws BeansException { +//// return applicationContext.getBean(beanId); +//// } +// +// public static T getBean(Class requiredType) { +// return (T) applicationContext.getBean(requiredType); +// } +// +// @SuppressWarnings("unchecked") +// public static T getBean(String name) throws BeansException { +// return (T) beanFactory.getBean(name); +// } +// +// public static boolean containsBean(String name) { +// return beanFactory.containsBean(name); +// } +// +// public static T registerBean(String beanName, Class clazz, Function function) { +// // 生成bean定义 +// BeanDefinitionBuilder beanDefinitionBuilder = BeanDefinitionBuilder.genericBeanDefinition(clazz); +// // 执行bean处理函数 +// AbstractBeanDefinition beanDefinition = function.apply(beanDefinitionBuilder); +// BeanDefinitionRegistry beanFactory = (BeanDefinitionRegistry) SpringContextUtil.beanFactory; +// // 判断是否通过beanName注册 +// if (StringUtils.isNotBlank(beanName) && !containsBean(beanName)) { +// beanFactory.registerBeanDefinition(beanName, beanDefinition); +// return getBean(beanName); +// } else { +// // 非命名bean注册 +// String name = BeanDefinitionReaderUtils.registerWithGeneratedName(beanDefinition, beanFactory); +// return getBean(name); +// } +// } +// +// public static T registerBean(String beanName, Class clazz, List args, Map property) { +// return registerBean(beanName, clazz, beanDefinitionBuilder -> { +// // 放入构造参数 +// if (!CollectionUtils.isEmpty(args)) { +// args.forEach(beanDefinitionBuilder::addConstructorArgValue); +// } +// // 放入属性 +// if (!CollectionUtils.isEmpty(property)) { +// property.forEach(beanDefinitionBuilder::addPropertyValue); +// } +// return beanDefinitionBuilder.getBeanDefinition(); +// }); +// } +// +// @Bean +// public ForkJoinPool forkJoinPool() { +// return new ForkJoinPool(100); +// } +// +//} diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java index c6fab92..69c338d 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/controller/ProjectController.java @@ -70,6 +70,7 @@ */ @RequestMapping(value = "/add") @ResponseBody + @BussinessLog(value = "增加项目信息", key = PROJECT_ADD_LOG_KEY, dict = ProjectDict.class) public Object add(Project project) { EntityWrapper entityWrapper = new EntityWrapper<>(); diff --git a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java index d0bcaf4..948188a 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/system/service/impl/ProjectServiceImpl.java @@ -10,7 +10,6 @@ import com.casic.missiles.modular.system.service.IProductDeviceTypeService; import com.casic.missiles.modular.system.service.IProjectService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.casic.missiles.modular.util.DictCodeUtils; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; @@ -18,7 +17,6 @@ import java.util.Date; import java.util.List; import java.util.Map; -import java.util.stream.Collector; import java.util.stream.Collectors; /** @@ -54,7 +52,6 @@ project.setProjectStatus(HAS_EXCUTE); } project.setDevTpeNames(deviceTypeTransName(project.getDevTpeIds())); - DictCodeUtils.convertDictCodeToName(project); } return page; } diff --git a/casic-device/src/main/java/com/casic/missiles/modular/util/DictCodeUtils.java b/casic-device/src/main/java/com/casic/missiles/modular/util/DictCodeUtils.java index c2e1c17..bc4ea68 100644 --- a/casic-device/src/main/java/com/casic/missiles/modular/util/DictCodeUtils.java +++ b/casic-device/src/main/java/com/casic/missiles/modular/util/DictCodeUtils.java @@ -1,135 +1,135 @@ -package com.casic.missiles.modular.util; - -import com.casic.missiles.modular.system.enums.BusinessException; -import com.casic.missiles.modular.system.service.AbstractDictService; -import com.casic.missiles.modular.annotation.DictCodeField; - -import org.apache.commons.lang3.StringUtils; - -import java.lang.reflect.Field; -import java.util.Objects; - -/** - * 字典utils - */ -public class DictCodeUtils { - /** - * 字典code转换成名称 - */ - public static void convertDictCodeToName(Object object) throws Exception { - Field[] fields = object.getClass().getDeclaredFields(); - for (Field field : fields) { - if (!field.isAccessible()) { - field.setAccessible(true); - } - if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { - DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; - if (StringUtils.isEmpty(dictCodeField.cacheName())) { - throw new BusinessException(500, "缓存名不能为空"); - } - AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { - continue; - } - String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); - if (StringUtils.isEmpty(name)) { - throw new BusinessException(500, dictCodeField.message()); - } - String destFieldName = field.getName() + "Name"; - Field destField = object.getClass().getDeclaredField(destFieldName); - if (destField == null) { - throw new BusinessException(500, "字典名称字段不存在"); - } - if (!destField.isAccessible()) { - destField.setAccessible(true); - } - destField.set(object, name); - } - } - } - - - /** - * 多个字典code(逗号隔开),转换成名称 - */ - public static void convertDictMultiCodeToName(Object object) throws Exception { - Field[] fields = object.getClass().getDeclaredFields(); - for (Field field : fields) { - if (!field.isAccessible()) { - field.setAccessible(true); - } - if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { - - DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; - if (StringUtils.isEmpty(dictCodeField.cacheName())) { - throw new BusinessException(500, "缓存名不能为空"); - } - AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { - continue; - } - String name = ""; - //进行字典值得获取 - if (field.get(object).toString().contains(",")) { - String[] filedObjects = field.get(object).toString().split(","); - for (String filedObject : filedObjects) { - name += dictService.getDictNameByCode(dictCodeField.cacheName(), filedObject) + ","; - if (StringUtils.isEmpty(name)) { - throw new BusinessException(500, dictCodeField.message()); - } - } - if (StringUtils.isEmpty(name)) { - throw new BusinessException(500, dictCodeField.message()); - } - } else { - name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); - if (StringUtils.isEmpty(name)) { - throw new BusinessException(500, dictCodeField.message()); - } - } - String destFieldName = field.getName() + "Name"; - Field destField = object.getClass().getDeclaredField(destFieldName); - if (destField == null) { - throw new BusinessException(500, "字典名称字段不存在"); - } - if (!destField.isAccessible()) { - destField.setAccessible(true); - } - destField.set(object, name); - } - } - } - - /** - * 校验字典code是否合法 - * - * @param object - * @return - */ - public static boolean validDictCode(Object object) throws Exception { - Field[] fields = object.getClass().getDeclaredFields(); - for (Field field : fields) { - if (!field.isAccessible()) { - field.setAccessible(true); - } - if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null && !field.get(object).equals("")) { - DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; - // 判断字典code是否需要校验 - if (!dictCodeField.needValid()) { - continue; - } - AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); - if (StringUtils.isEmpty(dictCodeField.cacheName())) { - throw new BusinessException(500, "缓存名不能为空"); - } - String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); - if (StringUtils.isEmpty(name)) { - throw new BusinessException(500, dictCodeField.message()); - } - dictCodeField.message(); - } - } - return true; - } - -} \ No newline at end of file +//package com.casic.missiles.modular.util; +// +//import com.casic.missiles.modular.system.enums.BusinessException; +//import com.casic.missiles.modular.system.service.AbstractDictService; +//import com.casic.missiles.modular.annotation.DictCodeField; +// +//import org.apache.commons.lang3.StringUtils; +// +//import java.lang.reflect.Field; +//import java.util.Objects; +// +///** +// * 字典utils +// */ +//public class DictCodeUtils { +// /** +// * 字典code转换成名称 +// */ +// public static void convertDictCodeToName(Object object) throws Exception { +// Field[] fields = object.getClass().getDeclaredFields(); +// for (Field field : fields) { +// if (!field.isAccessible()) { +// field.setAccessible(true); +// } +// if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { +// DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; +// if (StringUtils.isEmpty(dictCodeField.cacheName())) { +// throw new BusinessException(500, "缓存名不能为空"); +// } +// AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); +// if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { +// continue; +// } +// String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); +// if (StringUtils.isEmpty(name)) { +// throw new BusinessException(500, dictCodeField.message()); +// } +// String destFieldName = field.getName() + "Name"; +// Field destField = object.getClass().getDeclaredField(destFieldName); +// if (destField == null) { +// throw new BusinessException(500, "字典名称字段不存在"); +// } +// if (!destField.isAccessible()) { +// destField.setAccessible(true); +// } +// destField.set(object, name); +// } +// } +// } +// +// +// /** +// * 多个字典code(逗号隔开),转换成名称 +// */ +// public static void convertDictMultiCodeToName(Object object) throws Exception { +// Field[] fields = object.getClass().getDeclaredFields(); +// for (Field field : fields) { +// if (!field.isAccessible()) { +// field.setAccessible(true); +// } +// if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null) { +// +// DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; +// if (StringUtils.isEmpty(dictCodeField.cacheName())) { +// throw new BusinessException(500, "缓存名不能为空"); +// } +// AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); +// if (Objects.isNull(field.get(object)) || StringUtils.isEmpty(field.get(object).toString())) { +// continue; +// } +// String name = ""; +// //进行字典值得获取 +// if (field.get(object).toString().contains(",")) { +// String[] filedObjects = field.get(object).toString().split(","); +// for (String filedObject : filedObjects) { +// name += dictService.getDictNameByCode(dictCodeField.cacheName(), filedObject) + ","; +// if (StringUtils.isEmpty(name)) { +// throw new BusinessException(500, dictCodeField.message()); +// } +// } +// if (StringUtils.isEmpty(name)) { +// throw new BusinessException(500, dictCodeField.message()); +// } +// } else { +// name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); +// if (StringUtils.isEmpty(name)) { +// throw new BusinessException(500, dictCodeField.message()); +// } +// } +// String destFieldName = field.getName() + "Name"; +// Field destField = object.getClass().getDeclaredField(destFieldName); +// if (destField == null) { +// throw new BusinessException(500, "字典名称字段不存在"); +// } +// if (!destField.isAccessible()) { +// destField.setAccessible(true); +// } +// destField.set(object, name); +// } +// } +// } +// +// /** +// * 校验字典code是否合法 +// * +// * @param object +// * @return +// */ +// public static boolean validDictCode(Object object) throws Exception { +// Field[] fields = object.getClass().getDeclaredFields(); +// for (Field field : fields) { +// if (!field.isAccessible()) { +// field.setAccessible(true); +// } +// if (field.isAnnotationPresent(DictCodeField.class) && field.get(object) != null && !field.get(object).equals("")) { +// DictCodeField dictCodeField = field.getAnnotationsByType(DictCodeField.class)[0]; +// // 判断字典code是否需要校验 +// if (!dictCodeField.needValid()) { +// continue; +// } +// AbstractDictService dictService = SpringContextUtil.getBean(AbstractDictService.class); +// if (StringUtils.isEmpty(dictCodeField.cacheName())) { +// throw new BusinessException(500, "缓存名不能为空"); +// } +// String name = dictService.getDictNameByCode(dictCodeField.cacheName(), field.get(object).toString()); +// if (StringUtils.isEmpty(name)) { +// throw new BusinessException(500, dictCodeField.message()); +// } +// dictCodeField.message(); +// } +// } +// return true; +// } +// +//} \ No newline at end of file diff --git a/casic-web/src/main/resources/application.yml b/casic-web/src/main/resources/application.yml index 288c7e1..dda3c94 100644 --- a/casic-web/src/main/resources/application.yml +++ b/casic-web/src/main/resources/application.yml @@ -12,6 +12,18 @@ proxy-target-class: true #false为启用jdk默认动态代理,true为cglib动态代理 ################### mybatis-plus配置 ################### ################### guns配置 ################### +mybatis-plus: + global-config: + enable-sql-runner: true + db-config: + insert-strategy: not_empty + update-strategy: not_empty + where-strategy: not_empty + logic-delete-field: is_del #全局逻辑删除实体字段名 + logic-delete-value: 1 #逻辑已删除值 + logic-not-delete-value: 0 #逻辑未删除值 + mybatis-plus: + sql-injector: com.baomidou.mybatisplus.mapper.LogicSqlInjector casic: kaptcha-open: true #是否开启登录时验证码 (true/false) file-upload-path: d:/tmp #文件上传目录(不配置的话为java.io.tmpdir目录)